Skip to content

Program Schema

A Program represents a multi-week training program containing workout templates organized by week.

Interactive Explorer

Loading schema...

Top-Level Properties

FieldTypeRequiredDescription
namestringYesProgram name (1-200 chars)
weeksProgramWeek[]YesThe weeks in the program (min 1)
descriptionstringNoProgram description
authorstringNoProgram author
tagsstring[]NoTags for categorization

ProgramWeek

A single week within a program.

FieldTypeRequiredDescription
workoutsWorkoutTemplate[]YesWorkouts for this week (min 1)
namestringNoWeek name (e.g., "Week 1", "Deload")
notesstringNoNotes for this week

Each workout in workouts follows the full WorkoutTemplate schema.

Schema References

The Program schema uses JSON Schema $ref to include the WorkoutTemplate schema:

json
{
  "workouts": {
    "type": "array",
    "items": {
      "$ref": "workout-template.schema.json"
    }
  }
}

This means a Program embeds complete WorkoutTemplate objects, not just references.

Example: Simple Program

json
{
  "name": "Simple Strength",
  "description": "A basic 3-day strength program",
  "author": "Coach Smith",
  "tags": ["strength", "beginner", "3-day"],
  "weeks": [
    {
      "name": "Week 1",
      "workouts": [
        {
          "name": "Day A - Squat",
          "day": 1,
          "exercises": [
            {
              "exercise": { "name": "Squat" },
              "sets": [
                { "targetReps": 5, "targetWeight": 100, "unit": "kg" }
              ]
            }
          ]
        },
        {
          "name": "Day B - Bench",
          "day": 3,
          "exercises": [
            {
              "exercise": { "name": "Bench Press" },
              "sets": [
                { "targetReps": 5, "targetWeight": 80, "unit": "kg" }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Example: 5/3/1 BBB (4 Weeks)

A complete 4-week program with percentage-based loading:

json
{
  "name": "5/3/1 Boring But Big",
  "description": "Jim Wendler's 5/3/1 with BBB assistance",
  "author": "Jim Wendler",
  "tags": ["strength", "intermediate", "4-day", "531"],
  "weeks": [
    {
      "name": "Week 1 - 5s",
      "workouts": [
        {
          "name": "Squat Day",
          "exercises": [
            {
              "exercise": { "name": "Squat" },
              "sets": [
                { "percentage": 65, "percentageOf": "TM", "targetReps": 5 },
                { "percentage": 75, "percentageOf": "TM", "targetReps": 5 },
                { "percentage": 85, "percentageOf": "TM", "targetReps": 5, "type": "amrap" }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "Week 2 - 3s",
      "workouts": [
        {
          "name": "Squat Day",
          "exercises": [
            {
              "exercise": { "name": "Squat" },
              "sets": [
                { "percentage": 70, "percentageOf": "TM", "targetReps": 3 },
                { "percentage": 80, "percentageOf": "TM", "targetReps": 3 },
                { "percentage": 90, "percentageOf": "TM", "targetReps": 3, "type": "amrap" }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "Week 3 - 5/3/1",
      "workouts": [
        {
          "name": "Squat Day",
          "exercises": [
            {
              "exercise": { "name": "Squat" },
              "sets": [
                { "percentage": 75, "percentageOf": "TM", "targetReps": 5 },
                { "percentage": 85, "percentageOf": "TM", "targetReps": 3 },
                { "percentage": 95, "percentageOf": "TM", "targetReps": 1, "type": "amrap" }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "Week 4 - Deload",
      "notes": "Reduce volume, focus on recovery",
      "workouts": [
        {
          "name": "Squat Day",
          "exercises": [
            {
              "exercise": { "name": "Squat" },
              "sets": [
                { "percentage": 40, "percentageOf": "TM", "targetReps": 5 },
                { "percentage": 50, "percentageOf": "TM", "targetReps": 5 },
                { "percentage": 60, "percentageOf": "TM", "targetReps": 5 }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Full Schema

Click to expand full JSON Schema
json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://openweight.org/schemas/program.schema.json",
  "title": "Program",
  "description": "A multi-week training program",
  "type": "object",
  "required": ["name", "weeks"],
  "additionalProperties": true
}

See the full schema on GitHub.

Released under the Apache 2.0 License.