{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/justgains-com/json-schema/justgains-com-exercise-dto-schema.json",
  "title": "ExerciseDto",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/justgains-com-openapi.json#/components/schemas/ExerciseDto",
  "required": [
    "ExerciseCode"
  ],
  "type": "object",
  "properties": {
    "Id": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32"
    },
    "FileName": {
      "type": [
        "string",
        "null"
      ]
    },
    "ExerciseCode": {
      "type": [
        "string",
        "null"
      ]
    },
    "ExerciseName": {
      "type": [
        "string",
        "null"
      ]
    },
    "AlternateNames": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      }
    },
    "PublishStatus": {
      "type": [
        "string",
        "null"
      ]
    },
    "Models": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/ModelDto"
      }
    },
    "ExerciseType": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      }
    },
    "ExerciseMetrics": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      }
    },
    "ExerciseDifficulty": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32"
    },
    "ExerciseComplexity": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32"
    },
    "MetabolicEquivalent": {
      "type": "number",
      "format": "double"
    },
    "EquipmentRequired": {
      "$ref": "#/$defs/EquipmentRequiredDto"
    },
    "PrimaryMuscleGroups": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/MuscleGroupTargetDto"
      }
    },
    "SecondaryMuscleGroups": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/MuscleGroupTargetDto"
      }
    },
    "IsPlateLoaded": {
      "type": "boolean"
    },
    "ExerciseTechnicalComplexity": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32"
    },
    "IsCardio": {
      "type": "boolean"
    },
    "OlympicRating": {
      "type": "integer",
      "format": "int32"
    },
    "PowerlifterRating": {
      "type": "integer",
      "format": "int32"
    },
    "CalisthenicRating": {
      "type": "integer",
      "format": "int32"
    },
    "PopularityRating": {
      "type": "integer",
      "format": "int32"
    },
    "IsPlyometric": {
      "type": "boolean"
    },
    "IsIsometric": {
      "type": "boolean"
    },
    "IsCalisthenic": {
      "type": "boolean"
    },
    "IsWeighted": {
      "type": "boolean"
    },
    "IsUnilateral": {
      "type": "boolean"
    },
    "IsBodyweight": {
      "type": "boolean"
    },
    "AiNotes": {
      "type": [
        "string",
        "null"
      ]
    },
    "MuscleStimulus": {
      "type": [
        "number",
        "null"
      ],
      "format": "double"
    },
    "ExerciseInstructions": {
      "$ref": "#/$defs/ExerciseInstructionDto"
    }
  },
  "additionalProperties": false,
  "$defs": {
    "BlockDto": {
      "type": "object",
      "properties": {
        "Id": {
          "type": [
            "string",
            "null"
          ]
        },
        "Type": {
          "type": [
            "string",
            "null"
          ]
        },
        "Data": {
          "$ref": "#/$defs/DataDto"
        }
      },
      "additionalProperties": false
    },
    "DataDto": {
      "type": "object",
      "properties": {
        "Text": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "EquipmentRequiredDto": {
      "type": "object",
      "properties": {
        "Required": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "Optional": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "additionalProperties": false
    },
    "ExerciseInstructionDto": {
      "type": "object",
      "properties": {
        "Time": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int64"
        },
        "Blocks": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/BlockDto"
          }
        },
        "Version": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "ModelDto": {
      "required": [
        "VideoId",
        "VideoUrl"
      ],
      "type": "object",
      "properties": {
        "ModelName": {
          "type": [
            "string",
            "null"
          ]
        },
        "VideoId": {
          "type": [
            "string",
            "null"
          ]
        },
        "VideoUrl": {
          "type": [
            "string",
            "null"
          ]
        },
        "ModelId": {
          "type": [
            "integer",
            "null"
          ],
          "format": "int32"
        }
      },
      "additionalProperties": false
    },
    "MuscleGroupTargetDto": {
      "type": "object",
      "properties": {
        "MuscleName": {
          "type": [
            "string",
            "null"
          ]
        },
        "TargetPercentage": {
          "type": "number",
          "format": "double"
        },
        "MuscleGroupId": {
          "type": "integer",
          "format": "int32"
        }
      },
      "additionalProperties": false
    }
  }
}