Workouts
Types
Working with the API
Athletes
Movements
Workouts
Types
Details for specifying workouts
Workout details get validated against the following JSON schemas.
Amrap
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "AMRAP Workout Schema",
"type": "object",
"required": ["type", "duration", "movements"],
"additionalProperties": false,
"properties": {
"type": {
"enum": ["Amrap"]
},
"reps_only": {
"type": "boolean"
},
"duration": {
"type": "number",
"minimum": 1
},
"buy_in": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"movements": {
"type": "array",
"items": {
"$ref": "workouts/common.json#/movement"
},
"minItems": 1,
"maxItems": 100,
"additionalItems": false
}
}
}
CardioIntervals
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Cardio Intervals Workout Schema",
"type": "object",
"required": ["type", "rest", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["CardioIntervals"] },
"fixed": { "enum": ["duration", "distance"] },
"rest": { "$ref": "workouts/common.json#/rest" },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
}
}
}
Cardio
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Cardio Workout Schema",
"type": "object",
"required": ["type", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["Cardio"] },
"fixed": { "enum": ["duration", "distance"] },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 1,
"additionalItems": false
}
}
}
DeathBy
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "DeathBy Workout Schema",
"type": "object",
"required": [
"type",
"interval",
"initial_reps",
"rep_increment",
"movements"
],
"additionalProperties": false,
"properties": {
"type": { "enum": ["DeathBy"] },
"interval": { "type": "number", "minimum": 1 },
"initial_reps": { "type": "number", "minimum": 0 },
"rep_increment": { "type": "number", "minimum": 0 },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
}
}
}
Emom
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "EMOM Workout Schema",
"type": "object",
"required": ["type", "duration", "interval", "movements", "blocks"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["Emom"] },
"duration": { "type": "number", "minimum": 0 },
"interval": { "type": "number", "minimum": 1 },
"rounds": {
"type": "number",
"minimum": 1
},
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"blocks": {
"type": "array",
"items": {
"type": "array",
"items": { "type": "integer", "minimum": -1 },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"minItems": 1,
"maxItems": 100,
"additionalItems": false
}
}
}
Fgb
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "FGB Workout Schema",
"type": "object",
"required": ["type", "rest", "rounds", "duration", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["Fgb"] },
"rest": { "type": "number", "minimum": 0 },
"rounds": { "type": "number", "minimum": 1 },
"duration": { "type": "number", "minimum": 1 },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
}
}
}
ForTime
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "For Time Workout Schema",
"type": "object",
"required": ["type", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["ForTime"] },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"time_cap": { "type": "number", "minimum": 1 },
"partition_any_way": { "type": "boolean" }
}
}
FranStyle
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "FranStyle Workout Schema",
"type": "object",
"required": ["type", "reps", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["FranStyle"] },
"reps": {
"type": "array",
"items": { "type": "integer", "minimum": 1 },
"minItems": 2,
"maxItems": 100,
"additionalItems": false
},
"buy_in": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"cash_out": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"time_cap": { "type": "number", "minimum": 1 }
}
}
Generic
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Generic Workout Schema",
"type": "object",
"required": ["type", "name", "score_by", "description", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["Generic"] },
"name": { "type": "string", "minLength": 1, "maxLength": 50 },
"score_by": {
"enum": [
"none",
"time_asc",
"time_desc",
"reps_asc",
"reps_desc",
"rounds_reps_asc",
"rounds_reps_desc",
"distance_asc",
"distance_desc",
"weight_asc",
"weight_desc",
"peak_watts_desc",
"max_speed_desc",
"points_asc",
"points_desc"
]
},
"description": { "type": "string", "minLength": 1, "maxLength": 50000 },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 0,
"maxItems": 100,
"additionalItems": false
},
"time_cap": { "type": "number", "minimum": 1 }
}
}
MaxReps
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Max Reps Workout Schema",
"type": "object",
"required": ["type", "duration", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["MaxReps"] },
"duration": { "type": "number", "minimum": 1 },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
}
}
}
RoundsForTime
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Rounds For Time Workout Schema",
"type": "object",
"required": ["type", "rounds", "rest", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["RoundsForTime"] },
"rest": { "type": "number", "minimum": 0 },
"rounds": { "type": "number", "minimum": 2 },
"buy_in": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"cash_out": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"time_cap": { "type": "number", "minimum": 1 }
}
}
Strength
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Strength Workout Schema",
"type": "object",
"required": ["type", "rest", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["Strength"] },
"rest": { "$ref": "workouts/common.json#/rest" },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"time_cap": { "type": "number", "minimum": 1 }
}
}
Tabata
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Tabata Workout Schema",
"type": "object",
"required": [
"type",
"score",
"intervals",
"rest_period",
"work_period",
"break_period",
"movements"
],
"additionalProperties": false,
"properties": {
"type": { "enum": ["Tabata"] },
"score": { "enum": ["lowest", "total"] },
"intervals": { "type": "number", "minimum": 1 },
"rest_period": { "type": "number", "minimum": 1 },
"work_period": { "type": "number", "minimum": 1 },
"break_period": { "type": "number", "minimum": 0 },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
}
}
}
TwelveDays
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "TwelveDays Workout Schema",
"type": "object",
"required": ["type", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["TwelveDays"] },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 1,
"maxItems": 100,
"additionalItems": false
},
"time_cap": { "type": "number", "minimum": 1 }
}
}
WarmUp
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "WarmUp Workout Schema",
"type": "object",
"required": ["type", "name", "description", "movements"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["WarmUp"] },
"name": { "type": "string", "minLength": 1, "maxLength": 50 },
"description": { "type": "string", "minLength": 1, "maxLength": 50000 },
"movements": {
"type": "array",
"items": { "$ref": "workouts/common.json#/movement" },
"minItems": 0,
"maxItems": 100,
"additionalItems": false
}
}
}
Common
common.json
{
"movement": {
"title": "Workout Movement Object",
"type": "object",
"required": ["id"],
"additionalProperties": false,
"properties": {
"id": { "type": "string" },
"reps": { "type": ["string", "null"] },
"reps_female": { "type": ["string", "null"] },
"load": { "type": ["string", "null"] },
"load_female": { "type": ["string", "null"] },
"load_unit": { "enum": ["%1rm", "%bodyweight", "lbs", "kg", "pood"] },
"height": { "type": ["string", "null"] },
"height_female": { "type": ["string", "null"] },
"height_unit": { "enum": ["inches", "cm", "feet"] },
"duration": { "type": ["string", "null"] },
"duration_female": { "type": ["string", "null"] },
"duration_unit": { "enum": ["seconds", "minutes"] },
"distance": { "type": ["string", "null"] },
"distance_female": { "type": ["string", "null"] },
"distance_unit": { "enum": ["feet", "yards", "miles", "meters", "km"] },
"calories": { "type": ["string", "null"] },
"calories_female": { "type": ["string", "null"] },
"average_power": { "type": ["string", "null"] },
"average_power_female": { "type": ["string", "null"] },
"average_power_unit": { "enum": ["watts", "kcal/h"] },
"peak_power": { "type": ["string", "null"] },
"peak_power_female": { "type": ["string", "null"] },
"peak_power_unit": { "enum": ["watts", "kcal/h"] },
"tempo": { "type": ["string", "null"] },
"target_attribute": {
"enum": [
"reps",
"load",
"distance",
"duration",
"height",
"calories",
"peakPower"
]
}
}
},
"rest": {
"title": "Rest Object",
"type": "object",
"required": ["type"],
"additionalProperties": false,
"properties": {
"type": { "enum": ["fixed", "as_needed", "emom", "ratio", "superset"] },
"duration": { "type": ["number", "string"], "minimum": 0 }
}
}
}