Skip to content

Movement Guide — reference bands + plain-English explanation for a movement

GET
/api/movement-guide/
curl --request GET \
--url 'http://localhost:8000/api/movement-guide/?activity=example&exercise=example' \
--header 'Authorization: Bearer <token>'

The Movement Norms Library (#1118) entry for one movement. Pass ?activity=cricket&exercise=Cover Drive to receive the per-metric reference table (green-zone band + goal direction + evidence grade + plain-English note) and the movement-level explanation (what it measures, a key evidence-backed fact, demographics and skill notes). Powers the in-session Movement Guide block.

Bands are population reference green-zones, evidence-graded (validated | experimental | assumed) — reference, not diagnostic limits. Bound metrics carry the same team-default band the Threshold configurator shows; reference_only metrics are library variables the platform does not yet compute per session. Returns 404 when the library has no entry for the movement.

Returns 400 (keyed on activity) when activity or exercise is missing or empty.

activity
required
string

Activity value, e.g. cricket.

exercise
required
string

Exercise name, e.g. Cover Drive.

lang
string

en (default) | ru | es — localises the explanation + per-metric notes. Metric labels + units are localised client-side.

Media typeapplication/json
object
activity
required
string
exercise
required
string
what_it_measures
required

Plain-English description of the movement and what its variables capture.

string
key_fact
required

One evidence-backed fact, with citation where available.

string
demographics
required

How the bands shift by sex/age.

string
skill
required

What improves from beginner to advanced.

string
metrics
required

Per-metric reference row for the Movement Guide table. min_good/max_good are the team-default reference band (same as the Threshold configurator) in the metric’s canonical unit; evidence_basis is validated | experimental | assumed; reference_only metrics are library variables we don’t yet compute for a session.

Array<object>
object
key
required
string
label
required
string
unit
required
string
higher_is_better
required
boolean
nullable
min_good
required
number format: double
nullable
max_good
required
number format: double
nullable
evidence_basis
required
string
source
required
string
note
required
string
per_athlete
required
boolean
reference_only
required
boolean
Examplegenerated
{
"activity": "example",
"exercise": "example",
"what_it_measures": "example",
"key_fact": "example",
"demographics": "example",
"skill": "example",
"metrics": [
{
"key": "example",
"label": "example",
"unit": "example",
"higher_is_better": true,
"min_good": 1,
"max_good": 1,
"evidence_basis": "example",
"source": "example",
"note": "example",
"per_athlete": true,
"reference_only": true
}
]
}

activity or exercise missing or empty (keyed on activity).

Media typeapplication/json

Validation error keyed by parameter name — each key is the offending query parameter, each value the list of human-readable messages for it.

object
key
additional properties
Array<string>
Examples
Example400—Activity/exerciseMissingOrEmpty

400 — activity/exercise missing or empty

{
"activity": [
"Both `activity` and `exercise` are required."
]
}
Media typeapplication/json
object
detail
required

Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).

string
Examplegenerated
{
"detail": "example"
}
Media typeapplication/json
object
detail
required

Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).

string
Examplegenerated
{
"detail": "example"
}