{"openapi":"3.1.0","info":{"title":"Kriegspiel Chess API","description":"Public API for Kriegspiel.org. External clients should use https://api.kriegspiel.org with prefix-free paths. Authenticated bot calls use the bearer token returned by POST /auth/bots/register.","version":"1.5.8"},"paths":{"/analytics/visit":{"post":{"tags":["analytics"],"summary":"Record Campaign Visit","operationId":"record_campaign_visit_analytics_visit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignVisitRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignVisitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tech/acquisition-report":{"get":{"tags":["analytics"],"summary":"Get Acquisition Report","operationId":"get_acquisition_report_tech_acquisition_report_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":395,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcquisitionReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/auth/register":{"post":{"tags":["auth"],"summary":"Register","operationId":"register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/bots/register":{"post":{"tags":["auth"],"summary":"Register Bot","operationId":"register_bot_auth_bots_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotRegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotRegisterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/guest":{"post":{"tags":["auth"],"summary":"Login As Guest","operationId":"login_as_guest_auth_guest_post","responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestLoginResponse"}}}}}}},"/auth/guest/convert":{"post":{"tags":["auth"],"summary":"Convert Guest","operationId":"convert_guest_auth_guest_convert_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertGuestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertGuestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","operationId":"logout_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Logout Auth Logout Post"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me Auth Me Get"}}}}},"security":[{"BearerAuth":[]}]}},"/auth/session":{"get":{"tags":["auth"],"summary":"Session Status","operationId":"session_status_auth_session_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Session Status Auth Session Get"}}}}},"security":[{"BearerAuth":[]}]}},"/billing/subscription":{"get":{"tags":["billing"],"summary":"Get Subscription Status","operationId":"get_subscription_status_billing_subscription_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingStatusResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/billing/checkout-session":{"post":{"tags":["billing"],"summary":"Create Checkout Session","operationId":"create_checkout_session_billing_checkout_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCheckoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/billing/portal-session":{"post":{"tags":["billing"],"summary":"Create Portal Session","operationId":"create_portal_session_billing_portal_session_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPortalResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/billing/subscription-change-session":{"post":{"tags":["billing"],"summary":"Create Subscription Change Session","operationId":"create_subscription_change_session_billing_subscription_change_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSubscriptionChangeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPortalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/bots":{"get":{"tags":["bots"],"summary":"List Bots","operationId":"list_bots_bots_get","parameters":[{"name":"profile_username","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Username"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/bots/availability":{"post":{"tags":["bots"],"summary":"Report Bot Availability","operationId":"report_bot_availability_bots_availability_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotAvailabilityReportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotAvailabilityReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/bots/usage":{"post":{"tags":["bots"],"summary":"Report Bot Usage","operationId":"report_bot_usage_bots_usage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotUsageReportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotUsageReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/bots/profile":{"post":{"tags":["bots"],"summary":"Sync Bot Profile","operationId":"sync_bot_profile_bots_profile_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotProfileSyncRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotProfileSyncResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/create":{"post":{"tags":["game"],"summary":"Create Game","operationId":"create_game_game_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGameRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGameResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/join/{game_code}":{"post":{"tags":["game"],"summary":"Join Game","operationId":"join_game_game_join__game_code__post","parameters":[{"name":"game_code","in":"path","required":true,"schema":{"type":"string","title":"Game Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JoinGameResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/{game_id}/move":{"post":{"tags":["game"],"summary":"Move Game","operationId":"move_game_game__game_id__move_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/{game_id}/state":{"get":{"tags":["game"],"summary":"Get Game State","operationId":"get_game_state_game__game_id__state_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameStateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/{game_id}/public-status":{"get":{"tags":["game"],"summary":"Get Game Public Status","operationId":"get_game_public_status_game__game_id__public_status_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GamePublicStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/game/{game_id}/ask-any":{"post":{"tags":["game"],"summary":"Ask Any Game","operationId":"ask_any_game_game__game_id__ask_any_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskAnyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/{game_id}/events":{"get":{"tags":["game"],"summary":"Game Events","operationId":"game_events_game__game_id__events_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Game Events Game  Game Id  Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/open":{"get":{"tags":["game"],"summary":"Get Open Games","operationId":"get_open_games_game_open_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenGamesResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/game/stats":{"get":{"tags":["game"],"summary":"Get Lobby Stats","operationId":"get_lobby_stats_game_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LobbyStatsResponse"}}}}}}},"/game/mine/active":{"get":{"tags":["game"],"summary":"Get My Active Games","operationId":"get_my_active_games_game_mine_active_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyGamesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/mine/archived":{"get":{"tags":["game"],"summary":"Get My Archived Games","operationId":"get_my_archived_games_game_mine_archived_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyGamesResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/game/mine":{"get":{"tags":["game"],"summary":"Get My Games","operationId":"get_my_games_game_mine_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyGamesResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/game/{game_id}/moves":{"get":{"tags":["game"],"summary":"Get Game Transcript","operationId":"get_game_transcript_game__game_id__moves_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameTranscriptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/{game_id}/review":{"get":{"tags":["game"],"summary":"Get Game Review","operationId":"get_game_review_game__game_id__review_get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameReviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/recent":{"get":{"tags":["game"],"summary":"Get Recent Games","operationId":"get_recent_games_game_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecentGamesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/{game_id}":{"get":{"tags":["game"],"summary":"Get Game","operationId":"get_game_game__game_id__get","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GameMetadataResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]},"delete":{"tags":["game"],"summary":"Delete Waiting Game","operationId":"delete_waiting_game_game__game_id__delete","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Delete Waiting Game Game  Game Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/game/{game_id}/resign":{"post":{"tags":["game"],"summary":"Resign Game","operationId":"resign_game_game__game_id__resign_post","parameters":[{"name":"game_id","in":"path","required":true,"schema":{"type":"string","title":"Game Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Resign Game Game  Game Id  Resign Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/tutor/profile":{"get":{"tags":["tutor"],"summary":"Get Tutor Profile","operationId":"get_tutor_profile_tutor_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TutorProfileResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/tutor/games/{game_code}":{"get":{"tags":["tutor"],"summary":"Get Tutor Game","operationId":"get_tutor_game_tutor_games__game_code__get","parameters":[{"name":"game_code","in":"path","required":true,"schema":{"type":"string","title":"Game Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TutorGameResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/tutor/games/{game_code}/analysis":{"post":{"tags":["tutor"],"summary":"Generate Tutor Game Analysis","operationId":"generate_tutor_game_analysis_tutor_games__game_code__analysis_post","parameters":[{"name":"game_code","in":"path","required":true,"schema":{"type":"string","title":"Game Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TutorGameResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/tutor/games/{game_code}/feedback":{"post":{"tags":["tutor"],"summary":"Submit Tutor Feedback","operationId":"submit_tutor_feedback_tutor_games__game_code__feedback_post","parameters":[{"name":"game_code","in":"path","required":true,"schema":{"type":"string","title":"Game Code"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TutorFeedbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TutorFeedbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/user/{username}":{"get":{"tags":["user"],"summary":"Get Public Profile","operationId":"get_public_profile_user__username__get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Public Profile User  Username  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/{username}/games":{"get":{"tags":["user"],"summary":"Get User Games","operationId":"get_user_games_user__username__games_get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":100,"title":"Per Page"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(rule_set|color|opponent|result|reason|turns|played_at|review|none)$"},{"type":"null"}],"title":"Sort"}},{"name":"dir","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Dir"}},{"name":"rule_set","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Rule Set"}},{"name":"color","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Color"}},{"name":"opponent","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Opponent"}},{"name":"result","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Result"}},{"name":"reason","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Reason"}},{"name":"include_filter_options","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Filter Options"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Games User  Username  Games Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/{username}/games/filter-options":{"get":{"tags":["user"],"summary":"Get User Game Filter Options","operationId":"get_user_game_filter_options_user__username__games_filter_options_get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Game Filter Options User  Username  Games Filter Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/{username}/rating-history":{"get":{"tags":["user"],"summary":"Get User Rating History","operationId":"get_user_rating_history_user__username__rating_history_get","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string","title":"Username"}},{"name":"track","in":"query","required":false,"schema":{"type":"string","pattern":"^(overall|vs_humans|vs_bots)$","default":"overall","title":"Track"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":10,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Rating History User  Username  Rating History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/settings":{"patch":{"tags":["user"],"summary":"Patch User Settings","operationId":"patch_user_settings_user_settings_patch","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Patch User Settings User Settings Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/leaderboard":{"get":{"tags":["user"],"summary":"Get Leaderboard","operationId":"get_leaderboard_leaderboard_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Per Page"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(rank|username|type|overall|vs_humans|vs_bots|games|win_rate|none)$"},{"type":"null"}],"title":"Sort"}},{"name":"dir","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Dir"}},{"name":"username","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Username"}},{"name":"type","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Type"}},{"name":"include_filter_options","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Filter Options"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Leaderboard Leaderboard Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leaderboard/filter-options":{"get":{"tags":["user"],"summary":"Get Leaderboard Filter Options","operationId":"get_leaderboard_filter_options_leaderboard_filter_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Leaderboard Filter Options Leaderboard Filter Options Get"}}}}}}},"/tech/bots-report":{"get":{"tags":["user"],"summary":"Get Bots Report","operationId":"get_bots_report_tech_bots_report_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":31,"minimum":1,"default":10,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Bots Report Tech Bots Report Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/tech/bot-matrix-report":{"get":{"tags":["user"],"summary":"Get Bot Matrix Report","operationId":"get_bot_matrix_report_tech_bot_matrix_report_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(today|week|month|year|lifetime)$","default":"lifetime","title":"Period"}},{"name":"outcomes","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Outcomes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Bot Matrix Report Tech Bot Matrix Report Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]}]}},"/tech/guests-report":{"get":{"tags":["user"],"summary":"Get Guests Report","operationId":"get_guests_report_tech_guests_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Guests Report Tech Guests Report Get"}}}}},"security":[{"BearerAuth":[]}]}},"/tech/users-report":{"get":{"tags":["user"],"summary":"Get Users Report","operationId":"get_users_report_tech_users_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Users Report Tech Users Report Get"}}}}},"security":[{"BearerAuth":[]}]}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Health Get"}}}}}}}},"components":{"schemas":{"AcquisitionReportResponse":{"properties":{"days":{"type":"integer","title":"Days"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"rows":{"items":{"$ref":"#/components/schemas/AcquisitionReportRow"},"type":"array","title":"Rows"}},"type":"object","required":["days","generated_at","rows"],"title":"AcquisitionReportResponse"},"AcquisitionReportRow":{"properties":{"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"medium":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Medium"},"campaign":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign"},"visits":{"type":"integer","title":"Visits","default":0},"sessions":{"type":"integer","title":"Sessions","default":0},"acquired_users":{"type":"integer","title":"Acquired Users","default":0},"games_created":{"type":"integer","title":"Games Created","default":0},"games_completed":{"type":"integer","title":"Games Completed","default":0}},"type":"object","title":"AcquisitionReportRow"},"AnnouncementEntry":{"properties":{"kind":{"type":"string","enum":["move","ask_any","illegal_move","capture","status"],"title":"Kind"},"actor":{"anyOf":[{"type":"string","enum":["self","opponent"]},{"type":"null"}],"title":"Actor"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"message":{"type":"string","title":"Message"},"messages":{"items":{"type":"string"},"type":"array","title":"Messages"},"move_uci":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Move Uci"},"question_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Type"}},"additionalProperties":false,"type":"object","required":["kind","message"],"title":"AnnouncementEntry"},"AskAnyResponse":{"properties":{"move_done":{"type":"boolean","title":"Move Done"},"announcement":{"type":"string","title":"Announcement"},"special_announcement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Special Announcement"},"checks":{"items":{"type":"string"},"type":"array","title":"Checks"},"capture_square":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capture Square"},"captured_piece_announcement":{"anyOf":[{"type":"string","enum":["PAWN","PIECE","KNIGHT","BISHOP","ROOK","QUEEN"]},{"type":"null"}],"title":"Captured Piece Announcement"},"dropped_piece_announcement":{"anyOf":[{"type":"string","enum":["PAWN","PIECE","KNIGHT","BISHOP","ROOK","QUEEN"]},{"type":"null"}],"title":"Dropped Piece Announcement"},"en_passant_announced":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"En Passant Announced"},"promotion_announced":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Promotion Announced"},"next_turn_pawn_tries":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Next Turn Pawn Tries"},"next_turn_has_pawn_capture":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Next Turn Has Pawn Capture"},"next_turn_pawn_try_squares":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Turn Pawn Try Squares"},"turn":{"anyOf":[{"type":"string","enum":["white","black"]},{"type":"null"}],"title":"Turn"},"game_over":{"type":"boolean","title":"Game Over"},"clock":{"$ref":"#/components/schemas/ClockState"},"has_any":{"type":"boolean","title":"Has Any"}},"additionalProperties":false,"type":"object","required":["move_done","announcement","game_over","clock","has_any"],"title":"AskAnyResponse"},"AttributionUtm":{"properties":{"source":{"anyOf":[{"type":"string","maxLength":80,"minLength":1,"pattern":"^[a-zA-Z0-9_.:/@+\\-\\s]+$"},{"type":"null"}],"title":"Source"},"medium":{"anyOf":[{"type":"string","maxLength":80,"minLength":1,"pattern":"^[a-zA-Z0-9_.:/@+\\-\\s]+$"},{"type":"null"}],"title":"Medium"},"campaign":{"anyOf":[{"type":"string","maxLength":120,"minLength":1,"pattern":"^[a-zA-Z0-9_.:/@+\\-\\s]+$"},{"type":"null"}],"title":"Campaign"},"content":{"anyOf":[{"type":"string","maxLength":120,"minLength":1,"pattern":"^[a-zA-Z0-9_.:/@+\\-\\s]+$"},{"type":"null"}],"title":"Content"},"term":{"anyOf":[{"type":"string","maxLength":120,"minLength":1,"pattern":"^[a-zA-Z0-9_.:/@+\\-\\s]+$"},{"type":"null"}],"title":"Term"}},"type":"object","title":"AttributionUtm"},"BillingCheckoutRequest":{"properties":{"tier":{"type":"string","enum":["tier2","tier3","tier4","tier5"],"title":"Tier"},"interval":{"type":"string","enum":["monthly","yearly"],"title":"Interval"}},"type":"object","required":["tier","interval"],"title":"BillingCheckoutRequest"},"BillingCheckoutResponse":{"properties":{"client_secret":{"type":"string","title":"Client Secret"}},"type":"object","required":["client_secret"],"title":"BillingCheckoutResponse"},"BillingPortalResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"BillingPortalResponse"},"BillingStatusResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"publishable_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publishable Key"},"current_tier":{"type":"string","title":"Current Tier"},"available_prices":{"additionalProperties":{"additionalProperties":{"type":"boolean"},"type":"object"},"type":"object","title":"Available Prices"},"billing":{"additionalProperties":true,"type":"object","title":"Billing"}},"type":"object","required":["enabled","publishable_key","current_tier","available_prices","billing"],"title":"BillingStatusResponse"},"BillingSubscriptionChangeRequest":{"properties":{"tier":{"type":"string","enum":["tier2","tier3","tier4","tier5"],"title":"Tier"},"interval":{"type":"string","enum":["monthly","yearly"],"title":"Interval"}},"type":"object","required":["tier","interval"],"title":"BillingSubscriptionChangeRequest"},"BotAvailabilityReportRequest":{"properties":{"provider":{"type":"string","enum":["openai","anthropic","openrouter"],"title":"Provider"},"ready":{"type":"boolean","title":"Ready"},"reason":{"type":"string","maxLength":500,"title":"Reason","default":""}},"additionalProperties":false,"type":"object","required":["provider","ready"],"title":"BotAvailabilityReportRequest"},"BotAvailabilityReportResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"additionalProperties":false,"type":"object","title":"BotAvailabilityReportResponse"},"BotListItem":{"properties":{"bot_id":{"type":"string","title":"Bot Id"},"username":{"type":"string","title":"Username"},"display_name":{"type":"string","title":"Display Name"},"description":{"type":"string","title":"Description","default":""},"elo":{"type":"integer","title":"Elo","default":1200},"ratings":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"object","title":"Ratings"},"supported_rule_variants":{"items":{"type":"string"},"type":"array","title":"Supported Rule Variants"},"llm_backed":{"type":"boolean","title":"Llm Backed","default":false},"llm_reasoning_level":{"anyOf":[{"type":"string","enum":["none","enabled","low","medium","high","xhigh","max"]},{"type":"null"}],"title":"Llm Reasoning Level"},"required_tier":{"type":"string","enum":["guest","tier1","tier2","tier3","tier4","tier5","tier6"],"title":"Required Tier","default":"guest"},"available_for_viewer":{"type":"boolean","title":"Available For Viewer","default":true},"llm_bot_tier":{"anyOf":[{"type":"string","enum":["guest","tier1","tier2","tier3","tier4","tier5","tier6"]},{"type":"null"}],"title":"Llm Bot Tier"},"llm_bot_ply_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Llm Bot Ply Limit"},"llm_bot_limit_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Llm Bot Limit Label"}},"additionalProperties":false,"type":"object","required":["bot_id","username","display_name"],"title":"BotListItem"},"BotListResponse":{"properties":{"bots":{"items":{"$ref":"#/components/schemas/BotListItem"},"type":"array","title":"Bots"}},"additionalProperties":false,"type":"object","required":["bots"],"title":"BotListResponse"},"BotProfileSyncRequest":{"properties":{"username":{"anyOf":[{"type":"string","maxLength":33,"minLength":1,"pattern":"^[a-zA-Z0-9_]+$"},{"type":"null"}],"title":"Username"},"display_name":{"anyOf":[{"type":"string","maxLength":40,"minLength":3},{"type":"null"}],"title":"Display Name"},"description":{"anyOf":[{"type":"string","maxLength":280},{"type":"null"}],"title":"Description"},"author_note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Author Note"},"supported_rule_variants":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Supported Rule Variants"}},"additionalProperties":false,"type":"object","title":"BotProfileSyncRequest"},"BotProfileSyncResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true},"username":{"type":"string","title":"Username"},"display_name":{"type":"string","title":"Display Name"},"description":{"type":"string","title":"Description"},"author_note":{"type":"string","title":"Author Note"},"supported_rule_variants":{"items":{"type":"string"},"type":"array","title":"Supported Rule Variants"}},"additionalProperties":false,"type":"object","required":["username","display_name","description","author_note","supported_rule_variants"],"title":"BotProfileSyncResponse"},"BotRegisterRequest":{"properties":{"username":{"type":"string","maxLength":33,"minLength":1,"pattern":"^[a-zA-Z0-9_]+$","title":"Username"},"display_name":{"type":"string","maxLength":40,"minLength":3,"title":"Display Name"},"owner_email":{"type":"string","maxLength":320,"minLength":3,"title":"Owner Email"},"description":{"type":"string","maxLength":280,"title":"Description","default":""},"author_note":{"type":"string","maxLength":2000,"title":"Author Note","default":""},"listed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Listed"},"supported_rule_variants":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Supported Rule Variants"}},"type":"object","required":["username","display_name","owner_email"],"title":"BotRegisterRequest"},"BotRegisterResponse":{"properties":{"bot_id":{"type":"string","title":"Bot Id"},"username":{"type":"string","title":"Username"},"display_name":{"type":"string","title":"Display Name"},"owner_email":{"type":"string","title":"Owner Email"},"api_token":{"type":"string","title":"Api Token"},"message":{"type":"string","title":"Message","default":"Bot registered. Save this token now; it will not be shown again."}},"type":"object","required":["bot_id","username","display_name","owner_email","api_token"],"title":"BotRegisterResponse"},"BotUsageReportRequest":{"properties":{"game_id":{"type":"string","maxLength":80,"minLength":1,"title":"Game Id"},"game_code":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Game Code"},"provider":{"type":"string","maxLength":80,"minLength":1,"title":"Provider"},"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"},"response_id":{"anyOf":[{"type":"string","maxLength":240},{"type":"null"}],"title":"Response Id"},"input_tokens":{"type":"integer","minimum":0.0,"title":"Input Tokens","default":0},"cached_input_tokens":{"type":"integer","minimum":0.0,"title":"Cached Input Tokens","default":0},"output_tokens":{"type":"integer","minimum":0.0,"title":"Output Tokens","default":0},"cache_read_input_tokens":{"type":"integer","minimum":0.0,"title":"Cache Read Input Tokens","default":0},"cache_creation_input_tokens":{"type":"integer","minimum":0.0,"title":"Cache Creation Input Tokens","default":0},"total_tokens":{"type":"integer","minimum":0.0,"title":"Total Tokens","default":0},"cost_usd":{"type":"number","minimum":0.0,"title":"Cost Usd","default":0.0}},"additionalProperties":false,"type":"object","required":["game_id","provider","model"],"title":"BotUsageReportRequest"},"BotUsageReportResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"additionalProperties":false,"type":"object","title":"BotUsageReportResponse"},"CampaignVisitRequest":{"properties":{"landing_path":{"type":"string","maxLength":512,"minLength":1,"title":"Landing Path","default":"/"},"referrer_host":{"anyOf":[{"type":"string","maxLength":255,"minLength":1,"pattern":"^[a-zA-Z0-9_.:-]+$"},{"type":"null"}],"title":"Referrer Host"},"utm":{"$ref":"#/components/schemas/AttributionUtm"}},"type":"object","title":"CampaignVisitRequest"},"CampaignVisitResponse":{"properties":{"attribution_id":{"type":"string","title":"Attribution Id"},"cookie_max_age_seconds":{"type":"integer","title":"Cookie Max Age Seconds"}},"type":"object","required":["attribution_id","cookie_max_age_seconds"],"title":"CampaignVisitResponse"},"ClockState":{"properties":{"white_remaining":{"type":"number","minimum":0.0,"title":"White Remaining"},"black_remaining":{"type":"number","minimum":0.0,"title":"Black Remaining"},"active_color":{"anyOf":[{"type":"string","enum":["white","black"]},{"type":"null"}],"title":"Active Color"}},"additionalProperties":false,"type":"object","required":["white_remaining","black_remaining"],"title":"ClockState"},"ConvertGuestRequest":{"properties":{"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"},"password":{"type":"string","maxLength":512,"minLength":1,"title":"Password"}},"type":"object","required":["email","password"],"title":"ConvertGuestRequest"},"ConvertGuestResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"username":{"type":"string","title":"Username"},"message":{"type":"string","title":"Message","default":"Guest account converted. You can now log in with your email and password."}},"type":"object","required":["user_id","username"],"title":"ConvertGuestResponse"},"CreateGameRequest":{"properties":{"rule_variant":{"type":"string","enum":["berkeley","berkeley_any","cincinnati","wild16","rand","english","crazykrieg"],"title":"Rule Variant","default":"berkeley_any"},"play_as":{"type":"string","enum":["white","black","random"],"title":"Play As","default":"random"},"time_control":{"type":"string","const":"rapid","title":"Time Control","default":"rapid"},"opponent_type":{"type":"string","enum":["human","bot"],"title":"Opponent Type","default":"human"},"bot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Id"}},"additionalProperties":false,"type":"object","title":"CreateGameRequest"},"CreateGameResponse":{"properties":{"game_id":{"type":"string","title":"Game Id"},"game_code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^[2-9A-HJ-KM-NP-Z]{6}$","title":"Game Code"},"play_as":{"type":"string","enum":["white","black"],"title":"Play As"},"rule_variant":{"type":"string","enum":["berkeley","berkeley_any","cincinnati","wild16","rand","english","crazykrieg"],"title":"Rule Variant"},"state":{"type":"string","enum":["waiting","active"],"title":"State"},"join_url":{"type":"string","title":"Join Url"},"game_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Url"},"opponent_type":{"type":"string","enum":["human","bot"],"title":"Opponent Type","default":"human"},"bot":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Bot"}},"additionalProperties":false,"type":"object","required":["game_id","game_code","play_as","rule_variant","state","join_url"],"title":"CreateGameResponse"},"GameMetadataResponse":{"properties":{"game_id":{"type":"string","title":"Game Id"},"game_code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^[2-9A-HJ-KM-NP-Z]{6}$","title":"Game Code"},"rule_variant":{"type":"string","enum":["berkeley","berkeley_any","cincinnati","wild16","rand","english","crazykrieg"],"title":"Rule Variant"},"state":{"type":"string","enum":["waiting","active","completed"],"title":"State"},"opponent_type":{"type":"string","enum":["human","bot"],"title":"Opponent Type","default":"human"},"white":{"anyOf":[{"$ref":"#/components/schemas/PublicPlayer"},{"type":"null"}]},"black":{"anyOf":[{"$ref":"#/components/schemas/PublicPlayer"},{"type":"null"}]},"turn":{"anyOf":[{"type":"string","enum":["white","black"]},{"type":"null"}],"title":"Turn"},"move_number":{"type":"integer","minimum":1.0,"title":"Move Number"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"rating_snapshot":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Rating Snapshot"}},"additionalProperties":false,"type":"object","required":["game_id","game_code","rule_variant","state","move_number","created_at","updated_at"],"title":"GameMetadataResponse"},"GamePublicStatusResponse":{"properties":{"game_code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^[2-9A-HJ-KM-NP-Z]{6}$","title":"Game Code"},"state":{"type":"string","enum":["waiting","active","completed"],"title":"State"}},"additionalProperties":false,"type":"object","required":["game_code","state"],"title":"GamePublicStatusResponse"},"GameReviewResponse":{"properties":{"game":{"$ref":"#/components/schemas/GameMetadataResponse"},"transcript":{"$ref":"#/components/schemas/GameTranscriptResponse"}},"additionalProperties":false,"type":"object","required":["game","transcript"],"title":"GameReviewResponse"},"GameStateResponse":{"properties":{"game_id":{"type":"string","title":"Game Id"},"state":{"type":"string","enum":["waiting","active","completed"],"title":"State"},"turn":{"anyOf":[{"type":"string","enum":["white","black"]},{"type":"null"}],"title":"Turn"},"move_number":{"type":"integer","minimum":1.0,"title":"Move Number"},"ply_count":{"type":"integer","minimum":0.0,"title":"Ply Count","default":0},"llm_bot_tier":{"anyOf":[{"type":"string","enum":["guest","tier1","tier2","tier3","tier4","tier5","tier6"]},{"type":"null"}],"title":"Llm Bot Tier"},"llm_bot_ply_limit":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Llm Bot Ply Limit"},"llm_bot_turn_limit":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Llm Bot Turn Limit"},"your_color":{"type":"string","enum":["white","black"],"title":"Your Color"},"your_fen":{"type":"string","title":"Your Fen"},"allowed_moves":{"items":{"type":"string"},"type":"array","title":"Allowed Moves"},"material_summary":{"$ref":"#/components/schemas/MaterialSummary"},"reserve_summary":{"$ref":"#/components/schemas/ReserveSummary"},"scoresheet":{"$ref":"#/components/schemas/ViewerScoresheet"},"referee_log":{"items":{"$ref":"#/components/schemas/RefereeLogItem"},"type":"array","title":"Referee Log"},"referee_turns":{"items":{"$ref":"#/components/schemas/RefereeTurnEntry"},"type":"array","title":"Referee Turns"},"possible_actions":{"items":{"type":"string","enum":["move","ask_any"]},"type":"array","title":"Possible Actions"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"clock":{"$ref":"#/components/schemas/ClockState"}},"additionalProperties":false,"type":"object","required":["game_id","state","move_number","your_color","your_fen","material_summary","reserve_summary","scoresheet","referee_log","possible_actions","clock"],"title":"GameStateResponse"},"GameTranscriptResponse":{"properties":{"game_id":{"type":"string","title":"Game Id"},"rule_variant":{"type":"string","enum":["berkeley","berkeley_any","cincinnati","wild16","rand","english","crazykrieg"],"title":"Rule Variant"},"viewer_color":{"anyOf":[{"type":"string","enum":["white","black"]},{"type":"null"}],"title":"Viewer Color"},"moves":{"items":{"$ref":"#/components/schemas/TranscriptMoveItem"},"type":"array","title":"Moves"}},"additionalProperties":false,"type":"object","required":["game_id","rule_variant","moves"],"title":"GameTranscriptResponse"},"GuestLoginResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"username":{"type":"string","title":"Username"},"message":{"type":"string","title":"Message","default":"Guest account created. You are now logged in."}},"type":"object","required":["user_id","username"],"title":"GuestLoginResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JoinGameResponse":{"properties":{"game_id":{"type":"string","title":"Game Id"},"game_code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^[2-9A-HJ-KM-NP-Z]{6}$","title":"Game Code"},"play_as":{"type":"string","enum":["white","black"],"title":"Play As"},"rule_variant":{"type":"string","enum":["berkeley","berkeley_any","cincinnati","wild16","rand","english","crazykrieg"],"title":"Rule Variant"},"state":{"type":"string","const":"active","title":"State","default":"active"},"game_url":{"type":"string","title":"Game Url"}},"additionalProperties":false,"type":"object","required":["game_id","game_code","play_as","rule_variant","game_url"],"title":"JoinGameResponse"},"LobbyStatsResponse":{"properties":{"active_games_now":{"type":"integer","title":"Active Games Now","default":0},"completed_last_hour":{"type":"integer","title":"Completed Last Hour","default":0},"completed_last_24_hours":{"type":"integer","title":"Completed Last 24 Hours","default":0},"completed_total":{"type":"integer","title":"Completed Total","default":0}},"additionalProperties":false,"type":"object","title":"LobbyStatsResponse"},"LoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"LoginRequest"},"LoginResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"username":{"type":"string","title":"Username"}},"type":"object","required":["user_id","username"],"title":"LoginResponse"},"MaterialSideSummary":{"properties":{"pieces_remaining":{"type":"integer","minimum":0.0,"title":"Pieces Remaining"},"pawns_captured":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Pawns Captured"}},"additionalProperties":false,"type":"object","required":["pieces_remaining"],"title":"MaterialSideSummary"},"MaterialSummary":{"properties":{"white":{"$ref":"#/components/schemas/MaterialSideSummary"},"black":{"$ref":"#/components/schemas/MaterialSideSummary"}},"additionalProperties":false,"type":"object","required":["white","black"],"title":"MaterialSummary"},"MoveRequest":{"properties":{"uci":{"type":"string","maxLength":5,"minLength":4,"title":"Uci"}},"additionalProperties":false,"type":"object","required":["uci"],"title":"MoveRequest"},"MoveResponse":{"properties":{"move_done":{"type":"boolean","title":"Move Done"},"announcement":{"type":"string","title":"Announcement"},"special_announcement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Special Announcement"},"checks":{"items":{"type":"string"},"type":"array","title":"Checks"},"capture_square":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capture Square"},"captured_piece_announcement":{"anyOf":[{"type":"string","enum":["PAWN","PIECE","KNIGHT","BISHOP","ROOK","QUEEN"]},{"type":"null"}],"title":"Captured Piece Announcement"},"dropped_piece_announcement":{"anyOf":[{"type":"string","enum":["PAWN","PIECE","KNIGHT","BISHOP","ROOK","QUEEN"]},{"type":"null"}],"title":"Dropped Piece Announcement"},"en_passant_announced":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"En Passant Announced"},"promotion_announced":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Promotion Announced"},"next_turn_pawn_tries":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Next Turn Pawn Tries"},"next_turn_has_pawn_capture":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Next Turn Has Pawn Capture"},"next_turn_pawn_try_squares":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Turn Pawn Try Squares"},"turn":{"anyOf":[{"type":"string","enum":["white","black"]},{"type":"null"}],"title":"Turn"},"game_over":{"type":"boolean","title":"Game Over"},"clock":{"$ref":"#/components/schemas/ClockState"}},"additionalProperties":false,"type":"object","required":["move_done","announcement","game_over","clock"],"title":"MoveResponse"},"MyGamesResponse":{"properties":{"games":{"items":{"$ref":"#/components/schemas/GameMetadataResponse"},"type":"array","title":"Games"}},"additionalProperties":false,"type":"object","required":["games"],"title":"MyGamesResponse"},"OpenGameItem":{"properties":{"game_code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^[2-9A-HJ-KM-NP-Z]{6}$","title":"Game Code"},"rule_variant":{"type":"string","enum":["berkeley","berkeley_any","cincinnati","wild16","rand","english","crazykrieg"],"title":"Rule Variant"},"created_by":{"type":"string","title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"available_color":{"type":"string","enum":["white","black"],"title":"Available Color"}},"additionalProperties":false,"type":"object","required":["game_code","rule_variant","created_by","created_at","available_color"],"title":"OpenGameItem"},"OpenGamesResponse":{"properties":{"games":{"items":{"$ref":"#/components/schemas/OpenGameItem"},"type":"array","title":"Games"}},"additionalProperties":false,"type":"object","required":["games"],"title":"OpenGamesResponse"},"PublicPlayer":{"properties":{"username":{"type":"string","title":"Username"},"connected":{"type":"boolean","title":"Connected"},"role":{"type":"string","enum":["user","guest","bot"],"title":"Role","default":"user"},"elo":{"type":"integer","title":"Elo","default":1200},"ratings":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"object","title":"Ratings"}},"additionalProperties":false,"type":"object","required":["username","connected"],"title":"PublicPlayer"},"RecentGameItem":{"properties":{"game_id":{"type":"string","title":"Game Id"},"game_code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^[2-9A-HJ-KM-NP-Z]{6}$","title":"Game Code"},"rule_variant":{"type":"string","enum":["berkeley","berkeley_any","cincinnati","wild16","rand","english","crazykrieg"],"title":"Rule Variant"},"white":{"$ref":"#/components/schemas/PublicPlayer"},"black":{"$ref":"#/components/schemas/PublicPlayer"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"completed_at":{"type":"string","format":"date-time","title":"Completed At"}},"additionalProperties":false,"type":"object","required":["game_id","game_code","rule_variant","white","black","completed_at"],"title":"RecentGameItem"},"RecentGamesResponse":{"properties":{"games":{"items":{"$ref":"#/components/schemas/RecentGameItem"},"type":"array","title":"Games"}},"additionalProperties":false,"type":"object","required":["games"],"title":"RecentGamesResponse"},"RefereeLogItem":{"properties":{"ply":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ply"},"announcement":{"type":"string","title":"Announcement"},"special_announcement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Special Announcement"},"capture_square":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capture Square"},"timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Timestamp"},"replay_fen":{"anyOf":[{"$ref":"#/components/schemas/ReplayFen"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["announcement"],"title":"RefereeLogItem"},"RefereeTurnEntry":{"properties":{"turn":{"type":"integer","minimum":1.0,"title":"Turn"},"white":{"items":{"anyOf":[{"$ref":"#/components/schemas/AnnouncementEntry"},{"type":"string"}]},"type":"array","title":"White"},"black":{"items":{"anyOf":[{"$ref":"#/components/schemas/AnnouncementEntry"},{"type":"string"}]},"type":"array","title":"Black"}},"additionalProperties":false,"type":"object","required":["turn"],"title":"RefereeTurnEntry"},"RegisterRequest":{"properties":{"username":{"type":"string","maxLength":33,"minLength":1,"pattern":"^[a-zA-Z0-9_]+$","title":"Username"},"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"},"password":{"type":"string","maxLength":512,"minLength":1,"title":"Password"}},"type":"object","required":["username","email","password"],"title":"RegisterRequest"},"RegisterResponse":{"properties":{"user_id":{"type":"string","title":"User Id"},"username":{"type":"string","title":"Username"},"message":{"type":"string","title":"Message","default":"Account created. You are now logged in."}},"type":"object","required":["user_id","username"],"title":"RegisterResponse"},"ReplayFen":{"properties":{"full":{"type":"string","title":"Full"},"white":{"type":"string","title":"White"},"black":{"type":"string","title":"Black"}},"additionalProperties":false,"type":"object","required":["full","white","black"],"title":"ReplayFen"},"ReserveSideSummary":{"properties":{"pawns":{"type":"integer","minimum":0.0,"title":"Pawns","default":0},"knights":{"type":"integer","minimum":0.0,"title":"Knights","default":0},"bishops":{"type":"integer","minimum":0.0,"title":"Bishops","default":0},"rooks":{"type":"integer","minimum":0.0,"title":"Rooks","default":0},"queens":{"type":"integer","minimum":0.0,"title":"Queens","default":0}},"additionalProperties":false,"type":"object","title":"ReserveSideSummary"},"ReserveSummary":{"properties":{"white":{"$ref":"#/components/schemas/ReserveSideSummary"},"black":{"$ref":"#/components/schemas/ReserveSideSummary"}},"additionalProperties":false,"type":"object","required":["white","black"],"title":"ReserveSummary"},"ScoresheetTurn":{"properties":{"turn":{"type":"integer","minimum":1.0,"title":"Turn"},"white":{"items":{"anyOf":[{"$ref":"#/components/schemas/AnnouncementEntry"},{"type":"string"}]},"type":"array","title":"White"},"black":{"items":{"anyOf":[{"$ref":"#/components/schemas/AnnouncementEntry"},{"type":"string"}]},"type":"array","title":"Black"}},"additionalProperties":false,"type":"object","required":["turn"],"title":"ScoresheetTurn"},"TranscriptAnswer":{"properties":{"main":{"type":"string","title":"Main"},"capture_square":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capture Square"},"captured_piece_announcement":{"anyOf":[{"type":"string","enum":["PAWN","PIECE","KNIGHT","BISHOP","ROOK","QUEEN"]},{"type":"null"}],"title":"Captured Piece Announcement"},"dropped_piece_announcement":{"anyOf":[{"type":"string","enum":["PAWN","PIECE","KNIGHT","BISHOP","ROOK","QUEEN"]},{"type":"null"}],"title":"Dropped Piece Announcement"},"en_passant_announced":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"En Passant Announced"},"promotion_announced":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Promotion Announced"},"special":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Special"},"checks":{"items":{"type":"string"},"type":"array","title":"Checks"},"next_turn_pawn_tries":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Next Turn Pawn Tries"},"next_turn_has_pawn_capture":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Next Turn Has Pawn Capture"},"next_turn_pawn_try_squares":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Next Turn Pawn Try Squares"}},"additionalProperties":false,"type":"object","required":["main"],"title":"TranscriptAnswer"},"TranscriptMoveItem":{"properties":{"ply":{"type":"integer","minimum":1.0,"title":"Ply"},"color":{"type":"string","enum":["white","black"],"title":"Color"},"question_type":{"type":"string","title":"Question Type"},"uci":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uci"},"answer":{"$ref":"#/components/schemas/TranscriptAnswer"},"move_done":{"type":"boolean","title":"Move Done"},"timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Timestamp"},"replay_fen":{"anyOf":[{"$ref":"#/components/schemas/ReplayFen"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["ply","color","question_type","answer","move_done"],"title":"TranscriptMoveItem"},"TutorAnalysisResponse":{"properties":{"game_code":{"type":"string","title":"Game Code"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"cached":{"type":"boolean","title":"Cached"},"model":{"type":"string","title":"Model"},"analysis_version":{"type":"string","title":"Analysis Version"},"prompt_version":{"type":"string","title":"Prompt Version"},"review":{"$ref":"#/components/schemas/TutorModelOutput"},"feedback":{"anyOf":[{"$ref":"#/components/schemas/TutorFeedbackResponse"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["game_code","generated_at","cached","model","analysis_version","prompt_version","review"],"title":"TutorAnalysisResponse"},"TutorDrill":{"properties":{"title":{"type":"string","maxLength":100,"minLength":1,"title":"Title"},"instructions":{"type":"string","maxLength":700,"minLength":1,"title":"Instructions"},"success_criterion":{"type":"string","maxLength":400,"minLength":1,"title":"Success Criterion"}},"additionalProperties":false,"type":"object","required":["title","instructions","success_criterion"],"title":"TutorDrill"},"TutorFeedbackRequest":{"properties":{"rating":{"type":"string","enum":["helpful","not_helpful","incorrect"],"title":"Rating"},"comment":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Comment"}},"additionalProperties":false,"type":"object","required":["rating"],"title":"TutorFeedbackRequest"},"TutorFeedbackResponse":{"properties":{"rating":{"type":"string","enum":["helpful","not_helpful","incorrect"],"title":"Rating"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"additionalProperties":false,"type":"object","required":["rating","updated_at"],"title":"TutorFeedbackResponse"},"TutorFocusArea":{"properties":{"skill":{"type":"string","maxLength":80,"minLength":1,"title":"Skill"},"reason":{"type":"string","maxLength":500,"minLength":1,"title":"Reason"},"next_action":{"type":"string","maxLength":500,"minLength":1,"title":"Next Action"}},"additionalProperties":false,"type":"object","required":["skill","reason","next_action"],"title":"TutorFocusArea"},"TutorGameResponse":{"properties":{"game_code":{"type":"string","title":"Game Code"},"eligible":{"type":"boolean","title":"Eligible"},"eligibility_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eligibility Reason"},"analysis":{"anyOf":[{"$ref":"#/components/schemas/TutorAnalysisResponse"},{"type":"null"}]},"profile":{"$ref":"#/components/schemas/TutorProfileResponse"},"usage":{"$ref":"#/components/schemas/TutorUsageResponse"}},"additionalProperties":false,"type":"object","required":["game_code","eligible","profile","usage"],"title":"TutorGameResponse"},"TutorKeyMoment":{"properties":{"turn":{"type":"integer","minimum":1.0,"title":"Turn"},"title":{"type":"string","maxLength":100,"minLength":1,"title":"Title"},"observation":{"type":"string","maxLength":600,"minLength":1,"title":"Observation"},"why_it_matters":{"type":"string","maxLength":600,"minLength":1,"title":"Why It Matters"},"suggestion":{"type":"string","maxLength":600,"minLength":1,"title":"Suggestion"},"evidence":{"items":{"type":"string"},"type":"array","maxItems":4,"minItems":1,"title":"Evidence"},"confidence":{"type":"string","enum":["low","medium","high"],"title":"Confidence"}},"additionalProperties":false,"type":"object","required":["turn","title","observation","why_it_matters","suggestion","evidence","confidence"],"title":"TutorKeyMoment"},"TutorModelOutput":{"properties":{"overview":{"type":"string","maxLength":1200,"minLength":1,"title":"Overview"},"result_context":{"type":"string","maxLength":700,"minLength":1,"title":"Result Context"},"key_moments":{"items":{"$ref":"#/components/schemas/TutorKeyMoment"},"type":"array","maxItems":5,"title":"Key Moments"},"strengths":{"items":{"$ref":"#/components/schemas/TutorSkillNote"},"type":"array","maxItems":3,"title":"Strengths"},"improvements":{"items":{"$ref":"#/components/schemas/TutorSkillNote"},"type":"array","maxItems":3,"title":"Improvements"},"next_drill":{"$ref":"#/components/schemas/TutorDrill"},"profile_update":{"$ref":"#/components/schemas/TutorProfileContent"}},"additionalProperties":false,"type":"object","required":["overview","result_context","key_moments","strengths","improvements","next_drill","profile_update"],"title":"TutorModelOutput","description":"Strict structured output returned by the Tutor model."},"TutorProfileContent":{"properties":{"summary":{"type":"string","maxLength":900,"minLength":1,"title":"Summary"},"strengths":{"items":{"type":"string"},"type":"array","maxItems":3,"title":"Strengths"},"focus_areas":{"items":{"$ref":"#/components/schemas/TutorFocusArea"},"type":"array","maxItems":3,"title":"Focus Areas"}},"additionalProperties":false,"type":"object","required":["summary","strengths","focus_areas"],"title":"TutorProfileContent"},"TutorProfileResponse":{"properties":{"reviewed_games":{"type":"integer","minimum":0.0,"title":"Reviewed Games"},"ready":{"type":"boolean","title":"Ready"},"games_until_ready":{"type":"integer","minimum":0.0,"title":"Games Until Ready"},"summary":{"type":"string","title":"Summary"},"strengths":{"items":{"type":"string"},"type":"array","title":"Strengths"},"focus_areas":{"items":{"$ref":"#/components/schemas/TutorFocusArea"},"type":"array","title":"Focus Areas"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"additionalProperties":false,"type":"object","required":["reviewed_games","ready","games_until_ready","summary"],"title":"TutorProfileResponse"},"TutorSkillNote":{"properties":{"skill":{"type":"string","maxLength":80,"minLength":1,"title":"Skill"},"evidence":{"type":"string","maxLength":500,"minLength":1,"title":"Evidence"},"action":{"type":"string","maxLength":500,"minLength":1,"title":"Action"}},"additionalProperties":false,"type":"object","required":["skill","evidence","action"],"title":"TutorSkillNote"},"TutorUsageResponse":{"properties":{"month":{"type":"string","title":"Month"},"limit_usd":{"type":"number","minimum":0.0,"title":"Limit Usd"},"spent_usd":{"type":"number","minimum":0.0,"title":"Spent Usd"},"reserved_usd":{"type":"number","minimum":0.0,"title":"Reserved Usd"},"remaining_usd":{"type":"number","minimum":0.0,"title":"Remaining Usd"}},"additionalProperties":false,"type":"object","required":["month","limit_usd","spent_usd","reserved_usd","remaining_usd"],"title":"TutorUsageResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"ViewerScoresheet":{"properties":{"viewer_color":{"type":"string","enum":["white","black"],"title":"Viewer Color"},"last_move_number":{"type":"integer","minimum":0.0,"title":"Last Move Number"},"turns":{"items":{"$ref":"#/components/schemas/ScoresheetTurn"},"type":"array","title":"Turns"}},"additionalProperties":false,"type":"object","required":["viewer_color","last_move_number"],"title":"ViewerScoresheet"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"ksbot_<token-id>.<token-secret>","description":"Use the bot bearer token returned by POST /auth/bots/register."}}}}