{"openapi":"3.1.0","info":{"title":"SportsPuff Sports Data API","description":"Scores, schedules, standings, and season info across 12 sports/leagues — MLB, NBA, NFL, NHL, WNBA, MLS, IPL, MLC, FIFA World Cup, ATP, WTA, and the UCI World Tour (Tour de France, Giro, classics). Responses available as JSON or plain text. Canonical routes live under /v1 with Accept-based content negotiation. Health snapshot at /v1/status.","version":"1.0.0"},"paths":{"/api/v1/debug/runtime":{"get":{"summary":"Debug Runtime Config","operationId":"debug_runtime_config_api_v1_debug_runtime_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Root","description":"Landing page.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/help":{"get":{"summary":"Help Html","description":"HTML formatted help page.","operationId":"help_html_help_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/help":{"get":{"summary":"Help Api","description":"JSON formatted help.","operationId":"help_api_api_help_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/help":{"get":{"summary":"Help Api V1","description":"JSON formatted help.","operationId":"help_api_v1_api_v1_help_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/curl/help":{"get":{"summary":"Help Curl","description":"Plain text formatted help.","operationId":"help_curl_curl_help_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/curl/v1/help":{"get":{"summary":"Help Curl V1","description":"Plain text formatted help.","operationId":"help_curl_v1_curl_v1_help_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v1/help":{"get":{"summary":"Help V1","description":"Canonical help endpoint negotiated via Accept.","operationId":"help_v1_v1_help_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/schedules/{date}":{"get":{"summary":"Get Schedules All Sports V1","description":"Canonical all-sports schedule endpoint negotiated via Accept.","operationId":"get_schedules_all_sports_v1_v1_schedules__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/schedules/all/{date}":{"get":{"summary":"Get Schedules All Sports V1 Compat","description":"Legacy alias for clients that send /v1/schedules/all/{date}.","operationId":"get_schedules_all_sports_v1_compat_v1_schedules_all__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scores/{date}":{"get":{"summary":"Get Scores All Sports V1","description":"Canonical all-sports scores endpoint negotiated via Accept.","operationId":"get_scores_all_sports_v1_v1_scores__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scores/all/{date}":{"get":{"summary":"Get Scores All Sports V1 Compat","description":"Legacy alias for clients that send /v1/scores/all/{date}.","operationId":"get_scores_all_sports_v1_compat_v1_scores_all__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedules/{date}":{"get":{"summary":"Get Schedules All Sports Api V1","description":"Get schedules for all sports in JSON format.","operationId":"get_schedules_all_sports_api_v1_api_v1_schedules__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllSportsScheduleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedules/all/{date}":{"get":{"summary":"Get Schedules All Sports Api V1 Compat","description":"Legacy alias for clients that send /api/v1/schedules/all/{date}.","operationId":"get_schedules_all_sports_api_v1_compat_api_v1_schedules_all__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllSportsScheduleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/curl/v1/schedules/{date}":{"get":{"summary":"Get Schedules All Sports Curl V1","description":"Get schedules for all sports in curl-style text format.","operationId":"get_schedules_all_sports_curl_v1_curl_v1_schedules__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific (default: Pacific)","title":"Tz"},"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/curl/v1/schedules/all/{date}":{"get":{"summary":"Get Schedules All Sports Curl V1 Compat","description":"Legacy alias for clients that send /curl/v1/schedules/all/{date}.","operationId":"get_schedules_all_sports_curl_v1_compat_curl_v1_schedules_all__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific (default: Pacific)","title":"Tz"},"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scores/{date}":{"get":{"summary":"Get Scores All Sports Api V1","description":"Get scores for all sports in JSON format.","operationId":"get_scores_all_sports_api_v1_api_v1_scores__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllSportsScoresResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scores/all/{date}":{"get":{"summary":"Get Scores All Sports Api V1 Compat","description":"Legacy alias for clients that send /api/v1/scores/all/{date}.","operationId":"get_scores_all_sports_api_v1_compat_api_v1_scores_all__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllSportsScoresResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/curl/v1/scores/{date}":{"get":{"summary":"Get Scores All Sports Curl V1","description":"Get scores for all sports in curl-style text format.","operationId":"get_scores_all_sports_curl_v1_curl_v1_scores__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific (default: Pacific)","title":"Tz"},"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/curl/v1/scores/all/{date}":{"get":{"summary":"Get Scores All Sports Curl V1 Compat","description":"Legacy alias for clients that send /curl/v1/scores/all/{date}.","operationId":"get_scores_all_sports_curl_v1_compat_curl_v1_scores_all__date__get","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific (default: Pacific)","title":"Tz"},"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schedule/{sport}/{date}":{"get":{"summary":"Get Schedule Api V1","description":"Get schedule in JSON format.","operationId":"get_schedule_api_v1_api_v1_schedule__sport___date__get","parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","description":"Sport (nba, mlb, nfl, nhl, wnba, all)","title":"Sport"},"description":"Sport (nba, mlb, nfl, nhl, wnba, all)"},{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/curl/v1/schedule/{sport}/{date}":{"get":{"summary":"Get Schedule Curl V1","description":"Get schedule in curl-style text format.","operationId":"get_schedule_curl_v1_curl_v1_schedule__sport___date__get","parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","description":"Sport (nba, mlb, nfl, nhl, wnba, all)","title":"Sport"},"description":"Sport (nba, mlb, nfl, nhl, wnba, all)"},{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific, akst/alaska, hst/hawaii (default: Pacific)","title":"Tz"},"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific, akst/alaska, hst/hawaii (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/schedule/{sport}/{date}":{"get":{"summary":"Get Schedule V1","description":"Canonical single-sport schedule endpoint negotiated via Accept.","operationId":"get_schedule_v1_v1_schedule__sport___date__get","parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","description":"Sport (nba, mlb, nfl, nhl, wnba, all)","title":"Sport"},"description":"Sport (nba, mlb, nfl, nhl, wnba, all)"},{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scores/{sport}/{date}":{"get":{"summary":"Get Scores Api V1","description":"Get scores in JSON format.","operationId":"get_scores_api_v1_api_v1_scores__sport___date__get","parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","description":"Sport (nba, mlb, nfl, nhl, wnba, all)","title":"Sport"},"description":"Sport (nba, mlb, nfl, nhl, wnba, all)"},{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoresResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/curl/v1/scores/{sport}/{date}":{"get":{"summary":"Get Scores Curl V1","description":"Get scores in curl-style text format.","operationId":"get_scores_curl_v1_curl_v1_scores__sport___date__get","parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","description":"Sport (nba, mlb, nfl, nhl, wnba, all)","title":"Sport"},"description":"Sport (nba, mlb, nfl, nhl, wnba, all)"},{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific (default: Pacific)","title":"Tz"},"description":"Timezone: et/est/eastern, pt/pst/pdt/pacific (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/scores/{sport}/{date}":{"get":{"summary":"Get Scores V1","description":"Canonical single-sport scores endpoint negotiated via Accept.","operationId":"get_scores_v1_v1_scores__sport___date__get","parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","description":"Sport (nba, mlb, nfl, nhl, wnba, all)","title":"Sport"},"description":"Sport (nba, mlb, nfl, nhl, wnba, all)"},{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, YYYYMMDD, M/D/YYYY, MM/DD/YYYY, or other formats"},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/standings/{sport}":{"get":{"summary":"Get Standings Api V1","description":"Get standings in JSON format.","operationId":"get_standings_api_v1_api_v1_standings__sport__get","parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","description":"Sport (nba, mlb, nfl, nhl, wnba, mls, ipl, mlc, all)","title":"Sport"},"description":"Sport (nba, mlb, nfl, nhl, wnba, mls, ipl, mlc, all)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/curl/v1/standings/{sport}":{"get":{"summary":"Get Standings Curl V1","description":"Get standings in curl-style text format.","operationId":"get_standings_curl_v1_curl_v1_standings__sport__get","parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","description":"Sport (nba, mlb, nfl, nhl, wnba, mls, ipl, mlc, all)","title":"Sport"},"description":"Sport (nba, mlb, nfl, nhl, wnba, mls, ipl, mlc, all)"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/standings/{sport}":{"get":{"summary":"Get Standings V1","description":"Canonical standings endpoint negotiated via Accept.","operationId":"get_standings_v1_v1_standings__sport__get","parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","description":"Sport (nba, mlb, nfl, nhl, wnba, mls, ipl, mlc, all)","title":"Sport"},"description":"Sport (nba, mlb, nfl, nhl, wnba, mls, ipl, mlc, all)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/season-info/{league}":{"get":{"summary":"Get Season Info V1","description":"Canonical season-info endpoint.","operationId":"get_season_info_v1_v1_season_info__league__get","parameters":[{"name":"league","in":"path","required":true,"schema":{"type":"string","description":"League (mlb, nba, nfl, nhl, wnba)","title":"League"},"description":"League (mlb, nba, nfl, nhl, wnba)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/season-info/{league}":{"get":{"summary":"Get Season Info","description":"Get season phase dates for a league.","operationId":"get_season_info_api_v1_season_info__league__get","parameters":[{"name":"league","in":"path","required":true,"schema":{"type":"string","description":"League (mlb, nba, nfl, nhl, wnba)","title":"League"},"description":"League (mlb, nba, nfl, nhl, wnba)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeasonInfoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/world-cup/bracket":{"get":{"summary":"Get World Cup Bracket Api V1","description":"Get the World Cup knockout lattice in a frontend-friendly shape.","operationId":"get_world_cup_bracket_api_v1_api_v1_world_cup_bracket_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorldCupBracketResponse"}}}}}}},"/api/v1/cricket/{league}/season":{"get":{"summary":"Get Cricket Season","description":"Full enriched season feed (every match with raw per-inning scores,\nstandings, and CricAPI usage). Lets CricketPuff source its schedule cache\nfrom here instead of calling CricAPI directly.","operationId":"get_cricket_season_api_v1_cricket__league__season_get","parameters":[{"name":"league","in":"path","required":true,"schema":{"type":"string","description":"Cricket league (ipl, mlc)","title":"League"},"description":"Cricket league (ipl, mlc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CricketSeasonResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health Check","description":"Health check endpoint.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthOut"}}}}}}},"/api/v1/status":{"get":{"summary":"Api Status Json","description":"JSON snapshot of upstream + own-endpoint health.","operationId":"api_status_json_api_v1_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}}}}},"/curl/v1/status":{"get":{"summary":"Api Status Curl","description":"Plain-text status table for terminal use.","operationId":"api_status_curl_curl_v1_status_get","parameters":[{"name":"only","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter rows: errors, warnings, all (default all)","title":"Only"},"description":"Filter rows: errors, warnings, all (default all)"}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/status":{"get":{"summary":"Api Status V1","description":"Canonical status endpoint negotiated via Accept.","operationId":"api_status_v1_v1_status_get","parameters":[{"name":"only","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter rows: errors, warnings, all (default all)","title":"Only"},"description":"Filter rows: errors, warnings, all (default all)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/status":{"get":{"summary":"Api Status Page","description":"HTML status page (upstreams + per-endpoint health).","operationId":"api_status_page_status_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/v1/debug/{sport}/{date}":{"get":{"summary":"Debug Schedule Data","description":"Debug endpoint to see raw schedule data.","operationId":"debug_schedule_data_api_v1_debug__sport___date__get","parameters":[{"name":"sport","in":"path","required":true,"schema":{"type":"string","description":"Sport (nba, mlb, nfl, nhl, wnba)","title":"Sport"},"description":"Sport (nba, mlb, nfl, nhl, wnba)"},{"name":"date","in":"path","required":true,"schema":{"type":"string","description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, etc.","title":"Date"},"description":"Date: today/tomorrow/yesterday, YYYY-MM-DD, etc."},{"name":"tz","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone for relative dates (default: Pacific)","title":"Tz"},"description":"Timezone for relative dates (default: Pacific)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/{path}":{"get":{"summary":"Api Catch All","description":"Catch-all for unknown /api/ paths - returns JSON help.","operationId":"api_catch_all_api__path__get","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/curl/{path}":{"get":{"summary":"Curl Catch All","description":"Catch-all for unknown /curl/ paths - returns plain text help.","operationId":"curl_catch_all_curl__path__get","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AllSportsScheduleResponse":{"properties":{"date":{"type":"string","title":"Date"},"sports":{"additionalProperties":{"items":{"$ref":"#/components/schemas/GameOut"},"type":"array"},"type":"object","title":"Sports","description":"Per-sport game lists keyed by sport slug (mlb, nba, ...)."}},"additionalProperties":true,"type":"object","required":["date","sports"],"title":"AllSportsScheduleResponse","description":"Response from GET /v1/schedules/{date} (canonical all-sports route)."},"AllSportsScoresResponse":{"properties":{"date":{"type":"string","title":"Date"},"sports":{"additionalProperties":{"items":{"$ref":"#/components/schemas/GameOut"},"type":"array"},"type":"object","title":"Sports","description":"Per-sport game lists keyed by sport slug (mlb, nba, ...)."}},"additionalProperties":true,"type":"object","required":["date","sports"],"title":"AllSportsScoresResponse","description":"Response from GET /v1/scores/{date} (canonical all-sports route)."},"CricketSeasonApiStats":{"properties":{"hits_today":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hits Today"},"hits_used":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hits Used"},"hits_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hits Limit"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},"additionalProperties":true,"type":"object","title":"CricketSeasonApiStats"},"CricketSeasonResponse":{"properties":{"league":{"type":"string","title":"League"},"series_id":{"type":"string","title":"Series Id"},"series_name":{"type":"string","title":"Series Name"},"live":{"type":"boolean","title":"Live","description":"True when the response contains a loaded season payload; false only for explicit off-season success responses."},"matches":{"items":{"$ref":"#/components/schemas/GameOut"},"type":"array","title":"Matches"},"standings":{"items":{"$ref":"#/components/schemas/StandingsTeamOut"},"type":"array","title":"Standings"},"api_stats":{"$ref":"#/components/schemas/CricketSeasonApiStats"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"\"ok\" | \"off_season\""},"stale":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stale"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"additionalProperties":true,"type":"object","required":["league","series_id","series_name","live","matches","standings","api_stats"],"title":"CricketSeasonResponse","description":"Bulk feed at /api/v1/cricket/{league}/season — what CricketPuff consumes."},"CricketStartTime":{"properties":{"local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Local","description":"Local-timezone start time (per-request tz)."},"pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pt","description":"Pacific time start time."},"utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utc","description":"UTC start time."},"ist":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ist","description":"India Standard Time start time."}},"additionalProperties":true,"type":"object","title":"CricketStartTime"},"EndpointMeta":{"properties":{"as_of":{"type":"string","title":"As Of","description":"ISO-8601 UTC timestamp the payload should be considered current for."},"fetched_at":{"type":"string","title":"Fetched At","description":"ISO-8601 UTC timestamp when the API fetched or assembled this payload."},"cache_age_seconds":{"type":"integer","title":"Cache Age Seconds","description":"Age of the cached payload at response time."},"stale":{"type":"boolean","title":"Stale","description":"True when the payload is older than the normal freshness target for this endpoint."},"empty_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Empty State","description":"\"real_empty\" when an empty payload is intentional, \"suspect_empty\" when upstream returned empty unexpectedly."},"source_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Updated At","description":"Upstream/source update timestamp when available."}},"additionalProperties":true,"type":"object","required":["as_of","fetched_at","cache_age_seconds","stale"],"title":"EndpointMeta"},"GameOut":{"properties":{"game_id":{"type":"string","title":"Game Id"},"game_date":{"type":"string","title":"Game Date","description":"ISO date YYYY-MM-DD in the requesting timezone."},"game_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Time","description":"ISO 8601 timestamp UTC."},"game_status":{"type":"string","title":"Game Status","description":"\"scheduled\" | \"in_progress\" | \"final\" | \"postponed\""},"game_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Type","description":"regular | preseason | playoffs | one_day | stage | match | group_matchday_1 | round_of_16 | etc."},"is_final":{"type":"boolean","title":"Is Final","default":false},"is_overtime":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Overtime","default":false},"home_team":{"type":"string","title":"Home Team"},"home_team_abbrev":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Home Team Abbrev","default":""},"home_team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Home Team Id","default":""},"visitor_team":{"type":"string","title":"Visitor Team"},"visitor_team_abbrev":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Team Abbrev","default":""},"visitor_team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Team Id","default":""},"home_score":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Home Score","description":"Integer for most sports; cricket may use string like '161' or '161/3 (19.5 ov)'.","default":0},"visitor_score":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Visitor Score","description":"Integer for most sports; cricket may use string.","default":0},"home_wins":{"type":"integer","title":"Home Wins","default":0},"home_losses":{"type":"integer","title":"Home Losses","default":0},"home_otl":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Home Otl"},"home_draws":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Home Draws"},"visitor_wins":{"type":"integer","title":"Visitor Wins","default":0},"visitor_losses":{"type":"integer","title":"Visitor Losses","default":0},"visitor_otl":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Otl"},"visitor_draws":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Draws"},"current_period":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Period","default":""},"time_remaining":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Remaining","default":""},"venue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Venue"},"home_team_badge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Home Team Badge","description":"URL to the team's logo/badge."},"visitor_team_badge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visitor Team Badge"},"league_badge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"League Badge"},"home_period_scores":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Home Period Scores","description":"Per-period score dict; key shape varies per league."},"visitor_period_scores":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Visitor Period Scores"},"home_shootout_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Home Shootout Score","description":"Penalty shootout score for soccer knockout matches."},"visitor_shootout_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Shootout Score"},"box_score":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Box Score"},"is_playoff":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Playoff","description":"True when this game is a playoff/knockout match."},"series_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Series Summary","description":"ESPN-derived series summary, e.g. \"NY leads series 1-0\"."},"series_round":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Series Round","description":"Round name, e.g. \"NBA Finals - Game 1\", \"Western Conference Finals - Game 7\"."},"series_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Series Total","description":"Best-of-N total games (e.g. 7 for NBA Finals)."},"series_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Series Completed"},"home_series_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Home Series Wins","description":"Wins in the current playoff series (not season)."},"home_series_losses":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Home Series Losses"},"visitor_series_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Series Wins"},"visitor_series_losses":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Series Losses"},"cricket_home_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cricket Home Score","description":"Run total or full format like '161/3 (19.5 ov)' during live matches."},"cricket_away_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cricket Away Score"},"cricket_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cricket Status","description":"Live status text, e.g. \"RCB need 12 runs in 18 balls\" or \"Final\"."},"cricket_venue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cricket Venue"},"cricket_winner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cricket Winner","description":"Abbreviation of the winning team for finished matches."},"cricket_start_time":{"anyOf":[{"$ref":"#/components/schemas/CricketStartTime"},{"type":"null"}]},"cricket_home_nr":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cricket Home Nr"},"cricket_away_nr":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cricket Away Nr"},"tennis_tournament":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tennis Tournament","description":"Parsed tournament name, e.g. \"Roland Garros\"."},"tennis_match_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tennis Match Label","description":"Full strEvent string from upstream."},"tennis_round":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Tennis Round","description":"Bracket round number from upstream."},"tennis_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tennis Country"},"tennis_video":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tennis Video"},"tennis_set_scores":{"anyOf":[{"items":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Tennis Set Scores"},"home_sets_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Home Sets Won"},"visitor_sets_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Sets Won"},"tennis_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tennis Summary"},"tennis_winner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tennis Winner"},"tournament_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Name"},"match_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Status"},"home_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Home Rank"},"visitor_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visitor Rank"},"player1_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player1 Name"},"player1_last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player1 Last Name"},"player1_seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Seed"},"player1_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Rank"},"player1_score":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Player1 Score"},"player1_sets_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Sets Won"},"player2_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player2 Name"},"player2_last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player2 Last Name"},"player2_seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player2 Seed"},"player2_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player2 Rank"},"player2_score":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Player2 Score"},"player2_sets_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player2 Sets Won"},"winner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner","description":"\"player1\" or \"player2\" once final."},"winner_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Name"},"venue_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Venue Name"},"court_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Court Name"},"tennis_score":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Tennis Score","description":"Combined block: {columns:[\"S1\",\"S2\"], player1:[...], player2:[...], winner:\"player1\"|\"player2\"}."},"cycling_race":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cycling Race","description":"Parsed race name, e.g. \"Tour de France\"."},"cycling_stage_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cycling Stage Label","description":"\"Stage 1\" / \"Prologue\" / \"\" for one-day classics."},"cycling_stage_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cycling Stage Number"},"cycling_event_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cycling Event Label"},"cycling_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cycling Country"},"cycling_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cycling Url"},"cycling_video":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cycling Video"},"cycling_winner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cycling Winner","description":"Stage winner or race winner when available."},"cycling_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cycling Rank","description":"General-classification or ranking position when available."},"race_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race Type"},"start_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start City"},"finish_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish City"},"wc_round":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Wc Round"},"wc_round_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wc Round Label","description":"group_matchday_{1,2,3} | round_of_16 | quarterfinal | semifinal | third_place | final"},"wc_winner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wc Winner","description":"Winner team name for final World Cup matches when available."}},"additionalProperties":true,"type":"object","required":["game_id","game_date","game_status","home_team","visitor_team"],"title":"GameOut","description":"One game/match/event across every sport. Sport-specific fields are\nall optional; v6 should look at `league` and the relevant prefixed\nfields (cricket_*, tennis_*, cycling_*, wc_*, series_*)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthOut":{"properties":{"status":{"type":"string","title":"Status","description":"Always \"healthy\" when the API is up."}},"additionalProperties":true,"type":"object","required":["status"],"title":"HealthOut"},"LastChampion":{"properties":{"team":{"type":"string","title":"Team","description":"Full team name of the previous champion."},"abbreviation":{"type":"string","title":"Abbreviation","description":"Standard abbreviation when known."},"year":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"Year","description":"Season identifier (int for single-year sports, string for split-year like NBA 2024-2025)."}},"additionalProperties":true,"type":"object","required":["team","abbreviation","year"],"title":"LastChampion"},"ResultMeta":{"properties":{"cached_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cached At"},"age_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age Seconds"},"ttl_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttl Seconds"},"stale":{"type":"boolean","title":"Stale","default":false},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"\"live\" | \"cache\" | \"db\""}},"additionalProperties":true,"type":"object","title":"ResultMeta"},"ResultRow":{"properties":{"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"category":{"type":"string","title":"Category","description":"\"ok\" | \"warning\" | \"error\""},"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Code"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"},"detail":{"type":"string","title":"Detail","default":""},"upstream":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upstream"},"meta":{"anyOf":[{"$ref":"#/components/schemas/ResultMeta"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["name","url","category"],"title":"ResultRow"},"ScheduleResponse":{"properties":{"sport":{"type":"string","title":"Sport"},"date":{"type":"string","title":"Date"},"games":{"items":{"$ref":"#/components/schemas/GameOut"},"type":"array","title":"Games"},"meta":{"anyOf":[{"$ref":"#/components/schemas/EndpointMeta"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["sport","date","games"],"title":"ScheduleResponse"},"ScoresResponse":{"properties":{"sport":{"type":"string","title":"Sport"},"date":{"type":"string","title":"Date"},"scores":{"items":{"$ref":"#/components/schemas/GameOut"},"type":"array","title":"Scores"},"meta":{"anyOf":[{"$ref":"#/components/schemas/EndpointMeta"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["sport","date","scores"],"title":"ScoresResponse"},"SeasonInfoResponse":{"properties":{"year":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"Year"},"current_phase":{"type":"string","title":"Current Phase","description":"Current phase name, e.g. \"Regular Season\" / \"Postseason\" / \"Off Season\" / \"Wimbledon\" (tennis) / \"Tour de France\" (cycling)."},"season_types":{"items":{"$ref":"#/components/schemas/SeasonTypeOut"},"type":"array","title":"Season Types"},"knockout_bracket":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Knockout Bracket","description":"World Cup knockout bracket lattice when available."},"last_champion":{"anyOf":[{"$ref":"#/components/schemas/LastChampion"},{"type":"null"}],"description":"Most recent champion when known."},"meta":{"anyOf":[{"$ref":"#/components/schemas/EndpointMeta"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["year","current_phase","season_types"],"title":"SeasonInfoResponse"},"SeasonTypeOut":{"properties":{"name":{"type":"string","title":"Name"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"}},"additionalProperties":true,"type":"object","required":["name","start_date","end_date"],"title":"SeasonTypeOut"},"StandingsResponse":{"properties":{"sport":{"type":"string","title":"Sport"},"teams":{"items":{"$ref":"#/components/schemas/StandingsTeamOut"},"type":"array","title":"Teams"},"groups":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Groups","description":"Grouped standings for tournaments such as the World Cup."},"knockout_bracket":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Knockout Bracket","description":"Knockout bracket slots and match data when applicable."},"available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Available","description":"False for sports with no league table (tennis, cycling)."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"meta":{"anyOf":[{"$ref":"#/components/schemas/EndpointMeta"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["sport","teams"],"title":"StandingsResponse"},"StandingsTeamOut":{"properties":{"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank"},"team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Name"},"abbreviation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abbreviation"},"record":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Record","description":"Sport-specific record string, e.g. \"32-15\", \"10-2-2\", or \"5-0-1\" (cricket: W-L-NR)."},"wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Wins"},"losses":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Losses"},"win_pct":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Win Pct"},"games_back":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Games Back"},"streak":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Streak"},"conference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conference"},"division":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Division"},"points":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Points"},"ties":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ties"},"ot":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ot"},"matches":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Matches"},"no_result":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"No Result"},"nrr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nrr","description":"Net run rate (cricket)."},"draws":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Draws"},"goals_for":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Goals For"},"goals_against":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Goals Against"},"goal_difference":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Goal Difference"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group","description":"World Cup group letter when applicable."},"group_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Group Rank","description":"Rank within World Cup group when applicable."},"currently_advancing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Currently Advancing","description":"True when the team is currently in a World Cup knockout-advancing position."},"advancement_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advancement Path","description":"\"top_two\" | \"best_third_place\" | \"not_advancing\" for World Cup group standings."},"third_place_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Third Place Rank","description":"Rank among third-place World Cup teams when applicable."}},"additionalProperties":true,"type":"object","title":"StandingsTeamOut","description":"Team row in a standings table. Sport-specific fields all optional."},"StatusResponse":{"properties":{"api_base_url":{"type":"string","title":"Api Base Url"},"checked_at":{"type":"string","title":"Checked At","description":"ISO-8601 UTC, ends with 'Z'."},"summary":{"$ref":"#/components/schemas/StatusSummary"},"upstreams":{"items":{"$ref":"#/components/schemas/UpstreamRow"},"type":"array","title":"Upstreams"},"results":{"items":{"$ref":"#/components/schemas/ResultRow"},"type":"array","title":"Results"}},"additionalProperties":true,"type":"object","required":["api_base_url","checked_at","summary","upstreams","results"],"title":"StatusResponse"},"StatusSummary":{"properties":{"error":{"type":"integer","title":"Error","default":0},"warning":{"type":"integer","title":"Warning","default":0},"ok":{"type":"integer","title":"Ok","default":0}},"additionalProperties":true,"type":"object","title":"StatusSummary"},"UpstreamRow":{"properties":{"name":{"type":"string","title":"Name"},"category":{"type":"string","title":"Category","description":"\"ok\" | \"warning\" | \"error\""},"last_success_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Success At"},"last_error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"age_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age Seconds"},"stale":{"type":"boolean","title":"Stale","default":false},"detail":{"type":"string","title":"Detail","default":""}},"additionalProperties":true,"type":"object","required":["name","category"],"title":"UpstreamRow"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WorldCupBracketResponse":{"properties":{"sport":{"type":"string","title":"Sport","default":"wc"},"knockout_bracket":{"type":"object","title":"Knockout Bracket"},"available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Available","description":"True when the bracket contains populated knockout slots or matches."},"source_updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Updated At"},"meta":{"anyOf":[{"$ref":"#/components/schemas/EndpointMeta"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["knockout_bracket"],"title":"WorldCupBracketResponse"}}}}