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.