{"openapi":"3.1.0","info":{"title":"MMSx / MoPro Movement Intelligence API","version":"v3.2","summary":"Exercise ontology and movement intelligence, private developer beta.","description":"Exercise ontology, biomechanics interpretation, alias search, parent-child variation trees, graph-domain mapping, figure requirements and context-ready movement intelligence.\n\n**Authentication**: `Authorization: Bearer YOUR_API_KEY`.\n\n**Evidence boundary**: outputs are educational decision-support only — not diagnosis, not medical treatment. See /v3/developer/evidence-boundary.\n\nPortal: /v3/developer/portal · Docs served by API v3.3 (developer portal release).","contact":{"name":"MMSx Authority Institute","url":"https://mmsxauthority.org"}},"servers":[{"url":"https://api.mopro-codex.com"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"system","description":"Health and status."},{"name":"exercise","description":"Exercise ontology and intelligence."},{"name":"auth","description":"Key status and usage."},{"name":"plans","description":"Subscription plans."}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"MMSx / MoPro API key. Send as `Authorization: Bearer YOUR_API_KEY`. Keys are issued during private beta by MMSx Authority."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"type":"string"},"message":{"type":"string"}},"required":["ok","error","message"]},"QuotaError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"plan":{"type":"string"},"monthly_limit":{"type":"integer"},"used":{"type":"integer"}}}]},"Envelope":{"type":"object","description":"Every payload carries the review/evidence/safety boundary fields plus endpoint-specific data.","properties":{"review_status":{"type":"string","description":"Review lifecycle status of the record."},"confidence":{"type":"number","description":"Resolver confidence for the matched node (0–1)."},"evidence_boundary":{"type":"string","description":"Evidence limitation statement carried on every payload."},"safety_boundary":{"type":"string","description":"Educational decision-support only; not medical diagnosis."}},"additionalProperties":true}}},"paths":{"/v3/ontology/health":{"get":{"tags":["system"],"summary":"Ontology and service health","description":"Public. Dataset counts and service status; no API key required.","operationId":"ontologyHealth","security":[],"responses":{"200":{"description":"Service healthy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"review_status":"generated_ontology_ready_for_mmsx_expert_review","confidence":1.0,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis.","ok":true,"base_exercise_count":7000,"ontology_node_count":35000,"edge_count":28000,"alias_count":14239,"search_term_count":58490,"graph_delta_count":199577,"figure_requirement_count":35000,"review_queue_count":16364,"status":"core_exercise_api_ready"}}}}}}}}},"/v3/exercise/search":{"get":{"tags":["exercise"],"summary":"Search exercises","description":"Typo-tolerant search across 35,000 ontology nodes, 14,239 aliases and 58,490 search terms. Available on every plan.","operationId":"exerciseSearch","security":[{"bearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"example":"back squat","description":"Free-text query; typo-tolerant and alias-aware."}],"responses":{"200":{"description":"Successful lookup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"review_status":"uploaded_base_parent","confidence":0.99,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis.","query":"bck squat","resolved":true,"results":[{"review_status":"uploaded_base_parent","confidence":0.99,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis.","exercise_id":"MMSX-BE-00018","canonical_exercise_name":"Back Squat","canonical_key":"back_squat","node_type":"BASE","movement_family":"general_fitness","parent_name":null,"match_method":"curated_alias","matched_term":"Back Squat","aliases":[{"alias_name":"Back-Squat","alias_type":"HYPHEN_APOSTROPHE_VARIANT","confidence":0.9,"reason":"Generated from punctuation, abbreviation or common naming variation.","review_status":"machine_generated_needs_mmsx_review"},{"alias_name":"BS","alias_type":"ABBREVIATION","confidence":0.82,"reason":"Generated from punctuation, abbreviation or common naming variation.","review_status":"machine_generated_needs_mmsx_review"}],"children":[{"exercise_id":"MMSX-CH-00000069","canonical_exercise_name":"Assisted Back Squat","canonical_key":"assisted_back_squat","relationship_type":"HAS_REGRESSION","child_type":"REGRESSION_CHILD","confidence":0.91,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},{"exercise_id":"MMSX-CH-00000072","canonical_exercise_name":"Band-Resisted Back Squat","canonical_key":"band_resisted_back_squat","relationship_type":"HAS_EQUIPMENT_VARIATION","child_type":"EQUIPMENT_VARIATION_CHILD","confidence":0.89,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},{"exercise_id":"MMSX-CH-00000071","canonical_exercise_name":"Paused Back Squat","canonical_key":"paused_back_squat","relationship_type":"HAS_ISOMETRIC_VARIATION","child_type":"TEMPO_OR_ISOMETRIC_VARIATION_CHILD","confidence":0.93,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},{"exercise_id":"MMSX-CH-00000070","canonical_exercise_name":"Tempo Back Squat","canonical_key":"tempo_back_squat","relationship_type":"HAS_TEMPO_VARIATION","child_type":"TEMPO_OR_ISOMETRIC_VARIATION_CHILD","confidence":0.93,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."}],"regressions":[{"exercise_id":"MMSX-CH-00000069","canonical_exercise_name":"Assisted Back Squat","canonical_key":"assisted_back_squat","relationship_type":"HAS_REGRESSION","child_type":"REGRESSION_CHILD","confidence":0.91,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."}],"progressions":[],"equipment_variations":[{"exercise_id":"MMSX-CH-00000072","canonical_exercise_name":"Band-Resisted Back Squat","canonical_key":"band_resisted_back_squat","relationship_type":"HAS_EQUIPMENT_VARIATION","child_type":"EQUIPMENT_VARIATION_CHILD","confidence":0.89,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."}],"graph_domains":{"domains":["compensation_risk","joint_angle","phase_timing","progression_readiness","stability_demand"],"summary":{"compensation_risk":{"increased":1,"decreased":0,"baseline":0},"joint_angle":{"increased":0,"decreased":0,"baseline":1},"phase_timing":{"increased":0,"decreased":0,"baseline":1},"progression_readiness":{"increased":1,"decreased":0,"baseline":0},"stability_demand":{"increased":1,"decreased":0,"baseline":0}}},"figure_status":"figure_required_for_base_profile"}]}}}}},"headers":{"X-MMSx-Plan":{"description":"Plan attached to the presented key.","schema":{"type":"string","example":"Professional"}},"X-MMSx-Monthly-Limit":{"description":"Monthly request quota for the plan.","schema":{"type":"integer","example":50000}},"X-MMSx-Monthly-Used":{"description":"Requests counted this month, including this one.","schema":{"type":"integer","example":128}},"X-MMSx-Monthly-Remaining":{"description":"Requests remaining this month.","schema":{"type":"integer","example":49872}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"api_key_required":{"value":{"ok":false,"error":"api_key_required","message":"A valid MMSx / MoPro API key is required for this endpoint."}},"invalid_api_key":{"value":{"ok":false,"error":"invalid_api_key","message":"The supplied API key is not valid."}},"expired_api_key":{"value":{"ok":false,"error":"expired_api_key","message":"This API key has expired."}},"revoked_api_key":{"value":{"ok":false,"error":"revoked_api_key","message":"This API key has been revoked."}}}}}},"403":{"description":"Key blocked, or endpoint not included in the current plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"endpoint_not_allowed_for_plan":{"value":{"ok":false,"error":"endpoint_not_allowed_for_plan","message":"This endpoint is not included in the current plan."}},"blocked_api_key":{"value":{"ok":false,"error":"blocked_api_key","message":"This API key has been blocked."}}}}}},"404":{"description":"No ontology node matched the requested name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"ok":false,"error":"not_found","message":"No exercise matched the requested name."}}}}}},"429":{"description":"Monthly quota or per-minute burst limit exceeded. Denied requests are logged but not counted against quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaError"},"examples":{"quota_exceeded":{"value":{"ok":false,"error":"quota_exceeded","message":"Monthly API request quota exceeded.","plan":"Developer","monthly_limit":10000,"used":10000}}}}}}}}},"/v3/exercise/profile":{"get":{"tags":["exercise"],"summary":"Exercise profile","description":"Full exercise record: identity, movement family, aliases, variations, graph domains and figure status. Free Sandbox receives the basic tier (access_tier: \"basic\"); Professional and above receive the full record.","operationId":"exerciseProfile","security":[{"bearerAuth":[]}],"parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"},"example":"Back Squat","description":"Canonical exercise name (resolve via search first)."}],"responses":{"200":{"description":"Successful lookup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"review_status":"uploaded_base_parent","confidence":1.0,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis.","exercise_id":"MMSX-BE-00018","canonical_exercise_name":"Back Squat","canonical_key":"back_squat","node_type":"BASE","movement_family":"general_fitness","parent_name":null,"access_tier":null,"access_tier_note":null,"children":[{"exercise_id":"MMSX-CH-00000072","canonical_exercise_name":"Band-Resisted Back Squat","canonical_key":"band_resisted_back_squat","relationship_type":"HAS_EQUIPMENT_VARIATION","child_type":"EQUIPMENT_VARIATION_CHILD","confidence":0.89,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},{"exercise_id":"MMSX-CH-00000071","canonical_exercise_name":"Paused Back Squat","canonical_key":"paused_back_squat","relationship_type":"HAS_ISOMETRIC_VARIATION","child_type":"TEMPO_OR_ISOMETRIC_VARIATION_CHILD","confidence":0.93,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},{"exercise_id":"MMSX-CH-00000069","canonical_exercise_name":"Assisted Back Squat","canonical_key":"assisted_back_squat","relationship_type":"HAS_REGRESSION","child_type":"REGRESSION_CHILD","confidence":0.91,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},"… +1 more"],"aliases":[{"alias_name":"Back-Squat","alias_type":"HYPHEN_APOSTROPHE_VARIANT","confidence":0.9,"reason":"Generated from punctuation, abbreviation or common naming variation.","review_status":"machine_generated_needs_mmsx_review"},{"alias_name":"BS","alias_type":"ABBREVIATION","confidence":0.82,"reason":"Generated from punctuation, abbreviation or common naming variation.","review_status":"machine_generated_needs_mmsx_review"}],"regressions":[{"exercise_id":"MMSX-CH-00000069","canonical_exercise_name":"Assisted Back Squat","canonical_key":"assisted_back_squat","relationship_type":"HAS_REGRESSION","child_type":"REGRESSION_CHILD","confidence":0.91,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."}],"progressions":[],"equipment_variations":[{"exercise_id":"MMSX-CH-00000072","canonical_exercise_name":"Band-Resisted Back Squat","canonical_key":"band_resisted_back_squat","relationship_type":"HAS_EQUIPMENT_VARIATION","child_type":"EQUIPMENT_VARIATION_CHILD","confidence":0.89,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."}],"context_variations":[],"graph_domains":{"domains":["compensation_risk","fatigue_decay","implement_path","… +9 more"],"summary":{"compensation_risk":{"increased":1,"decreased":0,"baseline":0},"joint_angle":{"increased":0,"decreased":0,"baseline":4},"phase_timing":{"increased":1,"decreased":0,"baseline":3},"progression_readiness":{"increased":1,"decreased":0,"baseline":0},"stability_demand":{"increased":2,"decreased":0,"baseline":0},"implement_path":{"increased":1,"decreased":0,"baseline":0},"torque":{"increased":1,"decreased":0,"baseline":0},"vector_direction":{"increased":1,"decreased":0,"baseline":0},"fatigue_decay":{"increased":2,"decreased":0,"baseline":0},"load_tolerance":{"increased":1,"decreased":0,"baseline":0},"repetition_quality_decay":{"increased":1,"decreased":0,"baseline":0},"rom_control":{"increased":1,"decreased":0,"baseline":0}},"rows":[{"parent_name":"Back Squat","child_name":"Assisted Back Squat","graph_domain":"compensation_risk","parent_relevance":"baseline","child_relevance":"increased","delta_reason":"External support reduces balance demand and allows pattern learning.","confidence":0.91},{"parent_name":"Back Squat","child_name":"Assisted Back Squat","graph_domain":"joint_angle","parent_relevance":"baseline","child_relevance":"same","delta_reason":"Core movement identity remains inherited from parent.","confidence":0.91},{"parent_name":"Back Squat","child_name":"Assisted Back Squat","graph_domain":"phase_timing","parent_relevance":"baseline","child_relevance":"same","delta_reason":"Core movement identity remains inherited from parent.","confidence":0.91},"… +17 more"]},"figure_status":"figure_required_for_base_profile","figure_requirement":{"exercise_id":"MMSX-BE-00018","exercise_name":"Back Squat","canonical_key":"back_squat","parent_name":"","node_type":"BASE","needs_unique_figure":true,"can_inherit_parent_figure":false,"recommended_view":"front-oblique plus side-view if possible","pose_phase":"primary execution phase","r2_slug":"back_squat","review_status":"figure_required_for_base_profile","figure_status":"figure_required_for_base_profile","confidence":1.0,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},"match":{"query":"Back Squat","match_method":"curated_alias","matched_term":"Back Squat","score":0.99}}}}}},"headers":{"X-MMSx-Plan":{"description":"Plan attached to the presented key.","schema":{"type":"string","example":"Professional"}},"X-MMSx-Monthly-Limit":{"description":"Monthly request quota for the plan.","schema":{"type":"integer","example":50000}},"X-MMSx-Monthly-Used":{"description":"Requests counted this month, including this one.","schema":{"type":"integer","example":128}},"X-MMSx-Monthly-Remaining":{"description":"Requests remaining this month.","schema":{"type":"integer","example":49872}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"api_key_required":{"value":{"ok":false,"error":"api_key_required","message":"A valid MMSx / MoPro API key is required for this endpoint."}},"invalid_api_key":{"value":{"ok":false,"error":"invalid_api_key","message":"The supplied API key is not valid."}},"expired_api_key":{"value":{"ok":false,"error":"expired_api_key","message":"This API key has expired."}},"revoked_api_key":{"value":{"ok":false,"error":"revoked_api_key","message":"This API key has been revoked."}}}}}},"403":{"description":"Key blocked, or endpoint not included in the current plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"endpoint_not_allowed_for_plan":{"value":{"ok":false,"error":"endpoint_not_allowed_for_plan","message":"This endpoint is not included in the current plan."}},"blocked_api_key":{"value":{"ok":false,"error":"blocked_api_key","message":"This API key has been blocked."}}}}}},"404":{"description":"No ontology node matched the requested name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"ok":false,"error":"not_found","message":"No exercise matched the requested name."}}}}}},"429":{"description":"Monthly quota or per-minute burst limit exceeded. Denied requests are logged but not counted against quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaError"},"examples":{"quota_exceeded":{"value":{"ok":false,"error":"quota_exceeded","message":"Monthly API request quota exceeded.","plan":"Developer","monthly_limit":10000,"used":10000}}}}}}}}},"/v3/exercise/tree":{"get":{"tags":["exercise"],"summary":"Variation tree","description":"Parent plus full child variation structure. Developer plan and above.","operationId":"exerciseTree","security":[{"bearerAuth":[]}],"parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"},"example":"Push-Up","description":"Canonical exercise name (resolve via search first)."}],"responses":{"200":{"description":"Successful lookup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"review_status":"uploaded_base_parent","confidence":1.0,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis.","exercise_id":"MMSX-BE-00266","canonical_exercise_name":"Push-Up","canonical_key":"push_up","node_type":"BASE","movement_family":"general_fitness","parent":null,"children":[{"exercise_id":"MMSX-CH-00001064","canonical_exercise_name":"Band-Resisted Push-Up","canonical_key":"band_resisted_push_up","relationship_type":"HAS_EQUIPMENT_VARIATION","child_type":"EQUIPMENT_VARIATION_CHILD","confidence":0.89,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},{"exercise_id":"MMSX-CH-00001063","canonical_exercise_name":"Paused Push-Up","canonical_key":"paused_push_up","relationship_type":"HAS_ISOMETRIC_VARIATION","child_type":"TEMPO_OR_ISOMETRIC_VARIATION_CHILD","confidence":0.93,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},{"exercise_id":"MMSX-CH-00001061","canonical_exercise_name":"Assisted Push-Up","canonical_key":"assisted_push_up","relationship_type":"HAS_REGRESSION","child_type":"REGRESSION_CHILD","confidence":0.91,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},"… +1 more"],"aliases":[{"alias_name":"Push Up","alias_type":"SPELLING_VARIANT","confidence":0.9,"reason":"Generated from punctuation, abbreviation or common naming variation.","review_status":"machine_generated_needs_mmsx_review"},{"alias_name":"PU","alias_type":"ABBREVIATION","confidence":0.82,"reason":"Generated from punctuation, abbreviation or common naming variation.","review_status":"machine_generated_needs_mmsx_review"}],"regressions":[{"exercise_id":"MMSX-CH-00001061","canonical_exercise_name":"Assisted Push-Up","canonical_key":"assisted_push_up","relationship_type":"HAS_REGRESSION","child_type":"REGRESSION_CHILD","confidence":0.91,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."}],"progressions":[],"equipment_variations":[{"exercise_id":"MMSX-CH-00001064","canonical_exercise_name":"Band-Resisted Push-Up","canonical_key":"band_resisted_push_up","relationship_type":"HAS_EQUIPMENT_VARIATION","child_type":"EQUIPMENT_VARIATION_CHILD","confidence":0.89,"review_status":"machine_generated_needs_mmsx_review","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."}],"context_variations":[],"graph_delta_summary":{"domains":["compensation_risk","fatigue_decay","implement_path","joint_angle","load_tolerance","phase_timing","progression_readiness","repetition_quality_decay","rom_control","stability_demand","torque","vector_direction"],"summary":{"compensation_risk":{"increased":1,"decreased":0,"baseline":0},"joint_angle":{"increased":0,"decreased":0,"baseline":4},"phase_timing":{"increased":2,"decreased":0,"baseline":4},"progression_readiness":{"increased":1,"decreased":0,"baseline":0},"stability_demand":{"increased":2,"decreased":0,"baseline":0},"implement_path":{"increased":1,"decreased":0,"baseline":0},"torque":{"increased":1,"decreased":0,"baseline":0},"vector_direction":{"increased":1,"decreased":0,"baseline":0},"fatigue_decay":{"increased":2,"decreased":0,"baseline":0},"load_tolerance":{"increased":2,"decreased":0,"baseline":0},"repetition_quality_decay":{"increased":2,"decreased":0,"baseline":0},"rom_control":{"increased":2,"decreased":0,"baseline":0}}},"figure_requirement":{"exercise_id":"MMSX-BE-00266","exercise_name":"Push-Up","canonical_key":"push_up","parent_name":"","node_type":"BASE","needs_unique_figure":true,"can_inherit_parent_figure":false,"recommended_view":"front-oblique plus side-view if possible","pose_phase":"primary execution phase","r2_slug":"push_up","review_status":"figure_required_for_base_profile","figure_status":"figure_required_for_base_profile","confidence":1.0,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."},"figure_status":"figure_required_for_base_profile","match":{"query":"Push-Up","match_method":"curated_alias","matched_term":"Push-Up","score":0.99}}}}}},"headers":{"X-MMSx-Plan":{"description":"Plan attached to the presented key.","schema":{"type":"string","example":"Professional"}},"X-MMSx-Monthly-Limit":{"description":"Monthly request quota for the plan.","schema":{"type":"integer","example":50000}},"X-MMSx-Monthly-Used":{"description":"Requests counted this month, including this one.","schema":{"type":"integer","example":128}},"X-MMSx-Monthly-Remaining":{"description":"Requests remaining this month.","schema":{"type":"integer","example":49872}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"api_key_required":{"value":{"ok":false,"error":"api_key_required","message":"A valid MMSx / MoPro API key is required for this endpoint."}},"invalid_api_key":{"value":{"ok":false,"error":"invalid_api_key","message":"The supplied API key is not valid."}},"expired_api_key":{"value":{"ok":false,"error":"expired_api_key","message":"This API key has expired."}},"revoked_api_key":{"value":{"ok":false,"error":"revoked_api_key","message":"This API key has been revoked."}}}}}},"403":{"description":"Key blocked, or endpoint not included in the current plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"endpoint_not_allowed_for_plan":{"value":{"ok":false,"error":"endpoint_not_allowed_for_plan","message":"This endpoint is not included in the current plan."}},"blocked_api_key":{"value":{"ok":false,"error":"blocked_api_key","message":"This API key has been blocked."}}}}}},"404":{"description":"No ontology node matched the requested name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"ok":false,"error":"not_found","message":"No exercise matched the requested name."}}}}}},"429":{"description":"Monthly quota or per-minute burst limit exceeded. Denied requests are logged but not counted against quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaError"},"examples":{"quota_exceeded":{"value":{"ok":false,"error":"quota_exceeded","message":"Monthly API request quota exceeded.","plan":"Developer","monthly_limit":10000,"used":10000}}}}}}}}},"/v3/exercise/children":{"get":{"tags":["exercise"],"summary":"Direct children","description":"Direct child variations only. Developer plan and above.","operationId":"exerciseChildren","security":[{"bearerAuth":[]}],"parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"},"example":"Plank","description":"Canonical exercise name (resolve via search first)."}],"responses":{"200":{"description":"Successful lookup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"review_status":"uploaded_base_parent","confidence":1.0,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis.","exercise_id":"MMSX-BE-00247","canonical_exercise_name":"Plank","canonical_key":"plank","node_type":"BASE","movement_family":"general_fitness","parent_name":null,"children":[{"edge_id":"MMSX-EDGE-00000988","exercise_id":"MMSX-CH-00000988","canonical_exercise_name":"Loaded Plank","canonical_key":"loaded_plank","relationship_type":"HAS_EQUIPMENT_VARIATION","child_type":"EQUIPMENT_VARIATION_CHILD","mechanical_delta":{"parent_pattern":"Plank","family_class":"core_plank","change_summary":"External load increases bracing, compensation-risk and endurance demand.","load_or_complexity_change":"equipment/context altered","expected_coaching_focus":"Maintain parent movement intent while monitoring compensation risk, phase timing and quality decay."},"graph_domain_delta":{"increased_relevance":["vector_direction","torque","stability_demand","implement_path","rom_control","clinical_risk_modifier","return_to_training_readiness"],"decreased_relevance":[],"same_as_parent":["joint_angle","phase_timing"],"notes":"Graph-domain priority changes are modelled for decision-support and require measured data for lab claims."},"figure_requirement":{"needs_unique_figure":true,"can_inherit_parent_figure":false,"recommended_view":"same parent view plus variation-specific equipment/context if applicable","pose_phase":"primary altered phase","r2_slug":"loaded_plank"},"confidence":0.89,"review_status":"machine_generated_needs_mmsx_review","safety_boundary":"Educational decision-support only; not medical diagnosis.","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated."},{"edge_id":"MMSX-EDGE-00000986","exercise_id":"MMSX-CH-00000986","canonical_exercise_name":"Long-Lever Plank","canonical_key":"long_lever_plank","relationship_type":"HAS_PROGRESSION","child_type":"PROGRESSION_CHILD","mechanical_delta":{"parent_pattern":"Plank","family_class":"core_plank","change_summary":"Longer lever increases anti-extension and tissue-stress demand.","load_or_complexity_change":"increased","expected_coaching_focus":"Maintain parent movement intent while monitoring compensation risk, phase timing and quality decay."},"graph_domain_delta":{"increased_relevance":["load_tolerance","power_time","fatigue_decay","progression_readiness","rom_control","clinical_risk_modifier","return_to_training_readiness"],"decreased_relevance":[],"same_as_parent":["joint_angle","phase_timing"],"notes":"Graph-domain priority changes are modelled for decision-support and require measured data for lab claims."},"figure_requirement":{"needs_unique_figure":true,"can_inherit_parent_figure":false,"recommended_view":"same parent view plus variation-specific equipment/context if applicable","pose_phase":"primary altered phase","r2_slug":"long_lever_plank"},"confidence":0.9,"review_status":"machine_generated_needs_mmsx_review","safety_boundary":"Educational decision-support only; not medical diagnosis.","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated."},{"edge_id":"MMSX-EDGE-00000985","exercise_id":"MMSX-CH-00000985","canonical_exercise_name":"Supported Plank","canonical_key":"supported_plank","relationship_type":"HAS_REGRESSION","child_type":"REGRESSION_CHILD","mechanical_delta":{"parent_pattern":"Plank","family_class":"core_plank","change_summary":"Support shortens lever or reduces load for safer trunk-control entry.","load_or_complexity_change":"reduced","expected_coaching_focus":"Maintain parent movement intent while monitoring compensation risk, phase timing and quality decay."},"graph_domain_delta":{"increased_relevance":["stability_demand","compensation_risk","progression_readiness","rom_control","clinical_risk_modifier","return_to_training_readiness"],"decreased_relevance":["load_tolerance","tissue_stress"],"same_as_parent":["joint_angle","phase_timing"],"notes":"Graph-domain priority changes are modelled for decision-support and require measured data for lab claims."},"figure_requirement":{"needs_unique_figure":false,"can_inherit_parent_figure":true,"recommended_view":"same parent view plus variation-specific equipment/context if applicable","pose_phase":"primary altered phase","r2_slug":"supported_plank"},"confidence":0.91,"review_status":"machine_generated_needs_mmsx_review","safety_boundary":"Educational decision-support only; not medical diagnosis.","evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated."},"… +1 more"]}}}}},"headers":{"X-MMSx-Plan":{"description":"Plan attached to the presented key.","schema":{"type":"string","example":"Professional"}},"X-MMSx-Monthly-Limit":{"description":"Monthly request quota for the plan.","schema":{"type":"integer","example":50000}},"X-MMSx-Monthly-Used":{"description":"Requests counted this month, including this one.","schema":{"type":"integer","example":128}},"X-MMSx-Monthly-Remaining":{"description":"Requests remaining this month.","schema":{"type":"integer","example":49872}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"api_key_required":{"value":{"ok":false,"error":"api_key_required","message":"A valid MMSx / MoPro API key is required for this endpoint."}},"invalid_api_key":{"value":{"ok":false,"error":"invalid_api_key","message":"The supplied API key is not valid."}},"expired_api_key":{"value":{"ok":false,"error":"expired_api_key","message":"This API key has expired."}},"revoked_api_key":{"value":{"ok":false,"error":"revoked_api_key","message":"This API key has been revoked."}}}}}},"403":{"description":"Key blocked, or endpoint not included in the current plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"endpoint_not_allowed_for_plan":{"value":{"ok":false,"error":"endpoint_not_allowed_for_plan","message":"This endpoint is not included in the current plan."}},"blocked_api_key":{"value":{"ok":false,"error":"blocked_api_key","message":"This API key has been blocked."}}}}}},"404":{"description":"No ontology node matched the requested name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"ok":false,"error":"not_found","message":"No exercise matched the requested name."}}}}}},"429":{"description":"Monthly quota or per-minute burst limit exceeded. Denied requests are logged but not counted against quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaError"},"examples":{"quota_exceeded":{"value":{"ok":false,"error":"quota_exceeded","message":"Monthly API request quota exceeded.","plan":"Developer","monthly_limit":10000,"used":10000}}}}}}}}},"/v3/exercise/aliases":{"get":{"tags":["exercise"],"summary":"Aliases","description":"All registered aliases for an exercise. Developer plan and above.","operationId":"exerciseAliases","security":[{"bearerAuth":[]}],"parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"},"example":"Romanian Deadlift","description":"Canonical exercise name (resolve via search first)."}],"responses":{"200":{"description":"Successful lookup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"canonical_exercise_name":"Romanian Deadlift","aliases":["RDL","Stiff Hip Hinge Deadlift"]}}}}},"headers":{"X-MMSx-Plan":{"description":"Plan attached to the presented key.","schema":{"type":"string","example":"Professional"}},"X-MMSx-Monthly-Limit":{"description":"Monthly request quota for the plan.","schema":{"type":"integer","example":50000}},"X-MMSx-Monthly-Used":{"description":"Requests counted this month, including this one.","schema":{"type":"integer","example":128}},"X-MMSx-Monthly-Remaining":{"description":"Requests remaining this month.","schema":{"type":"integer","example":49872}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"api_key_required":{"value":{"ok":false,"error":"api_key_required","message":"A valid MMSx / MoPro API key is required for this endpoint."}},"invalid_api_key":{"value":{"ok":false,"error":"invalid_api_key","message":"The supplied API key is not valid."}},"expired_api_key":{"value":{"ok":false,"error":"expired_api_key","message":"This API key has expired."}},"revoked_api_key":{"value":{"ok":false,"error":"revoked_api_key","message":"This API key has been revoked."}}}}}},"403":{"description":"Key blocked, or endpoint not included in the current plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"endpoint_not_allowed_for_plan":{"value":{"ok":false,"error":"endpoint_not_allowed_for_plan","message":"This endpoint is not included in the current plan."}},"blocked_api_key":{"value":{"ok":false,"error":"blocked_api_key","message":"This API key has been blocked."}}}}}},"404":{"description":"No ontology node matched the requested name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"ok":false,"error":"not_found","message":"No exercise matched the requested name."}}}}}},"429":{"description":"Monthly quota or per-minute burst limit exceeded. Denied requests are logged but not counted against quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaError"},"examples":{"quota_exceeded":{"value":{"ok":false,"error":"quota_exceeded","message":"Monthly API request quota exceeded.","plan":"Developer","monthly_limit":10000,"used":10000}}}}}}}}},"/v3/exercise/graph-domains":{"get":{"tags":["exercise"],"summary":"Graph domains","description":"Graph-domain biomechanics interpretation. Modelled decision-support / educational output unless measured laboratory data are explicitly supplied — see /v3/developer/evidence-boundary. Developer plan receives the basic tier (top domains, no summary); Professional and above full.","operationId":"exerciseGraphDomains","security":[{"bearerAuth":[]}],"parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"},"example":"Back Squat","description":"Canonical exercise name (resolve via search first)."}],"responses":{"200":{"description":"Successful lookup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"review_status":"uploaded_base_parent","confidence":1.0,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis.","exercise_id":"MMSX-BE-00018","canonical_exercise_name":"Back Squat","canonical_key":"back_squat","node_type":"BASE","movement_family":"general_fitness","parent_name":null,"access_tier":null,"access_tier_note":null,"graph_domains":{"domains":["compensation_risk","fatigue_decay","implement_path","… +9 more"],"summary":{"compensation_risk":{"increased":1,"decreased":0,"baseline":0},"joint_angle":{"increased":0,"decreased":0,"baseline":4},"phase_timing":{"increased":2,"decreased":0,"baseline":4},"progression_readiness":{"increased":1,"decreased":0,"baseline":0},"stability_demand":{"increased":2,"decreased":0,"baseline":0},"implement_path":{"increased":1,"decreased":0,"baseline":0},"torque":{"increased":1,"decreased":0,"baseline":0},"vector_direction":{"increased":1,"decreased":0,"baseline":0},"fatigue_decay":{"increased":2,"decreased":0,"baseline":0},"load_tolerance":{"increased":2,"decreased":0,"baseline":0},"repetition_quality_decay":{"increased":2,"decreased":0,"baseline":0},"rom_control":{"increased":2,"decreased":0,"baseline":0}},"rows":[{"parent_name":"Back Squat","child_name":"Assisted Back Squat","graph_domain":"compensation_risk","parent_relevance":"baseline","child_relevance":"increased","delta_reason":"External support reduces balance demand and allows pattern learning.","confidence":0.91},{"parent_name":"Back Squat","child_name":"Assisted Back Squat","graph_domain":"joint_angle","parent_relevance":"baseline","child_relevance":"same","delta_reason":"Core movement identity remains inherited from parent.","confidence":0.91},{"parent_name":"Back Squat","child_name":"Assisted Back Squat","graph_domain":"phase_timing","parent_relevance":"baseline","child_relevance":"same","delta_reason":"Core movement identity remains inherited from parent.","confidence":0.91},"… +22 more"]}}}}}},"headers":{"X-MMSx-Plan":{"description":"Plan attached to the presented key.","schema":{"type":"string","example":"Professional"}},"X-MMSx-Monthly-Limit":{"description":"Monthly request quota for the plan.","schema":{"type":"integer","example":50000}},"X-MMSx-Monthly-Used":{"description":"Requests counted this month, including this one.","schema":{"type":"integer","example":128}},"X-MMSx-Monthly-Remaining":{"description":"Requests remaining this month.","schema":{"type":"integer","example":49872}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"api_key_required":{"value":{"ok":false,"error":"api_key_required","message":"A valid MMSx / MoPro API key is required for this endpoint."}},"invalid_api_key":{"value":{"ok":false,"error":"invalid_api_key","message":"The supplied API key is not valid."}},"expired_api_key":{"value":{"ok":false,"error":"expired_api_key","message":"This API key has expired."}},"revoked_api_key":{"value":{"ok":false,"error":"revoked_api_key","message":"This API key has been revoked."}}}}}},"403":{"description":"Key blocked, or endpoint not included in the current plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"endpoint_not_allowed_for_plan":{"value":{"ok":false,"error":"endpoint_not_allowed_for_plan","message":"This endpoint is not included in the current plan."}},"blocked_api_key":{"value":{"ok":false,"error":"blocked_api_key","message":"This API key has been blocked."}}}}}},"404":{"description":"No ontology node matched the requested name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"ok":false,"error":"not_found","message":"No exercise matched the requested name."}}}}}},"429":{"description":"Monthly quota or per-minute burst limit exceeded. Denied requests are logged but not counted against quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaError"},"examples":{"quota_exceeded":{"value":{"ok":false,"error":"quota_exceeded","message":"Monthly API request quota exceeded.","plan":"Developer","monthly_limit":10000,"used":10000}}}}}}}}},"/v3/exercise/figures":{"get":{"tags":["exercise"],"summary":"Figure requirements","description":"Figure requirement and status for an exercise. Developer plan receives status only; Professional and above receive the full requirement record.","operationId":"exerciseFigures","security":[{"bearerAuth":[]}],"parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string"},"example":"Technical Stand-Up","description":"Canonical exercise name (resolve via search first)."}],"responses":{"200":{"description":"Successful lookup.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"review_status":"uploaded_base_parent","confidence":1.0,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis.","exercise_id":"MMSX-BE-01502","canonical_exercise_name":"Technical Stand-Up","canonical_key":"technical_stand_up","node_type":"BASE","movement_family":"grappling_movement","parent_name":null,"access_tier":null,"access_tier_note":null,"figure_status":"figure_required_for_base_profile","figure_requirement":{"exercise_id":"MMSX-BE-01502","exercise_name":"Technical Stand-Up","canonical_key":"technical_stand_up","parent_name":"","node_type":"BASE","needs_unique_figure":true,"can_inherit_parent_figure":false,"recommended_view":"front-oblique plus side-view if possible","pose_phase":"primary execution phase","r2_slug":"technical_stand_up","review_status":"figure_required_for_base_profile","figure_status":"figure_required_for_base_profile","confidence":1.0,"evidence_boundary":"Generated ontology, ready for MMSx expert review. Do not claim all records are fully validated.","safety_boundary":"Educational decision-support only; not medical diagnosis."}}}}}},"headers":{"X-MMSx-Plan":{"description":"Plan attached to the presented key.","schema":{"type":"string","example":"Professional"}},"X-MMSx-Monthly-Limit":{"description":"Monthly request quota for the plan.","schema":{"type":"integer","example":50000}},"X-MMSx-Monthly-Used":{"description":"Requests counted this month, including this one.","schema":{"type":"integer","example":128}},"X-MMSx-Monthly-Remaining":{"description":"Requests remaining this month.","schema":{"type":"integer","example":49872}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"api_key_required":{"value":{"ok":false,"error":"api_key_required","message":"A valid MMSx / MoPro API key is required for this endpoint."}},"invalid_api_key":{"value":{"ok":false,"error":"invalid_api_key","message":"The supplied API key is not valid."}},"expired_api_key":{"value":{"ok":false,"error":"expired_api_key","message":"This API key has expired."}},"revoked_api_key":{"value":{"ok":false,"error":"revoked_api_key","message":"This API key has been revoked."}}}}}},"403":{"description":"Key blocked, or endpoint not included in the current plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"endpoint_not_allowed_for_plan":{"value":{"ok":false,"error":"endpoint_not_allowed_for_plan","message":"This endpoint is not included in the current plan."}},"blocked_api_key":{"value":{"ok":false,"error":"blocked_api_key","message":"This API key has been blocked."}}}}}},"404":{"description":"No ontology node matched the requested name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"value":{"ok":false,"error":"not_found","message":"No exercise matched the requested name."}}}}}},"429":{"description":"Monthly quota or per-minute burst limit exceeded. Denied requests are logged but not counted against quota.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaError"},"examples":{"quota_exceeded":{"value":{"ok":false,"error":"quota_exceeded","message":"Monthly API request quota exceeded.","plan":"Developer","monthly_limit":10000,"used":10000}}}}}}}}},"/v3/auth/key-status":{"get":{"tags":["auth"],"summary":"Key status","description":"Plan, limits, expiry and usage month for the presented key. Does not count against quota.","operationId":"keyStatus","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Key status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"ok":true,"key_prefix":"mmsx_beta_xxxxxxxx","plan":"Professional","status":"active","monthly_limit":50000,"used_this_month":128,"remaining_this_month":49872,"usage_month":"2026-07","expires_at":null}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"api_key_required":{"value":{"ok":false,"error":"api_key_required","message":"A valid MMSx / MoPro API key is required for this endpoint."}},"invalid_api_key":{"value":{"ok":false,"error":"invalid_api_key","message":"The supplied API key is not valid."}},"expired_api_key":{"value":{"ok":false,"error":"expired_api_key","message":"This API key has expired."}},"revoked_api_key":{"value":{"ok":false,"error":"revoked_api_key","message":"This API key has been revoked."}}}}}},"403":{"description":"Key blocked, or endpoint not included in the current plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"endpoint_not_allowed_for_plan":{"value":{"ok":false,"error":"endpoint_not_allowed_for_plan","message":"This endpoint is not included in the current plan."}},"blocked_api_key":{"value":{"ok":false,"error":"blocked_api_key","message":"This API key has been blocked."}}}}}}}}},"/v3/auth/usage":{"get":{"tags":["auth"],"summary":"Recent usage log","description":"Recent request log for the presented key. Does not count against quota.","operationId":"keyUsage","security":[{"bearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50}}],"responses":{"200":{"description":"Usage detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"ok":true,"plan":"Professional","usage_month":"2026-07","used_this_month":128,"recent":[{"endpoint":"/v3/exercise/search","status_code":200,"counted":1,"requested_at":"2026-07-07T09:41:00Z"}]}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"api_key_required":{"value":{"ok":false,"error":"api_key_required","message":"A valid MMSx / MoPro API key is required for this endpoint."}},"invalid_api_key":{"value":{"ok":false,"error":"invalid_api_key","message":"The supplied API key is not valid."}},"expired_api_key":{"value":{"ok":false,"error":"expired_api_key","message":"This API key has expired."}},"revoked_api_key":{"value":{"ok":false,"error":"revoked_api_key","message":"This API key has been revoked."}}}}}},"403":{"description":"Key blocked, or endpoint not included in the current plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"endpoint_not_allowed_for_plan":{"value":{"ok":false,"error":"endpoint_not_allowed_for_plan","message":"This endpoint is not included in the current plan."}},"blocked_api_key":{"value":{"ok":false,"error":"blocked_api_key","message":"This API key has been blocked."}}}}}}}}},"/v3/plans":{"get":{"tags":["plans"],"summary":"Subscription plan catalogue","description":"Public. Quotas, burst limits and endpoint access levels for all six plans. Contains no secrets.","operationId":"listPlans","security":[],"responses":{"200":{"description":"Plan catalogue.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"},"examples":{"sample":{"value":{"ok":true,"plans":[{"plan":"Developer","monthly_limit":10000,"burst_per_minute":120,"description":"Build and integrate.","endpoint_access":{"exercise.search":"full","exercise.profile":"full","exercise.graph_domains":"basic"}}]}}}}}}}}}}}