{"version":"v1","title":"STRIDE public schemas","description":"Everything here is keyed by jersey number. STRIDE holds a stable per-player identifier and does not share it, so a player cannot be joined across sessions from this data: shirt 7 in September and shirt 7 in March may be different children. See docs/CONSUMERS.md.","schemas":{"session":"https://stride.nipomosoccer.com/schemas/v1/session.json","player_metrics":"https://stride.nipomosoccer.com/schemas/v1/player-metrics.json","team_summary":"https://stride.nipomosoccer.com/schemas/v1/team-summary.json"},"endpoints":{"session":"GET /v1/public/sessions/{session_id}","players":"GET /v1/public/sessions/{session_id}/players","team":"GET /v1/public/sessions/{session_id}/team","track":"GET /v1/public/sessions/{session_id}/track?player={player_number}","sessions_by_team":"GET /v1/public/sessions?team={team}"},"auth":"Authorization: Bearer <consumer token>. Refusals are 404.","notes":["Keyed by jersey number. No stable per-player identifier is published, by design.","Timestamps are the HUB monotonic counter in microseconds; convert with the session's started_wall_ms and started_gw_us.","Rows with different `algo` values are not comparable."]}