{"openapi":"3.1.0","info":{"title":"WagerWise Odds API","description":"Public V1 reference for customer-safe endpoints. Published families: meta, control, metadata, events, odds, racing-events, racing-odds, racing-results, bets, results. Only explicitly allowlisted operations are published here. Future endpoints remain hidden until they are added to PUBLIC_REFERENCE_FAMILIES in src/v1/app.py.","version":"1.0.0"},"paths":{"/":{"get":{"tags":["meta"],"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/me":{"get":{"tags":["control"],"summary":"Me","operationId":"me_me_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/usage":{"get":{"tags":["control"],"summary":"Usage","operationId":"usage_usage_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/limits":{"get":{"tags":["control"],"summary":"Limits","operationId":"limits_limits_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sports":{"get":{"tags":["metadata"],"summary":"Sports","operationId":"sports_sports_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leagues":{"get":{"tags":["metadata"],"summary":"Leagues","operationId":"leagues_leagues_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"sport","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sport"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bookmakers":{"get":{"tags":["metadata"],"summary":"Bookmakers","operationId":"bookmakers_bookmakers_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bookmaker-registry":{"get":{"tags":["metadata"],"summary":"Bookmaker Registry","operationId":"bookmaker_registry_bookmaker_registry_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sports-master":{"get":{"tags":["metadata"],"summary":"Sports Master","operationId":"sports_master_sports_master_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/active-countries":{"get":{"tags":["metadata"],"summary":"Active Countries","operationId":"active_countries_active_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/message-board":{"get":{"tags":["metadata"],"summary":"Message Board","operationId":"message_board_message_board_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/service-status":{"get":{"tags":["metadata"],"summary":"Service Status","operationId":"service_status_service_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/racing/settings":{"get":{"tags":["metadata"],"summary":"Racing Settings","operationId":"racing_settings_racing_settings_get","parameters":[{"name":"document_type","in":"query","required":false,"schema":{"type":"string","default":"user_facing","title":"Document Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/racing/shared-odds-bookmaker-map":{"get":{"tags":["metadata"],"summary":"Racing Shared Odds Bookmaker Map","operationId":"racing_shared_odds_bookmaker_map_racing_shared_odds_bookmaker_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/racing/back-lay-conversions":{"get":{"tags":["metadata"],"summary":"Racing Back Lay Conversions","operationId":"racing_back_lay_conversions_racing_back_lay_conversions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bookmaker-ratings":{"get":{"tags":["metadata"],"summary":"Bookmaker Ratings","operationId":"bookmaker_ratings_bookmaker_ratings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/events":{"get":{"tags":["events"],"summary":"List Events","operationId":"list_events_events_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"sport","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sport"}},{"name":"league","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"League"}},{"name":"start_from","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Unix seconds; default now.","title":"Start From"},"description":"Unix seconds; default now."},{"name":"start_to","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Unix seconds; optional.","title":"Start To"},"description":"Unix seconds; optional."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination cursor: 'start_time:event_id'.","title":"Cursor"},"description":"Pagination cursor: 'start_time:event_id'."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/events/previews":{"post":{"tags":["events"],"summary":"Event Previews","operationId":"event_previews_events_previews_post","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventPreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventPreviewsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/events/{event_id}":{"get":{"tags":["events"],"summary":"Get Event","operationId":"get_event_events__event_id__get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/events/{event_id}/bookmakers":{"get":{"tags":["events"],"summary":"Event Bookmakers","operationId":"event_bookmakers_events__event_id__bookmakers_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookmakersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/events/{event_id}/odds/snapshot":{"get":{"tags":["odds"],"summary":"Odds Snapshot","operationId":"odds_snapshot_events__event_id__odds_snapshot_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":2000,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Redis HSCAN cursor","title":"Cursor"},"description":"Redis HSCAN cursor"},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated bookmaker allow-list","title":"Bookmakers"},"description":"Comma-separated bookmaker allow-list"},{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated type allow-list","title":"Types"},"description":"Comma-separated type allow-list"},{"name":"market_keys","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated market_key allow-list","title":"Market Keys"},"description":"Comma-separated market_key allow-list"},{"name":"periods","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated periods allow-list","title":"Periods"},"description":"Comma-separated periods allow-list"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OddsSnapshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/events/{event_id}/odds/stream":{"get":{"tags":["odds"],"summary":"Odds Stream","operationId":"odds_stream_events__event_id__odds_stream_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated bookmaker allow-list","title":"Bookmakers"},"description":"Comma-separated bookmaker allow-list"},{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated type allow-list","title":"Types"},"description":"Comma-separated type allow-list"},{"name":"market_keys","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated market_key allow-list","title":"Market Keys"},"description":"Comma-separated market_key allow-list"},{"name":"periods","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated periods allow-list","title":"Periods"},"description":"Comma-separated periods allow-list"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Redis stream ID","title":"Since"},"description":"Redis stream ID"},{"name":"catchup","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Catchup"}},{"name":"heartbeat_sec","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":5,"default":15,"title":"Heartbeat Sec"}},{"name":"max_batch","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Max Batch"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/events/{event_id}/odds/history/stream":{"get":{"tags":["odds"],"summary":"Odds History Stream","operationId":"odds_history_stream_events__event_id__odds_history_stream_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"selection_key","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Selection Key"}},{"name":"market_group_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Group Id"}},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated bookmaker allow-list","title":"Bookmakers"},"description":"Comma-separated bookmaker allow-list"},{"name":"price_type","in":"query","required":false,"schema":{"type":"string","pattern":"^(odds|odds_no_vig|fair_odds)$","default":"odds_no_vig","title":"Price Type"}},{"name":"include_unavailable","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Unavailable"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Redis stream ID","title":"Since"},"description":"Redis stream ID"},{"name":"catchup","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Catchup"}},{"name":"heartbeat_sec","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":5,"default":15,"title":"Heartbeat Sec"}},{"name":"max_batch","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Max Batch"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/events/{event_id}/odds/history":{"get":{"tags":["odds"],"summary":"Odds History","operationId":"odds_history_events__event_id__odds_history_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"selection_key","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Selection Key"}},{"name":"market_group_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Group Id"}},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated bookmaker allow-list","title":"Bookmakers"},"description":"Comma-separated bookmaker allow-list"},{"name":"from_ts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO8601 UTC start","title":"From Ts"},"description":"ISO8601 UTC start"},{"name":"to_ts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO8601 UTC end","title":"To Ts"},"description":"ISO8601 UTC end"},{"name":"price_type","in":"query","required":false,"schema":{"type":"string","pattern":"^(odds|odds_no_vig|fair_odds)$","default":"odds","title":"Price Type"}},{"name":"include_unavailable","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Unavailable"}},{"name":"limit_points_per_bookmaker","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":2000,"title":"Limit Points Per Bookmaker"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OddsHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/odds/main-lines/snapshot":{"get":{"tags":["odds"],"summary":"Main Lines Snapshot","operationId":"main_lines_snapshot_odds_main_lines_snapshot_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"default":48,"title":"Window Hours"}},{"name":"featured_hours","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":6,"title":"Featured Hours"}},{"name":"featured_limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":12,"title":"Featured Limit"}},{"name":"max_events","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Max Events"}},{"name":"leagues","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated league names (exact, case-insensitive).","title":"Leagues"},"description":"Comma-separated league names (exact, case-insensitive)."},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated bookmaker allow-list.","title":"Bookmakers"},"description":"Comma-separated bookmaker allow-list."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MainLinesSnapshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/odds/main-lines/stream":{"get":{"tags":["odds"],"summary":"Main Lines Stream","operationId":"main_lines_stream_odds_main_lines_stream_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"default":48,"title":"Window Hours"}},{"name":"featured_hours","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":6,"title":"Featured Hours"}},{"name":"featured_limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":12,"title":"Featured Limit"}},{"name":"max_events","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Max Events"}},{"name":"leagues","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated league names (exact, case-insensitive).","title":"Leagues"},"description":"Comma-separated league names (exact, case-insensitive)."},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated bookmaker allow-list.","title":"Bookmakers"},"description":"Comma-separated bookmaker allow-list."},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Snapshot resume token.","title":"Since"},"description":"Snapshot resume token."},{"name":"catchup","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Catchup"}},{"name":"heartbeat_sec","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":5,"default":15,"title":"Heartbeat Sec"}},{"name":"max_batch","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Max Batch"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/odds/home/sports/snapshot":{"get":{"tags":["odds"],"summary":"Home Sports Snapshot","operationId":"home_sports_snapshot_odds_home_sports_snapshot_get","parameters":[{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"default":36,"title":"Window Hours"}},{"name":"featured_hours","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":6,"title":"Featured Hours"}},{"name":"featured_limit","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":10,"title":"Featured Limit"}},{"name":"max_events","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":80,"title":"Max Events"}},{"name":"leagues","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated league names (exact, case-insensitive).","title":"Leagues"},"description":"Comma-separated league names (exact, case-insensitive)."},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated bookmaker allow-list.","title":"Bookmakers"},"description":"Comma-separated bookmaker allow-list."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeSportsSnapshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/odds/home/upcoming/snapshot":{"get":{"tags":["odds"],"summary":"Home Upcoming Snapshot","operationId":"home_upcoming_snapshot_odds_home_upcoming_snapshot_get","parameters":[{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"default":36,"title":"Window Hours"}},{"name":"featured_hours","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":6,"title":"Featured Hours"}},{"name":"min_events","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":5,"title":"Min Events"}},{"name":"max_events","in":"query","required":false,"schema":{"type":"integer","maximum":40,"minimum":1,"default":12,"title":"Max Events"}},{"name":"candidate_pool","in":"query","required":false,"schema":{"type":"integer","maximum":400,"minimum":20,"default":120,"title":"Candidate Pool"}},{"name":"priority_leagues","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated league names to prioritize for the first pass.","default":"NBA,NFL,MLB,EPL,AFL,NRL,NHL,Serie A","title":"Priority Leagues"},"description":"Comma-separated league names to prioritize for the first pass."},{"name":"preferred_bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated bookmaker preference list (best-effort preference, not strict final filter).","title":"Preferred Bookmakers"},"description":"Comma-separated bookmaker preference list (best-effort preference, not strict final filter)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeUpcomingSportsSnapshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/odds/home/sports/stream":{"get":{"tags":["odds"],"summary":"Home Sports Stream","operationId":"home_sports_stream_odds_home_sports_stream_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"default":36,"title":"Window Hours"}},{"name":"featured_hours","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":6,"title":"Featured Hours"}},{"name":"featured_limit","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":10,"title":"Featured Limit"}},{"name":"max_events","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":80,"title":"Max Events"}},{"name":"leagues","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated league names (exact, case-insensitive).","title":"Leagues"},"description":"Comma-separated league names (exact, case-insensitive)."},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated bookmaker allow-list.","title":"Bookmakers"},"description":"Comma-separated bookmaker allow-list."},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Snapshot resume token.","title":"Since"},"description":"Snapshot resume token."},{"name":"catchup","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Catchup"}},{"name":"heartbeat_sec","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":5,"default":15,"title":"Heartbeat Sec"}},{"name":"max_batch","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Max Batch"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/odds/home/racing/snapshot":{"get":{"tags":["odds"],"summary":"Home Racing Snapshot","operationId":"home_racing_snapshot_odds_home_racing_snapshot_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"max_races","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":1,"default":8,"title":"Max Races"}},{"name":"max_selections","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":0,"default":5,"title":"Max Selections"}},{"name":"betfair_max_odds","in":"query","required":false,"schema":{"type":"number","maximum":200.0,"minimum":1.0,"default":100.0,"title":"Betfair Max Odds"}},{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","maximum":1440,"minimum":1,"default":72,"title":"Window Hours"}},{"name":"priority_tracks","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated race tracks to prioritize before fallback. Example: Randwick,Rosehill,Eagle Farm,Doomben,Flemington,Moonee Valley,Sandown,Caulfield,Ascot,Morphettville","title":"Priority Tracks"},"description":"Comma-separated race tracks to prioritize before fallback. Example: Randwick,Rosehill,Eagle Farm,Doomben,Flemington,Moonee Valley,Sandown,Caulfield,Ascot,Morphettville"},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HomeRacingSnapshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/odds/home/racing/stream":{"get":{"tags":["odds"],"summary":"Home Racing Stream","operationId":"home_racing_stream_odds_home_racing_stream_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"max_races","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":1,"default":8,"title":"Max Races"}},{"name":"max_selections","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":0,"default":5,"title":"Max Selections"}},{"name":"betfair_max_odds","in":"query","required":false,"schema":{"type":"number","maximum":200.0,"minimum":1.0,"default":100.0,"title":"Betfair Max Odds"}},{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","maximum":1440,"minimum":1,"default":72,"title":"Window Hours"}},{"name":"priority_tracks","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated race tracks to prioritize before fallback. Example: Randwick,Rosehill,Eagle Farm,Doomben,Flemington,Moonee Valley,Sandown,Caulfield,Ascot,Morphettville","title":"Priority Tracks"},"description":"Comma-separated race tracks to prioritize before fallback. Example: Randwick,Rosehill,Eagle Farm,Doomben,Flemington,Moonee Valley,Sandown,Caulfield,Ascot,Morphettville"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Snapshot resume token.","title":"Since"},"description":"Snapshot resume token."},{"name":"catchup","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Catchup"}},{"name":"heartbeat_sec","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":5,"default":15,"title":"Heartbeat Sec"}},{"name":"max_batch","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Max Batch"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bets/snapshot":{"get":{"tags":["bets"],"summary":"Snapshot","operationId":"snapshot_bets_snapshot_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"strategies","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated strategies or 'all'","default":"all","title":"Strategies"},"description":"Comma-separated strategies or 'all'"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"minimum":1,"default":2000,"title":"Limit"}},{"name":"event_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bets/hedge-save/options":{"post":{"tags":["bets"],"summary":"Hedge Save Options","operationId":"hedge_save_options_bets_hedge_save_options_post","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HedgeSaveOptionsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HedgeSaveOptionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bets/stream":{"get":{"tags":["bets"],"summary":"Stream","operationId":"stream_bets_stream_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"strategies","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"all","title":"Strategies"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Resume token from /snapshot (JSON mapping strategy->id)","title":"Since"},"description":"Resume token from /snapshot (JSON mapping strategy->id)"},{"name":"catchup","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Catchup"}},{"name":"heartbeat_sec","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":5,"default":15,"title":"Heartbeat Sec"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/events/{event_id}/results":{"get":{"tags":["results"],"summary":"Get Event Results","operationId":"get_event_results_events__event_id__results_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/results":{"post":{"tags":["results"],"summary":"Get Results Bulk","operationId":"get_results_bulk_results_post","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultsListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/racing/events":{"get":{"tags":["racing-events"],"summary":"List Racing Events","operationId":"list_racing_events_racing_events_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"race_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated race types.","title":"Race Type"},"description":"Comma-separated race types."},{"name":"race_state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated race states.","title":"Race State"},"description":"Comma-separated race states."},{"name":"race_country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated race countries.","title":"Race Country"},"description":"Comma-separated race countries."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated statuses.","title":"Status"},"description":"Comma-separated statuses."},{"name":"start_from","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Unix seconds; default now-900.","title":"Start From"},"description":"Unix seconds; default now-900."},{"name":"start_to","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Unix seconds; optional.","title":"Start To"},"description":"Unix seconds; optional."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination cursor: 'race_start_time:event_id'.","title":"Cursor"},"description":"Pagination cursor: 'race_start_time:event_id'."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RacingEventListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/racing/events/stream":{"get":{"tags":["racing-events"],"summary":"Stream Racing Events","operationId":"stream_racing_events_racing_events_stream_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Redis stream ID","title":"Since"},"description":"Redis stream ID"},{"name":"catchup","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Catchup"}},{"name":"heartbeat_sec","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":5,"default":15,"title":"Heartbeat Sec"}},{"name":"max_batch","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Max Batch"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/racing/events/{event_id}":{"get":{"tags":["racing-events"],"summary":"Get Racing Event","operationId":"get_racing_event_racing_events__event_id__get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RacingEventDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/racing/events/{event_id}/bookmakers":{"get":{"tags":["racing-events"],"summary":"Get Racing Event Bookmakers","operationId":"get_racing_event_bookmakers_racing_events__event_id__bookmakers_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RacingEventBookmakersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/racing/events/{event_id}/odds":{"get":{"tags":["racing-odds"],"summary":"Get Racing Odds Snapshot","operationId":"get_racing_odds_snapshot_racing_events__event_id__odds_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"bookmakers","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated bookmaker filter.","title":"Bookmakers"},"description":"Comma-separated bookmaker filter."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RacingOddsSnapshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/racing/events/{event_id}/odds/stream":{"get":{"tags":["racing-odds"],"summary":"Stream Racing Odds","operationId":"stream_racing_odds_racing_events__event_id__odds_stream_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Redis stream ID.","title":"Since"},"description":"Redis stream ID."},{"name":"catchup","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Catchup"}},{"name":"heartbeat_sec","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":5,"default":15,"title":"Heartbeat Sec"}},{"name":"max_batch","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Max Batch"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/racing/events/{event_id}/results":{"get":{"tags":["racing-results"],"summary":"Get Racing Event Results","operationId":"get_racing_event_results_racing_events__event_id__results_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RacingResultItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/racing/results":{"post":{"tags":["racing-results"],"summary":"Get Racing Results Bulk","operationId":"get_racing_results_bulk_racing_results_post","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}},{"name":"id_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"}},{"name":"access_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"}},{"name":"session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RacingResultsListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RacingResultsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AdminLifecycleForceDueRequest":{"properties":{"uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uid"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"campaign_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"}},"type":"object","title":"AdminLifecycleForceDueRequest"},"AdminLifecycleUserRequest":{"properties":{"uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uid"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"AdminLifecycleUserRequest"},"AdminMockPhoneVerifyRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"AdminMockPhoneVerifyRequest"},"AdminResetPhoneClaimRequest":{"properties":{"phone_number":{"type":"string","title":"Phone Number"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["phone_number"],"title":"AdminResetPhoneClaimRequest"},"AdminResetTrialStepsRequest":{"properties":{"email":{"type":"string","title":"Email"},"clear_bets":{"type":"boolean","title":"Clear Bets","default":true},"clear_push_tokens":{"type":"boolean","title":"Clear Push Tokens","default":true},"clear_progress_hints":{"type":"boolean","title":"Clear Progress Hints","default":true}},"type":"object","required":["email"],"title":"AdminResetTrialStepsRequest"},"AnalyticsBreakdownItem":{"properties":{"key":{"type":"string","title":"Key"},"bets_placed":{"type":"integer","title":"Bets Placed"},"bets_settled":{"type":"integer","title":"Bets Settled"},"amount_staked":{"type":"number","title":"Amount Staked"},"net_profit":{"type":"number","title":"Net Profit"},"roi_pct":{"type":"number","title":"Roi Pct"}},"type":"object","required":["key","bets_placed","bets_settled","amount_staked","net_profit","roi_pct"],"title":"AnalyticsBreakdownItem"},"AnalyticsBreakdownRequest":{"properties":{"filters":{"$ref":"#/components/schemas/AnalyticsFilters"},"dimension":{"type":"string","enum":["bet_group","sport","league","bet_type","period","bookmaker_name","result_status"],"title":"Dimension","default":"league"},"limit":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Limit","default":25}},"type":"object","title":"AnalyticsBreakdownRequest"},"AnalyticsBreakdownResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AnalyticsBreakdownItem"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"AnalyticsBreakdownResponse"},"AnalyticsFacetsResponse":{"properties":{"sports":{"items":{"type":"string"},"type":"array","title":"Sports"},"leagues":{"items":{"type":"string"},"type":"array","title":"Leagues"},"bookmakers":{"items":{"type":"string"},"type":"array","title":"Bookmakers"},"bet_groups":{"items":{"type":"string"},"type":"array","title":"Bet Groups"},"bet_types":{"items":{"type":"string"},"type":"array","title":"Bet Types"},"periods":{"items":{"type":"string"},"type":"array","title":"Periods"},"result_statuses":{"items":{"type":"string"},"type":"array","title":"Result Statuses"}},"type":"object","required":["sports","leagues","bookmakers","bet_groups","bet_types","periods","result_statuses"],"title":"AnalyticsFacetsResponse"},"AnalyticsFilters":{"properties":{"date_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"},"date_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"},"bet_group":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bet Group"},"sport":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sport"},"league":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"League"},"bookmaker_name":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bookmaker Name"},"bet_type":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bet Type"},"period":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Period"},"metric":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Metric"},"result_status":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Result Status"}},"type":"object","title":"AnalyticsFilters"},"AnalyticsPoint":{"properties":{"bucket":{"type":"string","title":"Bucket"},"bets_placed":{"type":"integer","title":"Bets Placed"},"bets_settled":{"type":"integer","title":"Bets Settled"},"amount_staked":{"type":"number","title":"Amount Staked"},"net_profit":{"type":"number","title":"Net Profit"},"roi_pct":{"type":"number","title":"Roi Pct"}},"type":"object","required":["bucket","bets_placed","bets_settled","amount_staked","net_profit","roi_pct"],"title":"AnalyticsPoint"},"AnalyticsTimeseriesRequest":{"properties":{"filters":{"$ref":"#/components/schemas/AnalyticsFilters"},"interval":{"type":"string","enum":["day","week","month"],"title":"Interval","default":"day"}},"type":"object","title":"AnalyticsTimeseriesRequest"},"AnalyticsTimeseriesResponse":{"properties":{"points":{"items":{"$ref":"#/components/schemas/AnalyticsPoint"},"type":"array","title":"Points"}},"type":"object","required":["points"],"title":"AnalyticsTimeseriesResponse"},"BookmakersResponse":{"properties":{"event_id":{"type":"string","title":"Event Id"},"items":{"items":{"type":"string"},"type":"array","title":"Items"}},"type":"object","required":["event_id","items"],"title":"BookmakersResponse"},"ChallengeCompleteRequest":{"properties":{"challenge_id":{"type":"string","enum":["quick_tour","learning_module","bookmakers_enabled","first_bet","push_enabled","discord_joined"],"title":"Challenge Id"}},"type":"object","required":["challenge_id"],"title":"ChallengeCompleteRequest"},"ChallengeGroups":{"properties":{"required":{"items":{"$ref":"#/components/schemas/ChallengeStatusItem"},"type":"array","title":"Required"},"optional":{"items":{"$ref":"#/components/schemas/ChallengeStatusItem"},"type":"array","title":"Optional"},"completed_required":{"type":"integer","title":"Completed Required","default":0},"total_required":{"type":"integer","title":"Total Required","default":0}},"type":"object","title":"ChallengeGroups"},"ChallengeStatusItem":{"properties":{"id":{"type":"string","enum":["quick_tour","learning_module","bookmakers_enabled","first_bet","push_enabled","discord_joined"],"title":"Id"},"title":{"type":"string","title":"Title"},"completed":{"type":"boolean","title":"Completed"},"optional":{"type":"boolean","title":"Optional","default":false},"action":{"type":"string","title":"Action"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["id","title","completed","action"],"title":"ChallengeStatusItem"},"EventDetail":{"properties":{"event_id":{"type":"string","title":"Event Id"},"data":{"additionalProperties":true,"type":"object","title":"Data"}},"type":"object","required":["event_id","data"],"title":"EventDetail"},"EventListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EventSummary"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["items","count"],"title":"EventListResponse"},"EventPreviewItem":{"properties":{"event_id":{"type":"string","title":"Event Id"},"opportunity_counts":{"$ref":"#/components/schemas/OpportunityCounts"},"bookmakers":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Bookmakers"}},"type":"object","required":["event_id"],"title":"EventPreviewItem"},"EventPreviewRequest":{"properties":{"event_ids":{"items":{"type":"string"},"type":"array","title":"Event Ids"}},"type":"object","title":"EventPreviewRequest"},"EventPreviewsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EventPreviewItem"},"type":"array","title":"Items"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["items","count"],"title":"EventPreviewsResponse"},"EventSummary":{"properties":{"event_id":{"type":"string","title":"Event Id","description":"Canonical event identifier (game_masterID)."},"sport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sport"},"league":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"League","description":"League name representation."},"start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time","description":"Unix seconds."},"home_team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Home Team"},"away_team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Away Team"},"last_capture":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Capture","description":"Unix seconds."},"bookmakers":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Bookmakers","description":"Bookmaker -> odds_data_id."}},"type":"object","required":["event_id"],"title":"EventSummary"},"FcmTokenDeleteRequest":{"properties":{"fcm_token":{"type":"string","title":"Fcm Token"}},"type":"object","required":["fcm_token"],"title":"FcmTokenDeleteRequest"},"FcmTokenUpsertRequest":{"properties":{"fcm_token":{"type":"string","title":"Fcm Token"},"device_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Type"}},"type":"object","required":["fcm_token"],"title":"FcmTokenUpsertRequest"},"GenericConfigPatchRequest":{"properties":{"payload":{"additionalProperties":true,"type":"object","title":"Payload"}},"type":"object","title":"GenericConfigPatchRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HedgeSaveBetContext":{"properties":{"market_type":{"type":"string","minLength":1,"title":"Market Type"},"selection_type":{"type":"string","minLength":1,"title":"Selection Type"},"period":{"type":"string","minLength":1,"title":"Period"},"target_line":{"type":"string","minLength":1,"title":"Target Line"},"target_bookmaker":{"type":"string","minLength":1,"title":"Target Bookmaker"},"selection_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selection Key"},"selection_key_by_leg":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Selection Key By Leg"},"exclude_bookmakers":{"items":{"type":"string"},"type":"array","title":"Exclude Bookmakers"},"target_market_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Market Key"},"target_side":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Side"}},"type":"object","required":["market_type","selection_type","period","target_line","target_bookmaker"],"title":"HedgeSaveBetContext"},"HedgeSaveMeta":{"properties":{"matching_mode":{"type":"string","title":"Matching Mode"},"show_other_list":{"type":"boolean","title":"Show Other List"},"country_code":{"type":"string","title":"Country Code"},"state_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State Code"},"enabled_count":{"type":"integer","title":"Enabled Count"},"other_count":{"type":"integer","title":"Other Count"}},"type":"object","required":["matching_mode","show_other_list","country_code","enabled_count","other_count"],"title":"HedgeSaveMeta"},"HedgeSaveOption":{"properties":{"bookmaker":{"type":"string","title":"Bookmaker"},"odds":{"type":"number","title":"Odds"},"line":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Line"},"side":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Side"},"market_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Key"},"selection_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selection Key"},"match_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Link"},"is_available":{"type":"boolean","title":"Is Available","default":true}},"type":"object","required":["bookmaker","odds"],"title":"HedgeSaveOption"},"HedgeSaveOptionsRequest":{"properties":{"strategy":{"type":"string","enum":["arbitrage","middle","bonus_conversion"],"title":"Strategy"},"event_id":{"type":"string","minLength":1,"title":"Event Id"},"target_leg":{"type":"string","minLength":1,"title":"Target Leg"},"bet_context":{"$ref":"#/components/schemas/HedgeSaveBetContext"},"enabled_bookmakers":{"items":{"type":"string"},"type":"array","title":"Enabled Bookmakers"},"country_code":{"type":"string","title":"Country Code","default":"AU"},"state_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State Code"},"limit_per_list":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Limit Per List","default":3}},"type":"object","required":["strategy","event_id","target_leg","bet_context"],"title":"HedgeSaveOptionsRequest"},"HedgeSaveOptionsResponse":{"properties":{"enabled_options":{"items":{"$ref":"#/components/schemas/HedgeSaveOption"},"type":"array","title":"Enabled Options"},"other_country_options":{"items":{"$ref":"#/components/schemas/HedgeSaveOption"},"type":"array","title":"Other Country Options"},"meta":{"$ref":"#/components/schemas/HedgeSaveMeta"}},"type":"object","required":["meta"],"title":"HedgeSaveOptionsResponse"},"HomeArbitrageSummary":{"properties":{"number_of_bets":{"type":"integer","title":"Number Of Bets","default":0},"total_arbitrage_percent":{"type":"number","title":"Total Arbitrage Percent","default":0.0},"total_profit_100_stake":{"type":"number","title":"Total Profit 100 Stake","default":0.0},"best_bets":{"items":{"type":"string"},"type":"array","title":"Best Bets"}},"type":"object","title":"HomeArbitrageSummary"},"HomeBestBetsRequest":{"properties":{"strategy":{"type":"string","enum":["pos_ev","arbitrage","middles","bonus_bets"],"title":"Strategy"},"bet_ids":{"items":{"type":"string"},"type":"array","title":"Bet Ids"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":24}},"type":"object","required":["strategy"],"title":"HomeBestBetsRequest"},"HomeBestBetsResponse":{"properties":{"as_of_ts_ms":{"type":"integer","title":"As Of Ts Ms"},"strategy":{"type":"string","enum":["pos_ev","arbitrage","middles","bonus_bets"],"title":"Strategy"},"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"source":{"type":"string","title":"Source","default":"unknown"},"source_table":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Table"}},"type":"object","required":["as_of_ts_ms","strategy"],"title":"HomeBestBetsResponse"},"HomeBonusBetsSummary":{"properties":{"number_of_bets_above_75":{"type":"integer","title":"Number Of Bets Above 75","default":0},"best_bets":{"items":{"type":"string"},"type":"array","title":"Best Bets"}},"type":"object","title":"HomeBonusBetsSummary"},"HomeMiddlesSummary":{"properties":{"number_of_bets_above_minus1p5":{"type":"integer","title":"Number Of Bets Above Minus1P5","default":0},"best_bets":{"items":{"type":"string"},"type":"array","title":"Best Bets"}},"type":"object","title":"HomeMiddlesSummary"},"HomePeriodSummary":{"properties":{"total_profit":{"type":"number","title":"Total Profit","default":0.0},"total_opportunities":{"type":"integer","title":"Total Opportunities","default":0},"arbitrage_profit":{"type":"number","title":"Arbitrage Profit","default":0.0},"pos_ev_profit":{"type":"number","title":"Pos Ev Profit","default":0.0},"arbitrage_opportunities":{"type":"integer","title":"Arbitrage Opportunities","default":0},"pos_ev_opportunities":{"type":"integer","title":"Pos Ev Opportunities","default":0},"middle_opportunities":{"type":"integer","title":"Middle Opportunities","default":0},"bonus_opportunities":{"type":"integer","title":"Bonus Opportunities","default":0}},"type":"object","title":"HomePeriodSummary"},"HomePositiveEvSummary":{"properties":{"average_ev":{"type":"number","title":"Average Ev","default":0.0},"average_fair_odds":{"type":"number","title":"Average Fair Odds","default":0.0},"average_odds":{"type":"number","title":"Average Odds","default":0.0},"max_ev_5k_bankroll":{"type":"number","title":"Max Ev 5K Bankroll","default":0.0},"number_of_bets":{"type":"integer","title":"Number Of Bets","default":0},"best_bets":{"items":{"type":"string"},"type":"array","title":"Best Bets"}},"type":"object","title":"HomePositiveEvSummary"},"HomeRacingEvent":{"properties":{"event_id":{"type":"string","title":"Event Id"},"race_start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Race Start Time"},"race_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race Type"},"race_venue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race Venue"},"race_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race Number"},"race_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race State"},"race_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race Country"},"selections":{"items":{"$ref":"#/components/schemas/HomeRacingSelection"},"type":"array","title":"Selections"}},"type":"object","required":["event_id"],"title":"HomeRacingEvent"},"HomeRacingSelection":{"properties":{"selection_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selection Number"},"selection_name":{"type":"string","title":"Selection Name"},"best_bookmaker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best Bookmaker"},"best_odds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Best Odds"},"best_bookmaker_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best Bookmaker Link"},"betfair_odds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Betfair Odds"},"betfair_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Betfair Link"}},"type":"object","required":["selection_name"],"title":"HomeRacingSelection"},"HomeRacingSnapshotResponse":{"properties":{"as_of_ts_ms":{"type":"integer","title":"As Of Ts Ms"},"events":{"items":{"$ref":"#/components/schemas/HomeRacingEvent"},"type":"array","title":"Events"},"resume":{"type":"string","title":"Resume"}},"type":"object","required":["as_of_ts_ms","resume"],"title":"HomeRacingSnapshotResponse"},"HomeResultsFeedResponse":{"properties":{"as_of_ts_ms":{"type":"integer","title":"As Of Ts Ms"},"daily":{"items":{"$ref":"#/components/schemas/HomeResultsPeriodItem"},"type":"array","title":"Daily"},"weekly":{"items":{"$ref":"#/components/schemas/HomeResultsPeriodItem"},"type":"array","title":"Weekly"},"source":{"type":"string","title":"Source","default":"unknown"},"daily_source":{"type":"string","title":"Daily Source","default":"unknown"},"weekly_source":{"type":"string","title":"Weekly Source","default":"unknown"},"daily_source_table":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Daily Source Table"},"weekly_source_table":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Weekly Source Table"}},"type":"object","required":["as_of_ts_ms"],"title":"HomeResultsFeedResponse"},"HomeResultsPeriodItem":{"properties":{"start_timestamp":{"type":"integer","title":"Start Timestamp","default":0},"positive_ev_summary":{"$ref":"#/components/schemas/HomePositiveEvSummary"},"arbitrage_summary":{"$ref":"#/components/schemas/HomeArbitrageSummary"},"middles_summary":{"$ref":"#/components/schemas/HomeMiddlesSummary"},"bonus_bets_summary":{"$ref":"#/components/schemas/HomeBonusBetsSummary"},"has_any_best_bets":{"type":"boolean","title":"Has Any Best Bets","default":false},"total_best_bets":{"type":"integer","title":"Total Best Bets","default":0},"source":{"type":"string","title":"Source","default":"unknown"}},"type":"object","title":"HomeResultsPeriodItem"},"HomeSportsBestBookmakers":{"properties":{"moneyline_home":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Moneyline Home"},"moneyline_away":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Moneyline Away"},"moneyline_draw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Moneyline Draw"},"handicap_home":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handicap Home"},"handicap_away":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handicap Away"},"total_over":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Total Over"},"total_under":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Total Under"}},"type":"object","title":"HomeSportsBestBookmakers"},"HomeSportsEvent":{"properties":{"event_id":{"type":"string","title":"Event Id"},"sport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sport"},"league":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"League"},"start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time"},"home_team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Home Team"},"away_team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Away Team"},"league_priority_rank":{"type":"integer","title":"League Priority Rank","default":999},"summary":{"$ref":"#/components/schemas/MainLinesSummary"},"best_bookmakers":{"$ref":"#/components/schemas/HomeSportsBestBookmakers"}},"type":"object","required":["event_id","summary"],"title":"HomeSportsEvent"},"HomeSportsSnapshotResponse":{"properties":{"as_of_ts_ms":{"type":"integer","title":"As Of Ts Ms"},"featured_event_ids":{"items":{"type":"string"},"type":"array","title":"Featured Event Ids"},"leagues":{"items":{"$ref":"#/components/schemas/MainLinesLeagueGroup"},"type":"array","title":"Leagues"},"events":{"items":{"$ref":"#/components/schemas/HomeSportsEvent"},"type":"array","title":"Events"},"resume":{"type":"string","title":"Resume"}},"type":"object","required":["as_of_ts_ms","resume"],"title":"HomeSportsSnapshotResponse"},"HomeSummaryResponse":{"properties":{"as_of_ts_ms":{"type":"integer","title":"As Of Ts Ms"},"user":{"anyOf":[{"$ref":"#/components/schemas/HomeUserSummary"},{"type":"null"}]},"yesterday":{"anyOf":[{"$ref":"#/components/schemas/HomePeriodSummary"},{"type":"null"}]},"weekly":{"anyOf":[{"$ref":"#/components/schemas/HomePeriodSummary"},{"type":"null"}]},"stale":{"type":"boolean","title":"Stale","default":false},"cache_hit":{"type":"boolean","title":"Cache Hit","default":false},"refresh_started":{"type":"boolean","title":"Refresh Started","default":false},"source":{"type":"string","title":"Source","description":"redis|recomputed|mixed","default":"redis"}},"type":"object","required":["as_of_ts_ms"],"title":"HomeSummaryResponse"},"HomeUpcomingSportsSnapshotResponse":{"properties":{"as_of_ts_ms":{"type":"integer","title":"As Of Ts Ms"},"event_ids":{"items":{"type":"string"},"type":"array","title":"Event Ids"},"featured_event_ids":{"items":{"type":"string"},"type":"array","title":"Featured Event Ids"},"events":{"items":{"$ref":"#/components/schemas/HomeSportsEvent"},"type":"array","title":"Events"},"resume":{"type":"string","title":"Resume"}},"type":"object","required":["as_of_ts_ms","resume"],"title":"HomeUpcomingSportsSnapshotResponse"},"HomeUserSummary":{"properties":{"total_profit":{"type":"number","title":"Total Profit","default":0.0},"pending_bets":{"type":"integer","title":"Pending Bets","default":0}},"type":"object","title":"HomeUserSummary"},"MainLinesEvent":{"properties":{"event_id":{"type":"string","title":"Event Id"},"sport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sport"},"league":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"League"},"start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time"},"home_team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Home Team"},"away_team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Away Team"},"league_priority_rank":{"type":"integer","title":"League Priority Rank","default":999},"lines":{"additionalProperties":true,"type":"object","title":"Lines"},"summary":{"$ref":"#/components/schemas/MainLinesSummary"},"last_capture":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Capture"}},"type":"object","required":["event_id","summary"],"title":"MainLinesEvent"},"MainLinesLeagueGroup":{"properties":{"league":{"type":"string","title":"League"},"league_priority_rank":{"type":"integer","title":"League Priority Rank","default":999},"event_ids":{"items":{"type":"string"},"type":"array","title":"Event Ids"}},"type":"object","required":["league"],"title":"MainLinesLeagueGroup"},"MainLinesSnapshotResponse":{"properties":{"as_of_ts_ms":{"type":"integer","title":"As Of Ts Ms"},"featured_event_ids":{"items":{"type":"string"},"type":"array","title":"Featured Event Ids"},"leagues":{"items":{"$ref":"#/components/schemas/MainLinesLeagueGroup"},"type":"array","title":"Leagues"},"events":{"items":{"$ref":"#/components/schemas/MainLinesEvent"},"type":"array","title":"Events"},"resume":{"type":"string","title":"Resume","description":"Pass as 'since' to /stream."}},"type":"object","required":["as_of_ts_ms","resume"],"title":"MainLinesSnapshotResponse"},"MainLinesSummary":{"properties":{"moneyline_home_best":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Moneyline Home Best"},"moneyline_away_best":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Moneyline Away Best"},"moneyline_draw_best":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Moneyline Draw Best"},"handicap_line":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Handicap Line"},"handicap_home_best":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Handicap Home Best"},"handicap_away_best":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Handicap Away Best"},"total_line":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Line"},"total_over_best":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Over Best"},"total_under_best":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Under Best"}},"type":"object","title":"MainLinesSummary"},"MePatchRequest":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"bankroll":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bankroll"},"marketing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Marketing"},"exp_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exp Level"},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"},"affiliate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Affiliate"},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"},"welcome_flow_email_stage":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Welcome Flow Email Stage"},"onboarding":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Onboarding"},"trial":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Trial"},"apple_userID":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apple Userid"}},"type":"object","title":"MePatchRequest"},"OddLine":{"properties":{"id":{"type":"string","title":"Id"},"event_id":{"type":"string","title":"Event Id"},"bookmaker":{"type":"string","title":"Bookmaker"},"selection_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selection Key"},"market_group_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Group Id"},"market_key":{"type":"string","title":"Market Key"},"type":{"type":"string","title":"Type"},"bet_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bet Type"},"period":{"type":"integer","title":"Period"},"period_str":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period Str"},"metric":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric"},"line":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Line"},"side":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Side"},"player_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player Name"},"selection_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selection Name"},"odds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Odds"},"odds_no_vig":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Odds No Vig"},"is_available":{"type":"boolean","title":"Is Available","default":true}},"type":"object","required":["id","event_id","bookmaker","market_key","type","period"],"title":"OddLine"},"OddsHistoryMeta":{"properties":{"from_ts":{"type":"string","format":"date-time","title":"From Ts"},"to_ts":{"type":"string","format":"date-time","title":"To Ts"},"available_price_types":{"items":{"type":"string"},"type":"array","title":"Available Price Types"}},"type":"object","required":["from_ts","to_ts","available_price_types"],"title":"OddsHistoryMeta"},"OddsHistoryPoint":{"properties":{"tick_ts":{"type":"string","format":"date-time","title":"Tick Ts"},"is_available":{"type":"boolean","title":"Is Available"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"odds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Odds"},"odds_no_vig":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Odds No Vig"},"fair_odds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fair Odds"}},"type":"object","required":["tick_ts","is_available"],"title":"OddsHistoryPoint"},"OddsHistoryResponse":{"properties":{"event_id":{"type":"string","title":"Event Id"},"selection_key":{"type":"string","title":"Selection Key"},"price_type":{"type":"string","title":"Price Type"},"series":{"items":{"$ref":"#/components/schemas/OddsHistorySeries"},"type":"array","title":"Series"},"meta":{"$ref":"#/components/schemas/OddsHistoryMeta"}},"type":"object","required":["event_id","selection_key","price_type","series","meta"],"title":"OddsHistoryResponse"},"OddsHistorySeries":{"properties":{"bookmaker_name":{"type":"string","title":"Bookmaker Name"},"points":{"items":{"$ref":"#/components/schemas/OddsHistoryPoint"},"type":"array","title":"Points"}},"type":"object","required":["bookmaker_name","points"],"title":"OddsHistorySeries"},"OddsSnapshotResponse":{"properties":{"event_id":{"type":"string","title":"Event Id"},"as_of_ts_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"As Of Ts Ms"},"ttl_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttl Seconds"},"items":{"items":{"$ref":"#/components/schemas/OddLine"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"resume":{"type":"string","title":"Resume","description":"Redis stream ID to resume from; pass as 'since' to /stream."}},"type":"object","required":["event_id","items","resume"],"title":"OddsSnapshotResponse"},"OpportunityCounts":{"properties":{"positive_ev":{"type":"integer","title":"Positive Ev","default":0},"arbitrage":{"type":"integer","title":"Arbitrage","default":0},"middle":{"type":"integer","title":"Middle","default":0},"bonus_conversion":{"type":"integer","title":"Bonus Conversion","default":0}},"type":"object","title":"OpportunityCounts"},"RaceWiseBetSubscriberRequest":{"properties":{"payload":{"additionalProperties":true,"type":"object","title":"Payload"}},"type":"object","title":"RaceWiseBetSubscriberRequest"},"RaceWiseSubscriptionRequest":{"properties":{"race_id":{"type":"string","title":"Race Id"}},"type":"object","required":["race_id"],"title":"RaceWiseSubscriptionRequest"},"RacingEventBookmakersResponse":{"properties":{"event_id":{"type":"string","title":"Event Id"},"items":{"items":{"type":"string"},"type":"array","title":"Items"}},"type":"object","required":["event_id"],"title":"RacingEventBookmakersResponse"},"RacingEventDetail":{"properties":{"event_id":{"type":"string","title":"Event Id"},"data":{"additionalProperties":true,"type":"object","title":"Data"}},"type":"object","required":["event_id","data"],"title":"RacingEventDetail"},"RacingEventListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RacingEventSummary"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["count"],"title":"RacingEventListResponse"},"RacingEventSummary":{"properties":{"event_id":{"type":"string","title":"Event Id","description":"Canonical racing event identifier (raceID)."},"race_start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Race Start Time","description":"Unix seconds."},"race_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race Type"},"race_venue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race Venue"},"race_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race Number"},"race_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race State"},"race_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race Country"},"race_distance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Race Distance"},"active_runners":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Active Runners"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"bookmaker_links":{"additionalProperties":true,"type":"object","title":"Bookmaker Links"},"scrapping_links":{"additionalProperties":true,"type":"object","title":"Scrapping Links"},"last_capture":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Capture","description":"Unix seconds."}},"type":"object","required":["event_id"],"title":"RacingEventSummary"},"RacingOddsBookmakerSnapshot":{"properties":{"bookmaker_name":{"type":"string","title":"Bookmaker Name"},"race_id":{"type":"string","title":"Race Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"updated_at_ts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At Ts"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"}},"type":"object","required":["bookmaker_name","race_id"],"title":"RacingOddsBookmakerSnapshot"},"RacingOddsSnapshotResponse":{"properties":{"event_id":{"type":"string","title":"Event Id"},"as_of_ts_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"As Of Ts Ms"},"ttl_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ttl Seconds"},"items":{"items":{"$ref":"#/components/schemas/RacingOddsBookmakerSnapshot"},"type":"array","title":"Items"},"resume":{"type":"string","title":"Resume","description":"Redis stream ID to resume from; pass as 'since' to /stream."}},"type":"object","required":["event_id","resume"],"title":"RacingOddsSnapshotResponse"},"RacingResultItem":{"properties":{"event_id":{"type":"string","title":"Event Id"},"status":{"type":"string","title":"Status","description":"available | pending"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"}},"type":"object","required":["event_id","status"],"title":"RacingResultItem"},"RacingResultsListRequest":{"properties":{"event_ids":{"items":{"type":"string"},"type":"array","title":"Event Ids"}},"type":"object","title":"RacingResultsListRequest"},"RacingResultsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RacingResultItem"},"type":"array","title":"Items"}},"type":"object","title":"RacingResultsListResponse"},"ResultItem":{"properties":{"event_id":{"type":"string","title":"Event Id"},"status":{"type":"string","title":"Status","description":"available|pending"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"}},"type":"object","required":["event_id","status"],"title":"ResultItem"},"ResultsListRequest":{"properties":{"event_ids":{"items":{"type":"string"},"type":"array","title":"Event Ids"}},"type":"object","title":"ResultsListRequest"},"ResultsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ResultItem"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"ResultsListResponse"},"SelectionRecord":{"properties":{"selection_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Selection Index"},"bookmaker_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bookmaker Name"},"match_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Link"},"line":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Line"},"line_repr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Line Repr"},"odds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Odds"},"stake":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stake"},"stake_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stake Mode"},"start_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Start Price"},"fair_odds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fair Odds"},"selection_result_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selection Result Status"}},"type":"object","title":"SelectionRecord"},"TrialStatusResponse":{"properties":{"eligible":{"type":"boolean","title":"Eligible","default":false},"can_activate":{"type":"boolean","title":"Can Activate","default":false},"is_active":{"type":"boolean","title":"Is Active","default":false},"status":{"type":"string","title":"Status","default":"not_started"},"block_reason":{"type":"string","title":"Block Reason","default":""},"phone_verified":{"type":"boolean","title":"Phone Verified","default":false},"trial":{"$ref":"#/components/schemas/TrialWindow"},"challenges":{"$ref":"#/components/schemas/ChallengeGroups"}},"type":"object","title":"TrialStatusResponse"},"TrialWindow":{"properties":{"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"seconds_remaining":{"type":"integer","title":"Seconds Remaining","default":0},"bonus_days_awarded":{"type":"integer","title":"Bonus Days Awarded","default":0}},"type":"object","title":"TrialWindow"},"UserBetDeleteRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"}},"type":"object","title":"UserBetDeleteRequest"},"UserBetGetResponse":{"properties":{"item":{"$ref":"#/components/schemas/UserBetRecord"}},"type":"object","required":["item"],"title":"UserBetGetResponse"},"UserBetListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/UserBetRecord"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"UserBetListResponse"},"UserBetPatchRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"},"patch":{"additionalProperties":true,"type":"object","title":"Patch"}},"type":"object","required":["patch"],"title":"UserBetPatchRequest"},"UserBetRecord":{"properties":{"user_id":{"type":"string","title":"User Id"},"bet_id":{"type":"string","title":"Bet Id"},"bet_group":{"type":"string","title":"Bet Group"},"sport":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sport"},"league":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"League"},"game_master_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Master Id"},"home_team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Home Team"},"away_team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Away Team"},"match_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Link"},"sofascore_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sofascore Url"},"bet_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bet Type"},"period":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period"},"metric":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metric"},"start_time_epoch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time Epoch"},"start_time_ts":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time Ts"},"time_placed_epoch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Time Placed Epoch"},"time_placed_ts":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Time Placed Ts"},"result_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Status"},"ev_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ev Percent"},"arbitrage_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Arbitrage Percent"},"middle_ql_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Middle Ql Percent"},"retention_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Retention Percent"},"bonus_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bonus Amount"},"confidence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Confidence"},"selections":{"items":{"$ref":"#/components/schemas/SelectionRecord"},"type":"array","title":"Selections"}},"type":"object","required":["user_id","bet_id","bet_group"],"title":"UserBetRecord"},"UserBetWriteRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"},"bet":{"$ref":"#/components/schemas/UserBetRecord"}},"type":"object","required":["bet"],"title":"UserBetWriteRequest"},"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"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"},"HTTPBearer":{"type":"http","scheme":"bearer"}}},"tags":[{"name":"meta"},{"name":"control"},{"name":"metadata"},{"name":"events"},{"name":"odds"},{"name":"racing-events"},{"name":"racing-odds"},{"name":"racing-results"},{"name":"bets"},{"name":"results"}],"x-public-reference-families":["meta","control","metadata","events","odds","racing-events","racing-odds","racing-results","bets","results"]}