{"openapi":"3.1.0","info":{"title":"Tournament Backend API","description":"Bittensor Nepher Subnet Tournament Platform - Backend service","version":"1.0.0"},"paths":{"/health":{"get":{"tags":["health"],"summary":"Health Check","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ready":{"get":{"tags":["health"],"summary":"Readiness Check","operationId":"readiness_check_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/tournaments/current-block":{"get":{"tags":["tournaments"],"summary":"Get Current Block Endpoint","operationId":"get_current_block_endpoint_api_v1_tournaments_current_block_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"finney","title":"Network"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/pricing":{"get":{"tags":["tournaments"],"summary":"Get Pricing Endpoint","description":"TAO/USD and subnet alpha quotes read from PostgreSQL.\n\nRows are refreshed by the background ``market_price_sync`` task (CoinGecko +\nsubtensor writes). Missing rows or stale failures surface as ``null``\nprices so clients can degrade gracefully until the next sync succeeds.","operationId":"get_pricing_endpoint_api_v1_tournaments_pricing_get","parameters":[{"name":"subnet_uid","in":"query","required":true,"schema":{"type":"integer","minimum":0,"description":"Subnet UID (e.g. 49)","title":"Subnet Uid"},"description":"Subnet UID (e.g. 49)"},{"name":"network","in":"query","required":false,"schema":{"type":"string","description":"Bittensor network","default":"finney","title":"Network"},"description":"Bittensor network"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/preload-cache":{"post":{"tags":["tournaments"],"summary":"Preload Cache","operationId":"preload_cache_api_v1_tournaments_preload_cache_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/tournaments/create":{"post":{"tags":["tournaments"],"summary":"Create Tournament","operationId":"create_tournament_api_v1_tournaments_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentWithStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/tournaments/list":{"get":{"tags":["tournaments"],"summary":"List Tournaments","operationId":"list_tournaments_api_v1_tournaments_list_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of items per page","default":10,"title":"Limit"},"description":"Number of items per page"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of items to skip","default":0,"title":"Offset"},"description":"Number of items to skip"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search task name, title, subtitle, winner hotkey, and tags","title":"Search"},"description":"Search task name, title, subtitle, winner hotkey, and tags"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status (approved, active, cancelled)","title":"Status"},"description":"Filter by status (approved, active, cancelled)"},{"name":"include_active","in":"query","required":false,"schema":{"type":"boolean","description":"Include active tournaments in results (for dropdown filters)","default":false,"title":"Include Active"},"description":"Include active tournaments in results (for dropdown filters)"},{"name":"difficulty","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by difficulty: beginner, intermediate, expert","title":"Difficulty"},"description":"Filter by difficulty: beginner, intermediate, expert"},{"name":"is_featured","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"When true, only featured tournaments","title":"Is Featured"},"description":"When true, only featured tournaments"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort field: task_name, contest_start_time, contest_end_time, agents_count, reward","default":"contest_start_time","title":"Sort By"},"description":"Sort field: task_name, contest_start_time, contest_end_time, agents_count, reward"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"Sort order (asc, desc)","default":"desc","title":"Sort Order"},"description":"Sort order (asc, desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/active/id":{"get":{"tags":["tournaments"],"summary":"Get Active Tournament Id","description":"Return the ID of the newest active tournament.\n\nDeprecated: use ``GET /active/ids`` which returns all active tournament IDs.","operationId":"get_active_tournament_id_api_v1_tournaments_active_id_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/tournaments/active/ids":{"get":{"tags":["tournaments"],"summary":"Get Active Tournament Ids","description":"Return IDs of all currently active tournaments.","operationId":"get_active_tournament_ids_api_v1_tournaments_active_ids_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/tournaments/active/list":{"get":{"tags":["tournaments"],"summary":"Get Active Tournaments List","description":"Return all currently active tournaments as a list.\n\nThis is the canonical multi-tournament endpoint. Use this instead of\n``GET /active`` when you need to work with all concurrent live tournaments.\nPass ``subnet=true`` for the lightweight subnet-validator payload.","operationId":"get_active_tournaments_list_api_v1_tournaments_active_list_get","parameters":[{"name":"subnet","in":"query","required":false,"schema":{"type":"boolean","description":"When true, return a minimized list for subnet validators. Omits YAML configs, statistics, and block numbers; emits only the phase timestamps and network metadata each validator needs.","default":false,"title":"Subnet"},"description":"When true, return a minimized list for subnet validators. Omits YAML configs, statistics, and block numbers; emits only the phase timestamps and network metadata each validator needs."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/active":{"get":{"tags":["tournaments"],"summary":"Get Active Tournament","description":"Return the single newest active tournament.\n\nDeprecated: use ``GET /active/list`` to retrieve all concurrent active\ntournaments. This endpoint keeps backward compatibility for CLI tools and\nsubnet validators that expect a single object; it picks the tournament with\nthe most recent ``contest_start_time`` as the tie-breaker.","operationId":"get_active_tournament_api_v1_tournaments_active_get","parameters":[{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"finney","title":"Network"}},{"name":"subnet","in":"query","required":false,"schema":{"type":"boolean","description":"When true, return a minimized response for subnet validators. Omits YAML configs, statistics, block numbers, and winner details to reduce payload size and avoid unnecessary DB queries.","default":false,"title":"Subnet"},"description":"When true, return a minimized response for subnet validators. Omits YAML configs, statistics, block numbers, and winner details to reduce payload size and avoid unnecessary DB queries."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}":{"get":{"tags":["tournaments"],"summary":"Get Tournament Detail","operationId":"get_tournament_detail_api_v1_tournaments__tournament_id__get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"network","in":"query","required":false,"schema":{"type":"string","default":"finney","title":"Network"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["tournaments"],"summary":"Update Tournament","operationId":"update_tournament_api_v1_tournaments__tournament_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentWithStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tournaments"],"summary":"Delete Tournament","operationId":"delete_tournament_api_v1_tournaments__tournament_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/status":{"patch":{"tags":["tournaments"],"summary":"Update Tournament Status","operationId":"update_tournament_status_api_v1_tournaments__tournament_id__status_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentWithStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/auto-start":{"patch":{"tags":["tournaments"],"summary":"Set Auto Start","description":"Set or clear which tournament should auto-start when this one completes.\n\nWhen the current (active) tournament's reward period ends, the system will\nautomatically set it to \"approved\" and activate the designated next tournament.","operationId":"set_auto_start_api_v1_tournaments__tournament_id__auto_start_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentAutoStartUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentWithStats"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/gallery/{media_type}/{index}":{"get":{"tags":["tournaments"],"summary":"Serve Gallery File","description":"Serve a gallery file directly from R2 storage.\n\nUseful when no public CDN domain is configured.  Thumbnails are served\ninline; videos are streamed with cache headers.","operationId":"serve_gallery_file_api_v1_tournaments__tournament_id__gallery__media_type___index__get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"media_type","in":"path","required":true,"schema":{"enum":["thumbnail","video"],"type":"string","title":"Media Type"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","title":"Index"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/config/subnet_config":{"get":{"tags":["tournaments"],"summary":"Download Subnet Config","operationId":"download_subnet_config_api_v1_tournaments__tournament_id__config_subnet_config_get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/config/eval_config":{"get":{"tags":["tournaments"],"summary":"Download Eval Config","operationId":"download_eval_config_api_v1_tournaments__tournament_id__config_eval_config_get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/config/active_eval_config":{"get":{"tags":["tournaments"],"summary":"Download Active Eval Config","description":"Serve the eval config for the current phase: public during contest, private during evaluation.","operationId":"download_active_eval_config_api_v1_tournaments__tournament_id__config_active_eval_config_get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/config/public_eval_config":{"get":{"tags":["tournaments"],"summary":"Download Public Eval Config","operationId":"download_public_eval_config_api_v1_tournaments__tournament_id__config_public_eval_config_get","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agents/eligible-miners-status/{tournament_id}":{"get":{"tags":["agents"],"summary":"Get Eligible Miners Status","operationId":"get_eligible_miners_status_api_v1_agents_eligible_miners_status__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EligibleMinersStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agents/upload/verify":{"post":{"tags":["agents"],"summary":"Verify Upload","operationId":"verify_upload_api_v1_agents_upload_verify_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadVerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadVerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agents/upload/{tournament_id}":{"post":{"tags":["agents"],"summary":"Upload Agent","operationId":"upload_agent_api_v1_agents_upload__tournament_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"X-Upload-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Upload-Token"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_agent_api_v1_agents_upload__tournament_id__post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agents/list/validators":{"get":{"tags":["agents"],"summary":"List Agents For Validators","operationId":"list_agents_for_validators_api_v1_agents_list_validators_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"miner_hotkey","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Miner Hotkey"}},{"name":"contest_end_block","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contest End Block"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Offset"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agents/list/unevaluated":{"get":{"tags":["agents"],"summary":"List Unevaluated Agents For Validator","operationId":"list_unevaluated_agents_for_validator_api_v1_agents_list_unevaluated_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"query","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"validator_hotkey","in":"query","required":true,"schema":{"type":"string","title":"Validator Hotkey"}},{"name":"phase","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Evaluation phase: 'public' or 'private'. Filters which evaluations count as done.","title":"Phase"},"description":"Evaluation phase: 'public' or 'private'. Filters which evaluations count as done."},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Offset"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agents/list/public":{"get":{"tags":["agents"],"summary":"List Agents Public","operationId":"list_agents_public_api_v1_agents_list_public_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"query","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"miner_hotkey","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Miner Hotkey"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"eligible_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eligible Filter"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"coldkey","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coldkey"}},{"name":"security_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"security status: clean, suspicious, cleared, or blocked","title":"Security Filter"},"description":"security status: clean, suspicious, cleared, or blocked"},{"name":"latest_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Latest Only"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Offset"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAgentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agents/list":{"get":{"tags":["agents"],"summary":"List Agents For Miners","operationId":"list_agents_for_miners_api_v1_agents_list_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"miner_hotkey","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Miner Hotkey"}},{"name":"contest_end_block","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contest End Block"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Offset"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agents/download/{agent_id}":{"get":{"tags":["agents"],"summary":"Download Agent","operationId":"download_agent_api_v1_agents_download__agent_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agents/{agent_id}":{"get":{"tags":["agents"],"summary":"Get Agent","operationId":"get_agent_api_v1_agents__agent_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["agents"],"summary":"Delete Agent","operationId":"delete_agent_api_v1_agents__agent_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agents/delete-unevaluated/{tournament_id}":{"delete":{"tags":["agents"],"summary":"Delete Unevaluated Agents","operationId":"delete_unevaluated_agents_api_v1_agents_delete_unevaluated__tournament_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluations/submit/verify":{"post":{"tags":["evaluations"],"summary":"Verify Evaluation Submit","operationId":"verify_evaluation_submit_api_v1_evaluations_submit_verify_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationSubmitVerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationSubmitVerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluations/submit":{"post":{"tags":["evaluations"],"summary":"Submit Evaluation","operationId":"submit_evaluation_api_v1_evaluations_submit_post","parameters":[{"name":"X-Upload-Token","in":"header","required":true,"schema":{"type":"string","title":"X-Upload-Token"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_evaluation_api_v1_evaluations_submit_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationSubmitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluations/in-progress/cli":{"post":{"tags":["evaluations"],"summary":"Post Evaluation In Progress Cli","operationId":"post_evaluation_in_progress_cli_api_v1_evaluations_in_progress_cli_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InProgressRequestWithSignature"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluations":{"get":{"tags":["evaluations"],"summary":"List Evaluations","operationId":"list_evaluations_api_v1_evaluations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tournament ID","title":"Tournament Id"},"description":"Filter by tournament ID"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by miner hotkey or submission ID","title":"Search"},"description":"Search by miner hotkey or submission ID"},{"name":"validator_hotkey","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by validator hotkey","title":"Validator Hotkey"},"description":"Filter by validator hotkey"},{"name":"phase","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by phase: public, private","title":"Phase"},"description":"Filter by phase: public, private"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status: done, failed, in_progress, pending","title":"Status"},"description":"Filter by status: done, failed, in_progress, pending"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page","default":20,"title":"Limit"},"description":"Items per page"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort: score, miner_uid, evaluated_at","default":"evaluated_at","title":"Sort By"},"description":"Sort: score, miner_uid, evaluated_at"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort order: asc, desc","default":"desc","title":"Sort Order"},"description":"Sort order: asc, desc"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluations/progress/{tournament_id}":{"get":{"tags":["evaluations"],"summary":"Get Evaluation Progress","operationId":"get_evaluation_progress_api_v1_evaluations_progress__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationProgressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluations/eligible-miners/{tournament_id}":{"get":{"tags":["evaluations"],"summary":"Get Eligible Miners","operationId":"get_eligible_miners_api_v1_evaluations_eligible_miners__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EligibleMinersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluations/{evaluation_id}":{"get":{"tags":["evaluations"],"summary":"Get Evaluation Detail","operationId":"get_evaluation_detail_api_v1_evaluations__evaluation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["evaluations"],"summary":"Delete Evaluation","operationId":"delete_evaluation_api_v1_evaluations__evaluation_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/evaluations/{evaluation_id}/log":{"get":{"tags":["evaluations"],"summary":"Download Evaluation Log","operationId":"download_evaluation_log_api_v1_evaluations__evaluation_id__log_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluation Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scores/bulk":{"post":{"tags":["scores"],"summary":"Submit Scores","operationId":"submit_scores_api_v1_scores_bulk_post","deprecated":true,"parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoreBulkCreate"}}}},"responses":{"410":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scores/agent/{agent_id}":{"get":{"tags":["scores"],"summary":"Get Agent Score","description":"Get the aggregated score breakdown for a single agent.","operationId":"get_agent_score_api_v1_scores_agent__agent_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}},{"name":"phase","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Phase: public or private (auto-detect if omitted)","title":"Phase"},"description":"Phase: public or private (auto-detect if omitted)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/AggregatedScoreResponse"},{"type":"null"}],"title":"Response Get Agent Score Api V1 Scores Agent  Agent Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scores/{tournament_id}":{"get":{"tags":["scores"],"summary":"Get Scores","operationId":"get_scores_api_v1_scores__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scores/{tournament_id}/aggregated":{"get":{"tags":["scores"],"summary":"Get Aggregated Scores","operationId":"get_aggregated_scores_api_v1_scores__tournament_id__aggregated_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"phase","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phase"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scores/{tournament_id}/aggregate":{"post":{"tags":["scores"],"summary":"Trigger Aggregation","operationId":"trigger_aggregation_api_v1_scores__tournament_id__aggregate_post","parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"phase","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Phase to aggregate: public or private","title":"Phase"},"description":"Phase to aggregate: public or private"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scores/leaderboard/active":{"get":{"tags":["scores"],"summary":"Get Active Leaderboard","operationId":"get_active_leaderboard_api_v1_scores_leaderboard_active_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ID of the active tournament to show the leaderboard for. Required when multiple active tournaments exist; omit only when exactly one tournament is active.","title":"Tournament Id"},"description":"ID of the active tournament to show the leaderboard for. Required when multiple active tournaments exist; omit only when exactly one tournament is active."},{"name":"phase","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Phase: public or private (auto-detect if omitted)","title":"Phase"},"description":"Phase: public or private (auto-detect if omitted)"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by miner hotkey or submission ID substring","title":"Search"},"description":"Filter by miner hotkey or submission ID substring"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Alias for search (short name)","title":"Q"},"description":"Alias for search (short name)"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"rank | score | uploaded_at","default":"rank","title":"Sort By"},"description":"rank | score | uploaded_at"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"asc or desc (defaults: rank asc, score/uploaded_at desc)","title":"Sort Order"},"description":"asc or desc (defaults: rank asc, score/uploaded_at desc)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scores/leaderboard/{tournament_id}":{"get":{"tags":["scores"],"summary":"Get Leaderboard","operationId":"get_leaderboard_api_v1_scores_leaderboard__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"phase","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Phase: public or private (auto-detect if omitted)","title":"Phase"},"description":"Phase: public or private (auto-detect if omitted)"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by miner hotkey or submission ID substring","title":"Search"},"description":"Filter by miner hotkey or submission ID substring"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Alias for search (short name)","title":"Q"},"description":"Alias for search (short name)"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"rank | score | uploaded_at","default":"rank","title":"Sort By"},"description":"rank | score | uploaded_at"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"asc or desc (defaults: rank asc, score/uploaded_at desc)","title":"Sort Order"},"description":"asc or desc (defaults: rank asc, score/uploaded_at desc)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/winner":{"get":{"tags":["review"],"summary":"Get Winner","operationId":"get_winner_api_v1_tournaments__tournament_id__winner_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WinnerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/approve-winner/{agent_id}":{"post":{"tags":["review"],"summary":"Approve Winner","operationId":"approve_winner_api_v1_tournaments__tournament_id__approve_winner__agent_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveWinnerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WinnerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/confirm-no-winner":{"post":{"tags":["review"],"summary":"Confirm No Winner","operationId":"confirm_no_winner_api_v1_tournaments__tournament_id__confirm_no_winner_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WinnerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/reset-winner":{"post":{"tags":["review"],"summary":"Reset Winner","operationId":"reset_winner_api_v1_tournaments__tournament_id__reset_winner_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WinnerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/winner-hotkey":{"get":{"tags":["reward"],"summary":"Get Winner Hotkey","operationId":"get_winner_hotkey_api_v1_tournaments__tournament_id__winner_hotkey_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WinnerHotkeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tournaments/{tournament_id}/preliminary-leader":{"get":{"tags":["reward"],"summary":"Get Preliminary Leader","description":"Return the hotkey that validators should allocate emissions to.\n\nResolution order:\n1. Non-active or period-completed tournaments → ``leader_hotkey: null``.\n2. Winner approved → returns the winner's hotkey.\n3. Winner reviewed but none chosen (``winner_approved_at`` set,\n   ``winner_approved`` false) → ``leader_hotkey: null``.\n4. No decision yet → returns the current rank-1 agent.\n\nAlways returns a response (never an error) so validators can call\nthis unconditionally and let the response drive weight-setting.","operationId":"get_preliminary_leader_api_v1_tournaments__tournament_id__preliminary_leader_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"phase","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phase"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreliminaryLeaderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/me":{"get":{"tags":["users"],"summary":"Get Current User Info","operationId":"get_current_user_info_api_v1_users_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/me/dashboard-stats":{"get":{"tags":["users"],"summary":"Get My Dashboard Stats","description":"Aggregate submission counts and personal best score across all tournaments.","operationId":"get_my_dashboard_stats_api_v1_users_me_dashboard_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDashboardStatsResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/validators":{"get":{"tags":["users"],"summary":"List Validators","operationId":"list_validators_api_v1_users_validators_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tournament ID to calculate evaluation counts for","title":"Tournament Id"},"description":"Tournament ID to calculate evaluation counts for"},{"name":"network","in":"query","required":false,"schema":{"type":"string","description":"Bittensor network","default":"finney","title":"Network"},"description":"Bittensor network"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorLinksResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/list":{"get":{"tags":["users"],"summary":"List Users","operationId":"list_users_api_v1_users_list_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/validators/available":{"get":{"tags":["validators"],"summary":"List Available Validators","operationId":"list_available_validators_api_v1_admin_validators_available_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailableValidatorsResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/validators/hotkeys":{"get":{"tags":["validators"],"summary":"List Hotkeys","operationId":"list_hotkeys_api_v1_admin_validators_hotkeys_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"network","in":"query","required":false,"schema":{"type":"string","description":"Bittensor network","default":"finney","title":"Network"},"description":"Bittensor network"},{"name":"min_stake","in":"query","required":false,"schema":{"type":"number","description":"Minimum stake threshold","default":1000,"title":"Min Stake"},"description":"Minimum stake threshold"},{"name":"include_linked","in":"query","required":false,"schema":{"type":"boolean","description":"Include already linked hotkeys","default":false,"title":"Include Linked"},"description":"Include already linked hotkeys"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailableHotkeysResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/validators/links":{"get":{"tags":["validators"],"summary":"List Validator Links","operationId":"list_validator_links_api_v1_admin_validators_links_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"network","in":"query","required":false,"schema":{"type":"string","description":"Bittensor network","default":"finney","title":"Network"},"description":"Bittensor network"},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by active status","title":"Is Active"},"description":"Filter by active status"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorLinksResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/validators/link":{"post":{"tags":["validators"],"summary":"Create Validator Link","operationId":"create_validator_link_api_v1_admin_validators_link_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorLinkCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/validators/link/{link_id}":{"patch":{"tags":["validators"],"summary":"Update Validator Link","operationId":"update_validator_link_api_v1_admin_validators_link__link_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Link Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorLinkUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["validators"],"summary":"Delete Validator Link","operationId":"delete_validator_link_api_v1_admin_validators_link__link_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Link Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/weight-commits/latest":{"get":{"tags":["weight-commits"],"summary":"Get Latest Weight Commit","description":"Return the most recent weight commit for a hotkey + netuid pair.","operationId":"get_latest_weight_commit_api_v1_weight_commits_latest_get","parameters":[{"name":"validator_hotkey","in":"query","required":true,"schema":{"type":"string","title":"Validator Hotkey"}},{"name":"netuid","in":"query","required":true,"schema":{"type":"integer","title":"Netuid"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeightCommitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/weight-commits":{"post":{"tags":["weight-commits"],"summary":"Create Weight Commit","description":"Record a successful on-chain weight set.","operationId":"create_weight_commit_api_v1_weight_commits_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeightCommitCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeightCommitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports":{"post":{"tags":["reports"],"summary":"Create Report","description":"Submit a failed evaluation report.\n\nValidators call this endpoint when an evaluation fails on the subnet side.\nThe complete log is stored for admin review.","operationId":"create_report_api_v1_reports_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/preferences":{"get":{"tags":["notifications"],"summary":"Get Preferences","operationId":"get_preferences_api_v1_notifications_preferences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesResponse"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["notifications"],"summary":"Update Preferences","operationId":"update_preferences_api_v1_notifications_preferences_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/notifications/unsubscribe":{"get":{"tags":["notifications"],"summary":"Unsubscribe","description":"One-click unsubscribe (no auth required).","operationId":"unsubscribe_api_v1_notifications_unsubscribe_get","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/cleanup/evaluations/stale/{tournament_id}":{"get":{"tags":["admin","admin-cleanup"],"summary":"Preview stale in_progress evaluations","operationId":"preview_stale_evaluations_api_v1_admin_cleanup_evaluations_stale__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"threshold_seconds","in":"query","required":false,"schema":{"type":"integer","minimum":60,"description":"Age threshold in seconds","default":7200,"title":"Threshold Seconds"},"description":"Age threshold in seconds"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CleanupPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin","admin-cleanup"],"summary":"Cleanup stale in_progress evaluations","operationId":"cleanup_stale_evaluations_api_v1_admin_cleanup_evaluations_stale__tournament_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"threshold_seconds","in":"query","required":false,"schema":{"type":"integer","minimum":60,"default":7200,"title":"Threshold Seconds"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string","pattern":"^(mark_failed|delete)$","default":"mark_failed","title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/cleanup/evaluations/failed/{tournament_id}":{"get":{"tags":["admin","admin-cleanup"],"summary":"Preview failed evaluations","operationId":"preview_failed_evaluations_api_v1_admin_cleanup_evaluations_failed__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CleanupPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin","admin-cleanup"],"summary":"Delete all failed evaluations","operationId":"cleanup_failed_evaluations_api_v1_admin_cleanup_evaluations_failed__tournament_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/cleanup/agents/superseded/{tournament_id}":{"get":{"tags":["admin","admin-cleanup"],"summary":"Preview superseded (non-latest) agents","operationId":"preview_superseded_agents_api_v1_admin_cleanup_agents_superseded__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CleanupPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin","admin-cleanup"],"summary":"Delete superseded agents","operationId":"cleanup_superseded_agents_api_v1_admin_cleanup_agents_superseded__tournament_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"hard_delete","in":"query","required":false,"schema":{"type":"boolean","description":"Hard-delete DB records (True) or soft-delete (False)","default":false,"title":"Hard Delete"},"description":"Hard-delete DB records (True) or soft-delete (False)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/cleanup/agents/unevaluated/{tournament_id}":{"get":{"tags":["admin","admin-cleanup"],"summary":"Preview agents with zero evaluations","operationId":"preview_unevaluated_agents_api_v1_admin_cleanup_agents_unevaluated__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CleanupPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin","admin-cleanup"],"summary":"Delete agents with zero evaluations","operationId":"cleanup_unevaluated_agents_api_v1_admin_cleanup_agents_unevaluated__tournament_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"hard_delete","in":"query","required":false,"schema":{"type":"boolean","description":"Hard-delete DB records (True) or soft-delete (False)","default":false,"title":"Hard Delete"},"description":"Hard-delete DB records (True) or soft-delete (False)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/cleanup/agents/superseded/{tournament_id}/list":{"get":{"tags":["admin","admin-cleanup"],"summary":"List superseded agents with rich detail, search, and pagination","operationId":"list_superseded_agents_api_v1_admin_cleanup_agents_superseded__tournament_id__list_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by miner hotkey, coldkey, email, or name","title":"Search"},"description":"Search by miner hotkey, coldkey, email, or name"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CleanupAgentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/cleanup/agents/unevaluated/{tournament_id}/list":{"get":{"tags":["admin","admin-cleanup"],"summary":"List unevaluated agents with rich detail, search, and pagination","operationId":"list_unevaluated_agents_api_v1_admin_cleanup_agents_unevaluated__tournament_id__list_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by miner hotkey, coldkey, email, or name","title":"Search"},"description":"Search by miner hotkey, coldkey, email, or name"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CleanupAgentListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/cleanup/eligible-miners":{"post":{"tags":["admin","admin-cleanup"],"summary":"Remove eligible miners data for non-active tournaments","operationId":"cleanup_eligible_miners_api_v1_admin_cleanup_eligible_miners_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/reset/tournament/{tournament_id}/full":{"post":{"tags":["admin","admin-reset"],"summary":"Full tournament reset (agents, evaluations, scores, eligible miners, winner)","operationId":"reset_tournament_full_api_v1_admin_reset_tournament__tournament_id__full_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"confirm","in":"query","required":false,"schema":{"type":"boolean","description":"Must be true to confirm destructive reset","default":false,"title":"Confirm"},"description":"Must be true to confirm destructive reset"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reset/tournament/{tournament_id}/evaluations":{"post":{"tags":["admin","admin-reset"],"summary":"Reset evaluations and scores (agents untouched)","operationId":"reset_evaluations_api_v1_admin_reset_tournament__tournament_id__evaluations_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"confirm","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Confirm"}},{"name":"validator_hotkey","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Scope to a single validator (optional)","title":"Validator Hotkey"},"description":"Scope to a single validator (optional)"},{"name":"phase","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(public|private)$"},{"type":"null"}],"description":"Scope to evaluation phase: public or private (optional)","title":"Phase"},"description":"Scope to evaluation phase: public or private (optional)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reset/tournament/{tournament_id}/scores":{"post":{"tags":["admin","admin-reset"],"summary":"Reset scores and optionally re-aggregate from evaluations","operationId":"reset_scores_api_v1_admin_reset_tournament__tournament_id__scores_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"reaggregate","in":"query","required":false,"schema":{"type":"boolean","description":"Re-aggregate scores from evaluations after reset","default":true,"title":"Reaggregate"},"description":"Re-aggregate scores from evaluations after reset"},{"name":"confirm","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Confirm"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reset/tournament/{tournament_id}/eligible-miners":{"post":{"tags":["admin","admin-reset"],"summary":"Clear eligible miners and optionally re-sync","operationId":"reset_eligible_miners_api_v1_admin_reset_tournament__tournament_id__eligible_miners_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"resync","in":"query","required":false,"schema":{"type":"boolean","description":"Trigger immediate re-sync after clearing","default":false,"title":"Resync"},"description":"Trigger immediate re-sync after clearing"},{"name":"confirm","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Confirm"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reset/evaluations/in-progress":{"post":{"tags":["admin","admin-reset"],"summary":"Force-clear in_progress evaluations","operationId":"force_clear_in_progress_api_v1_admin_reset_evaluations_in_progress_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Scope to tournament (optional)","title":"Tournament Id"},"description":"Scope to tournament (optional)"},{"name":"validator_hotkey","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Scope to validator (optional)","title":"Validator Hotkey"},"description":"Scope to validator (optional)"},{"name":"mode","in":"query","required":false,"schema":{"type":"string","pattern":"^(mark_failed|delete)$","default":"mark_failed","title":"Mode"}},{"name":"confirm","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Confirm"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reset/user/{user_id}/cooldown":{"post":{"tags":["admin","admin-reset"],"summary":"Reset all cooldown records for a specific user","operationId":"reset_user_cooldown_api_v1_admin_reset_user__user_id__cooldown_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"confirm","in":"query","required":false,"schema":{"type":"boolean","description":"Must be true to confirm destructive reset","default":false,"title":"Confirm"},"description":"Must be true to confirm destructive reset"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reset/blockchain-sync":{"post":{"tags":["admin","admin-reset"],"summary":"Clear metagraph, staking weights, and blockchain state","operationId":"reset_blockchain_sync_api_v1_admin_reset_blockchain_sync_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"confirm","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Confirm"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/monitoring/health":{"get":{"tags":["admin","admin-monitoring"],"summary":"System health check (DB, R2, Account-backend)","operationId":"system_health_api_v1_admin_monitoring_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/monitoring/sync-status":{"get":{"tags":["admin","admin-monitoring"],"summary":"Background sync loop status","operationId":"sync_status_api_v1_admin_monitoring_sync_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/monitoring/storage":{"get":{"tags":["admin","admin-monitoring"],"summary":"Storage usage breakdown","operationId":"storage_usage_api_v1_admin_monitoring_storage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/monitoring/database":{"get":{"tags":["admin","admin-monitoring"],"summary":"Database table statistics","operationId":"database_stats_api_v1_admin_monitoring_database_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/monitoring/tournament/{tournament_id}/dashboard":{"get":{"tags":["admin","admin-monitoring"],"summary":"Tournament operational dashboard","operationId":"tournament_dashboard_api_v1_admin_monitoring_tournament__tournament_id__dashboard_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/monitoring/validators":{"get":{"tags":["admin","admin-monitoring"],"summary":"Validator activity overview","operationId":"validator_activity_api_v1_admin_monitoring_validators_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Scope to tournament","title":"Tournament Id"},"description":"Scope to tournament"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/monitoring/miners/{tournament_id}":{"get":{"tags":["admin","admin-monitoring"],"summary":"Miner activity for a tournament","operationId":"miner_activity_api_v1_admin_monitoring_miners__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/monitoring/blockchain":{"get":{"tags":["admin","admin-monitoring"],"summary":"Blockchain sync health","operationId":"blockchain_sync_health_api_v1_admin_monitoring_blockchain_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/emergency/pause/{tournament_id}":{"post":{"tags":["admin","admin-operations"],"summary":"Emergency pause — freeze uploads/evaluations without status change","operationId":"emergency_pause_api_v1_admin_emergency_pause__tournament_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/emergency/unpause/{tournament_id}":{"post":{"tags":["admin","admin-operations"],"summary":"Resume a paused tournament","operationId":"emergency_unpause_api_v1_admin_emergency_unpause__tournament_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/emergency/deactivate/{tournament_id}":{"post":{"tags":["admin","admin-operations"],"summary":"Force-deactivate a tournament (sets status to cancelled)","operationId":"emergency_deactivate_api_v1_admin_emergency_deactivate__tournament_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"confirm","in":"query","required":false,"schema":{"type":"boolean","description":"Must be true","default":false,"title":"Confirm"},"description":"Must be true"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/clone/{tournament_id}":{"post":{"tags":["admin","admin-operations"],"summary":"Clone a tournament (copies configs into a new draft)","operationId":"clone_tournament_api_v1_admin_clone__tournament_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/export/leaderboard/{tournament_id}":{"get":{"tags":["admin","admin-operations"],"summary":"Export leaderboard (CSV or JSON)","operationId":"export_leaderboard_api_v1_admin_export_leaderboard__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"fmt","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","default":"json","title":"Fmt"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/export/evaluations/{tournament_id}":{"get":{"tags":["admin","admin-operations"],"summary":"Export evaluations (CSV or JSON)","operationId":"export_evaluations_api_v1_admin_export_evaluations__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"fmt","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","default":"json","title":"Fmt"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/export/summary/{tournament_id}":{"get":{"tags":["admin","admin-operations"],"summary":"Export tournament summary report","operationId":"export_tournament_summary_api_v1_admin_export_summary__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/export/audit-logs":{"get":{"tags":["admin","admin-operations"],"summary":"Export audit logs (CSV or JSON)","operationId":"export_audit_logs_api_v1_admin_export_audit_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"fmt","in":"query","required":false,"schema":{"type":"string","pattern":"^(json|csv)$","default":"json","title":"Fmt"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/evaluations/{evaluation_id}/exclude":{"post":{"tags":["admin","admin-operations"],"summary":"Mark an evaluation as excluded from aggregation","operationId":"exclude_evaluation_api_v1_admin_evaluations__evaluation_id__exclude_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"evaluation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Evaluation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/agents/{agent_id}/disqualify":{"post":{"tags":["admin","admin-operations"],"summary":"Disqualify an agent (remove from ranking without deleting data)","operationId":"disqualify_agent_api_v1_admin_agents__agent_id__disqualify_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/config":{"get":{"tags":["admin","admin-operations"],"summary":"View current runtime configuration (non-sensitive)","operationId":"view_config_api_v1_admin_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/integrity/duplicate-hashes/{tournament_id}":{"get":{"tags":["admin","admin-operations"],"summary":"List agents sharing the same content hash (potential cheating)","operationId":"get_duplicate_content_hashes_api_v1_admin_integrity_duplicate_hashes__tournament_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DuplicateHashResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/audit/logs":{"get":{"tags":["admin","admin-audit"],"summary":"List audit log entries with optional filters","operationId":"list_audit_logs_api_v1_admin_audit_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by action type","title":"Action"},"description":"Filter by action type"},{"name":"entity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by entity type","title":"Entity Type"},"description":"Filter by entity type"},{"name":"entity_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by entity ID","title":"Entity Id"},"description":"Filter by entity ID"},{"name":"admin_user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by admin user","title":"Admin User Id"},"description":"Filter by admin user"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Start date filter","title":"Since"},"description":"Start date filter"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"End date filter","title":"Until"},"description":"End date filter"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/gallery":{"post":{"tags":["admin","admin-gallery"],"summary":"Upload Gallery Media","description":"Upload a new media file to the global gallery library.","operationId":"upload_gallery_media_api_v1_admin_gallery_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_gallery_media_api_v1_admin_gallery_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryMediaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["admin","admin-gallery"],"summary":"List Gallery Media","description":"List all media in the gallery library (paginated, filterable, sortable).","operationId":"list_gallery_media_api_v1_admin_gallery_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["thumbnail","video"],"type":"string"},{"type":"null"}],"title":"Media Type"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["created_at","title","file_size"],"type":"string","default":"created_at","title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Sort Order"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryMediaListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/gallery/{media_id}":{"get":{"tags":["admin","admin-gallery"],"summary":"Get Gallery Media","description":"Get details of a single media item.","operationId":"get_gallery_media_api_v1_admin_gallery__media_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Media Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryMediaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin","admin-gallery"],"summary":"Update Gallery Media","description":"Update metadata (title, alt_text) of a media item.","operationId":"update_gallery_media_api_v1_admin_gallery__media_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Media Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryMediaUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryMediaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin","admin-gallery"],"summary":"Delete Gallery Media","description":"Delete a media item. Use force=true to unlink from all tournaments first.","operationId":"delete_gallery_media_api_v1_admin_gallery__media_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Media Id"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/gallery/{media_id}/download":{"get":{"tags":["admin","admin-gallery"],"summary":"Download Gallery Media","description":"Return a presigned download URL with Content-Disposition: attachment.","operationId":"download_gallery_media_api_v1_admin_gallery__media_id__download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Media Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tournaments/{tournament_id}/gallery":{"get":{"tags":["admin","admin-gallery"],"summary":"Get Tournament Gallery","description":"List all gallery items for a tournament, ordered by display_order.","operationId":"get_tournament_gallery_api_v1_admin_tournaments__tournament_id__gallery_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentGalleryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin","admin-gallery"],"summary":"Attach Media To Tournament","description":"Attach an existing gallery media item to a tournament. Enforces 3+3 limit.","operationId":"attach_media_to_tournament_api_v1_admin_tournaments__tournament_id__gallery_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentGalleryAttach"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentGalleryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tournaments/{tournament_id}/gallery/upload":{"post":{"tags":["admin","admin-gallery"],"summary":"Upload And Attach Media","description":"Upload a new media file and immediately attach it to a tournament.","operationId":"upload_and_attach_media_api_v1_admin_tournaments__tournament_id__gallery_upload_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_and_attach_media_api_v1_admin_tournaments__tournament_id__gallery_upload_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentGalleryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tournaments/{tournament_id}/gallery/{media_id}":{"patch":{"tags":["admin","admin-gallery"],"summary":"Update Tournament Gallery Order","description":"Update the display_order of a media item within a tournament.","operationId":"update_tournament_gallery_order_api_v1_admin_tournaments__tournament_id__gallery__media_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"media_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Media Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentGalleryReorder"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentGalleryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin","admin-gallery"],"summary":"Detach Media From Tournament","description":"Detach a media item from a tournament (does NOT delete the media itself).","operationId":"detach_media_from_tournament_api_v1_admin_tournaments__tournament_id__gallery__media_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tournament Id"}},{"name":"media_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Media Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/security/queue":{"get":{"tags":["admin","admin-security"],"summary":"List Security Queue","description":"List pending security block queue entries, optionally filtered by tournament.","operationId":"list_security_queue_api_v1_admin_security_queue_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/security/queue/count":{"get":{"tags":["admin","admin-security"],"summary":"Get Queue Count","description":"Return count of unresolved queue entries (for sidebar badge).","operationId":"get_queue_count_api_v1_admin_security_queue_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/security/queue/{queue_id}":{"get":{"tags":["admin","admin-security"],"summary":"Get Queue Detail","description":"Get detail for a queue entry including full violations.","operationId":"get_queue_detail_api_v1_admin_security_queue__queue_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"queue_id","in":"path","required":true,"schema":{"type":"string","title":"Queue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/security/queue/{queue_id}/clear":{"post":{"tags":["admin","admin-security"],"summary":"Clear Queue Entry","description":"Clear a flagged agent — mark as safe, eligible for evaluation.","operationId":"clear_queue_entry_api_v1_admin_security_queue__queue_id__clear_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"queue_id","in":"path","required":true,"schema":{"type":"string","title":"Queue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/security/queue/{queue_id}/block":{"post":{"tags":["admin","admin-security"],"summary":"Block User From Queue","description":"Immediately block user and resolve queue entry.","operationId":"block_user_from_queue_api_v1_admin_security_queue__queue_id__block_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"queue_id","in":"path","required":true,"schema":{"type":"string","title":"Queue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/security/agents/{agent_id}/flag":{"post":{"tags":["admin","admin-security"],"summary":"Flag Agent Manually","description":"Manually flag a clean/cleared agent as suspicious.","operationId":"flag_agent_manually_api_v1_admin_security_agents__agent_id__flag_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagRequest","default":{}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/security/agents/{agent_id}/violations":{"get":{"tags":["admin","admin-security"],"summary":"Get Agent Violations","description":"View violations for any agent (admin only).","operationId":"get_agent_violations_api_v1_admin_security_agents__agent_id__violations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","title":"Agent Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/security/tournaments":{"get":{"tags":["admin","admin-security"],"summary":"List Tournaments With Flags","description":"List all tournaments that have (or had) flagged agents, with counts.","operationId":"list_tournaments_with_flags_api_v1_admin_security_tournaments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/security/tournament/{tournament_id}/rescan":{"post":{"tags":["admin","admin-security"],"summary":"Rescan Tournament Agents","description":"Re-scan all non-deleted agents in a tournament for security violations.\n\nResets the tournament's security state first:\n  1. Resolves all pending queue entries (resolution=\"rescan\").\n  2. Resets every non-blocked agent's security fields to clean.\n  3. Downloads each agent ZIP from R2 and runs the scanner.\n  4. Only agents that still fail get re-flagged with fresh queue entries.\n\nBlocked agents are skipped — they were explicitly blocked by an admin\nand should not be automatically unblocked by a rescan.","operationId":"rescan_tournament_agents_api_v1_admin_security_tournament__tournament_id__rescan_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/whitelist/domains":{"get":{"tags":["admin","whitelist"],"summary":"List Domains","description":"List whitelisted domains. Accessible by validators and admins via JWT or API key.","operationId":"list_domains_api_v1_admin_whitelist_domains_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by active status","title":"Is Active"},"description":"Filter by active status"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by domain or description","title":"Search"},"description":"Search by domain or description"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistDomainListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin","whitelist"],"summary":"Create Domain","description":"Create a whitelisted domain. Admin only.","operationId":"create_domain_api_v1_admin_whitelist_domains_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistDomainCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistDomainResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/whitelist/domains/{domain_id}":{"get":{"tags":["admin","whitelist"],"summary":"Get Domain","description":"Get a single whitelisted domain. Accessible by validators and admins via JWT or API key.","operationId":"get_domain_api_v1_admin_whitelist_domains__domain_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistDomainResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin","whitelist"],"summary":"Update Domain","description":"Update a whitelisted domain. Admin only.","operationId":"update_domain_api_v1_admin_whitelist_domains__domain_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistDomainUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistDomainResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin","whitelist"],"summary":"Delete Domain","description":"Delete a whitelisted domain. Admin only.","operationId":"delete_domain_api_v1_admin_whitelist_domains__domain_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/whitelist/ips":{"get":{"tags":["admin","whitelist"],"summary":"List Ips","description":"List whitelisted IPs. Accessible by validators and admins via JWT or API key.","operationId":"list_ips_api_v1_admin_whitelist_ips_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by active status","title":"Is Active"},"description":"Filter by active status"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by IP or description","title":"Search"},"description":"Search by IP or description"},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistIPListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin","whitelist"],"summary":"Create Ip","description":"Create a whitelisted IP. Admin only.","operationId":"create_ip_api_v1_admin_whitelist_ips_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistIPCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistIPResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/whitelist/ips/{ip_id}":{"get":{"tags":["admin","whitelist"],"summary":"Get Ip","description":"Get a single whitelisted IP. Accessible by validators and admins via JWT or API key.","operationId":"get_ip_api_v1_admin_whitelist_ips__ip_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ip_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Ip Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistIPResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin","whitelist"],"summary":"Update Ip","description":"Update a whitelisted IP. Admin only.","operationId":"update_ip_api_v1_admin_whitelist_ips__ip_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ip_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Ip Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistIPUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhitelistIPResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin","whitelist"],"summary":"Delete Ip","description":"Delete a whitelisted IP. Admin only.","operationId":"delete_ip_api_v1_admin_whitelist_ips__ip_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ip_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Ip Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reports/filters":{"get":{"tags":["admin","admin-reports"],"summary":"Get Report Filters","description":"Return distinct tournaments and validators that have reports, for filter dropdowns.","operationId":"get_report_filters_api_v1_admin_reports_filters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/reports":{"get":{"tags":["admin","admin-reports"],"summary":"List Reports","description":"List reports with optional filters, newest first.\n\nFilters: status, tournament_id, validator_hotkey (exact).\nSearch: agent_id (exact UUID or prefix match via CAST to text LIKE).","operationId":"list_reports_api_v1_admin_reports_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"pending | reviewed | resolved","title":"Status"},"description":"pending | reviewed | resolved"},{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id"}},{"name":"validator_hotkey","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validator Hotkey"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact agent UUID or prefix to search","title":"Agent Id"},"description":"Exact agent UUID or prefix to search"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin","admin-reports"],"summary":"Delete Filtered Reports","description":"Delete all reports matching the given filters. At least one filter is required.","operationId":"delete_filtered_reports_api_v1_admin_reports_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"pending | reviewed | resolved","title":"Status"},"description":"pending | reviewed | resolved"},{"name":"tournament_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id"}},{"name":"validator_hotkey","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validator Hotkey"}},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact agent UUID or prefix to search","title":"Agent Id"},"description":"Exact agent UUID or prefix to search"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reports/count":{"get":{"tags":["admin","admin-reports"],"summary":"Get Report Count","description":"Count of pending (unreviewed) reports for sidebar badge.","operationId":"get_report_count_api_v1_admin_reports_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/reports/{report_id}":{"get":{"tags":["admin","admin-reports"],"summary":"Get Report Detail","description":"Full detail for a single report.","operationId":"get_report_detail_api_v1_admin_reports__report_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reports/{report_id}/review":{"patch":{"tags":["admin","admin-reports"],"summary":"Review Report","description":"Mark a report as reviewed with optional admin notes.","operationId":"review_report_api_v1_admin_reports__report_id__review_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/reports/{report_id}/block":{"post":{"tags":["admin","admin-reports"],"summary":"Block User From Report","description":"Block the user and all their submissions based on a report.\n\n1. Blocks the user account via account-backend.\n2. Sets status='blocked' and security_status='blocked' on ALL\n   non-deleted agents owned by that user.\n3. Marks the report as resolved.","operationId":"block_user_from_report_api_v1_admin_reports__report_id__block_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/notifications/{tournament_id}/config":{"get":{"tags":["admin","admin-notifications"],"summary":"Get Config","operationId":"get_config_api_v1_admin_notifications__tournament_id__config_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminNotificationConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin","admin-notifications"],"summary":"Update Config","operationId":"update_config_api_v1_admin_notifications__tournament_id__config_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminNotificationConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminNotificationConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/notifications/{tournament_id}/queued":{"get":{"tags":["admin","admin-notifications"],"summary":"Get Queued","operationId":"get_queued_api_v1_admin_notifications__tournament_id__queued_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueuedNotificationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/notifications/{tournament_id}/logs":{"get":{"tags":["admin","admin-notifications"],"summary":"List Notification Logs","description":"Paginated notification_log rows for a tournament (newest first).","operationId":"list_notification_logs_api_v1_admin_notifications__tournament_id__logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status (e.g. sent, failed, queued)","title":"Status"},"description":"Filter by status (e.g. sent, failed, queued)"},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by event type","title":"Event Type"},"description":"Filter by event type"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationLogListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/notifications/{tournament_id}/send":{"post":{"tags":["admin","admin-notifications"],"summary":"Send Queued","operationId":"send_queued_api_v1_admin_notifications__tournament_id__send_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendQueuedRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendQueuedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/notifications/{tournament_id}/manual-send":{"post":{"tags":["admin","admin-notifications"],"summary":"Send Manual Email","description":"Manual send: all tournament whitelist addresses, or all opted-in users; optional single address.","operationId":"send_manual_email_api_v1_admin_notifications__tournament_id__manual_send_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualSendEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualSendEmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/notifications/{tournament_id}/discard":{"post":{"tags":["admin","admin-notifications"],"summary":"Discard Queued","operationId":"discard_queued_api_v1_admin_notifications__tournament_id__discard_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscardQueuedRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscardQueuedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/notifications/{tournament_id}/preview":{"get":{"tags":["admin","admin-notifications"],"summary":"Preview Email","operationId":"preview_email_api_v1_admin_notifications__tournament_id__preview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"event_type","in":"query","required":true,"schema":{"type":"string","title":"Event Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin","admin-notifications"],"summary":"Preview Email Post","description":"Preview with request body (use for platform_event with custom HTML).","operationId":"preview_email_post_api_v1_admin_notifications__tournament_id__preview_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailPreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/notifications/status":{"get":{"tags":["admin","admin-notifications"],"summary":"Get Status","operationId":"get_status_api_v1_admin_notifications_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSystemStatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/notifications/{tournament_id}/retry-failed":{"post":{"tags":["admin","admin-notifications"],"summary":"Retry Failed","operationId":"retry_failed_api_v1_admin_notifications__tournament_id__retry_failed_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryFailedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tournaments/{tournament_id}/faqs":{"get":{"tags":["admin","admin"],"summary":"List Faqs","description":"List all FAQs for a tournament ordered by display_order.","operationId":"list_faqs_api_v1_admin_tournaments__tournament_id__faqs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TournamentFAQItem"},"title":"Response List Faqs Api V1 Admin Tournaments  Tournament Id  Faqs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin","admin"],"summary":"Create Faq","description":"Create a new FAQ entry for a tournament.","operationId":"create_faq_api_v1_admin_tournaments__tournament_id__faqs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentFAQCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentFAQItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/tournaments/{tournament_id}/faqs/{faq_id}":{"patch":{"tags":["admin","admin"],"summary":"Update Faq","description":"Update an existing FAQ entry.","operationId":"update_faq_api_v1_admin_tournaments__tournament_id__faqs__faq_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"faq_id","in":"path","required":true,"schema":{"type":"string","title":"Faq Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentFAQUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TournamentFAQItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin","admin"],"summary":"Delete Faq","description":"Delete a FAQ entry.","operationId":"delete_faq_api_v1_admin_tournaments__tournament_id__faqs__faq_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tournament_id","in":"path","required":true,"schema":{"type":"string","title":"Tournament Id"}},{"name":"faq_id","in":"path","required":true,"schema":{"type":"string","title":"Faq Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/platform-faqs":{"get":{"tags":["admin","admin"],"summary":"List Platform Faqs","description":"List all platform FAQs ordered by display_order.","operationId":"list_platform_faqs_api_v1_admin_platform_faqs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PlatformFAQItem"},"type":"array","title":"Response List Platform Faqs Api V1 Admin Platform Faqs Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["admin","admin"],"summary":"Create Platform Faq","operationId":"create_platform_faq_api_v1_admin_platform_faqs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformFAQCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformFAQItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/platform-faqs/{faq_id}":{"patch":{"tags":["admin","admin"],"summary":"Update Platform Faq","operationId":"update_platform_faq_api_v1_admin_platform_faqs__faq_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"faq_id","in":"path","required":true,"schema":{"type":"string","title":"Faq Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformFAQUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformFAQItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin","admin"],"summary":"Delete Platform Faq","operationId":"delete_platform_faq_api_v1_admin_platform_faqs__faq_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"faq_id","in":"path","required":true,"schema":{"type":"string","title":"Faq Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AdminActionResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"action":{"type":"string","title":"Action"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details"},"audit_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Audit Id"}},"type":"object","required":["success","message","action"],"title":"AdminActionResponse","description":"Standard response for any admin mutation."},"AdminNotificationConfigResponse":{"properties":{"tournament_id":{"type":"string","title":"Tournament Id"},"notifications_enabled":{"type":"boolean","title":"Notifications Enabled"},"contest_start_mode":{"type":"string","title":"Contest Start Mode"},"submit_window_start_mode":{"type":"string","title":"Submit Window Start Mode"},"winner_approved_mode":{"type":"string","title":"Winner Approved Mode"},"no_winner_mode":{"type":"string","title":"No Winner Mode"},"email_whitelist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Email Whitelist"},"global_whitelist_active":{"type":"boolean","title":"Global Whitelist Active","default":false},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["tournament_id","notifications_enabled","contest_start_mode","submit_window_start_mode","winner_approved_mode","no_winner_mode"],"title":"AdminNotificationConfigResponse"},"AdminNotificationConfigUpdate":{"properties":{"notifications_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Notifications Enabled"},"contest_start_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contest Start Mode"},"submit_window_start_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Submit Window Start Mode"},"winner_approved_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Approved Mode"},"no_winner_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"No Winner Mode"},"email_whitelist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Email Whitelist"}},"type":"object","title":"AdminNotificationConfigUpdate"},"AgentListResponse":{"properties":{"agents":{"items":{"$ref":"#/components/schemas/AgentResponse"},"type":"array","title":"Agents"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit","default":0},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","required":["agents","total"],"title":"AgentListResponse","description":"List agents response."},"AgentResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"coldkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coldkey"},"content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Hash"},"task_name":{"type":"string","title":"Task Name"},"task_version":{"type":"integer","title":"Task Version"},"tournament_version":{"type":"integer","title":"Tournament Version"},"pushed_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pushed Block"},"pushed_at":{"type":"string","format":"date-time","title":"Pushed At"},"file_size":{"type":"integer","title":"File Size"},"status":{"type":"string","title":"Status"},"meta_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta Data"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank"},"upload_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Upload Block"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"},"security_status":{"type":"string","title":"Security Status","default":"clean"},"security_warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Security Warning"},"security_flagged_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Security Flagged At"},"security_violations":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Security Violations","description":"Detailed violation list (admin-only)"}},"type":"object","required":["id","tournament_id","user_id","miner_hotkey","task_name","task_version","tournament_version","pushed_at","file_size","status","created_at","uploaded_at"],"title":"AgentResponse","description":"Agent response schema."},"AgentUploadResponse":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"coldkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coldkey"},"content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Hash"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"},"file_size":{"type":"integer","title":"File Size"},"status":{"type":"string","title":"Status"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"security_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Security Status"},"security_warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Security Warning"}},"type":"object","required":["agent_id","tournament_id","miner_hotkey","uploaded_at","file_size","status"],"title":"AgentUploadResponse","description":"Response after agent upload."},"AggregatedScoreResponse":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"phase":{"type":"string","title":"Phase","default":"private"},"aggregated_score":{"type":"number","title":"Aggregated Score"},"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank"},"completed_evaluations":{"items":{"$ref":"#/components/schemas/CompletedEvaluationDetail"},"type":"array","title":"Completed Evaluations"},"failed_evaluations":{"items":{"$ref":"#/components/schemas/FailedEvaluationDetail"},"type":"array","title":"Failed Evaluations"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["tournament_id","agent_id","miner_hotkey","aggregated_score","completed_evaluations","failed_evaluations","created_at","updated_at"],"title":"AggregatedScoreResponse","description":"Aggregated score response with miner info."},"ApproveWinnerRequest":{"properties":{"is_public":{"type":"boolean","title":"Is Public","default":false}},"type":"object","title":"ApproveWinnerRequest","description":"Request schema for approving a winner."},"AuditLogEntry":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"admin_user_id":{"type":"string","format":"uuid","title":"Admin User Id"},"admin_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Email"},"action":{"type":"string","title":"Action"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","admin_user_id","action","created_at"],"title":"AuditLogEntry"},"AuditLogListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AuditLogEntry"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"AuditLogListResponse"},"AvailableHotkey":{"properties":{"hotkey":{"type":"string","title":"Hotkey"},"uid":{"type":"integer","title":"Uid"},"stake":{"type":"number","title":"Stake","default":0.0},"stake_weight":{"type":"number","title":"Stake Weight","default":0.0},"linked_to":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Linked To"},"linked_user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linked User Name"}},"type":"object","required":["hotkey","uid"],"title":"AvailableHotkey","description":"Hotkey from metagraph available for linking."},"AvailableHotkeysResponse":{"properties":{"hotkeys":{"items":{"$ref":"#/components/schemas/AvailableHotkey"},"type":"array","title":"Hotkeys"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["hotkeys","total"],"title":"AvailableHotkeysResponse","description":"List of available hotkeys response."},"AvailableValidator":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"fullname":{"type":"string","title":"Fullname"},"email":{"type":"string","title":"Email"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"is_linked":{"type":"boolean","title":"Is Linked","default":false},"linked_hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linked Hotkey"}},"type":"object","required":["user_id","fullname","email"],"title":"AvailableValidator","description":"Validator from Account Platform available for linking."},"AvailableValidatorsResponse":{"properties":{"validators":{"items":{"$ref":"#/components/schemas/AvailableValidator"},"type":"array","title":"Validators"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["validators","total"],"title":"AvailableValidatorsResponse","description":"List of available validators response."},"Body_submit_evaluation_api_v1_evaluations_submit_post":{"properties":{"validator_hotkey":{"type":"string","title":"Validator Hotkey","description":"Validator hotkey"},"score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Score","description":"Score (float)"},"metadata":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metadata","description":"JSON object for optional metadata"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"Optional text summary"},"log_file":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Log File","description":"Optional log file (e.g. zip)"},"log_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Log Hash","description":"SHA256 hash of log file (for verification)"}},"type":"object","required":["validator_hotkey"],"title":"Body_submit_evaluation_api_v1_evaluations_submit_post"},"Body_upload_agent_api_v1_agents_upload__tournament_id__post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"miner_hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Miner Hotkey"},"content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Hash"}},"type":"object","required":["file"],"title":"Body_upload_agent_api_v1_agents_upload__tournament_id__post"},"Body_upload_and_attach_media_api_v1_admin_tournaments__tournament_id__gallery_upload_post":{"properties":{"media_type":{"type":"string","enum":["thumbnail","video"],"title":"Media Type"},"file":{"type":"string","format":"binary","title":"File"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"alt_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alt Text"}},"type":"object","required":["media_type","file"],"title":"Body_upload_and_attach_media_api_v1_admin_tournaments__tournament_id__gallery_upload_post"},"Body_upload_gallery_media_api_v1_admin_gallery_post":{"properties":{"media_type":{"type":"string","enum":["thumbnail","video"],"title":"Media Type"},"file":{"type":"string","format":"binary","title":"File"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"alt_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alt Text"}},"type":"object","required":["media_type","file"],"title":"Body_upload_gallery_media_api_v1_admin_gallery_post"},"CleanupAgent":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"user_id":{"type":"string","title":"User Id"},"fullname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fullname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"coldkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coldkey"},"content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Hash"},"pushed_at":{"type":"string","title":"Pushed At"},"file_size":{"type":"integer","title":"File Size"},"status":{"type":"string","title":"Status"}},"type":"object","required":["agent_id","user_id","miner_hotkey","pushed_at","file_size","status"],"title":"CleanupAgent","description":"Rich agent item for superseded / unevaluated agent listings."},"CleanupAgentListResponse":{"properties":{"tournament_id":{"type":"string","title":"Tournament Id"},"agents":{"items":{"$ref":"#/components/schemas/CleanupAgent"},"type":"array","title":"Agents","default":[]},"total_count":{"type":"integer","title":"Total Count","default":0},"total_storage_bytes":{"type":"integer","title":"Total Storage Bytes","default":0},"total_storage_mb":{"type":"number","title":"Total Storage Mb","default":0.0},"page":{"type":"integer","title":"Page","default":1},"page_size":{"type":"integer","title":"Page Size","default":50}},"type":"object","required":["tournament_id"],"title":"CleanupAgentListResponse","description":"Paginated response for superseded / unevaluated agent listings."},"CleanupPreviewResponse":{"properties":{"action":{"type":"string","title":"Action"},"entity_type":{"type":"string","title":"Entity Type"},"tournament_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id"},"items":{"items":{"$ref":"#/components/schemas/DryRunItem"},"type":"array","title":"Items","default":[]},"total_count":{"type":"integer","title":"Total Count","default":0},"total_storage_bytes":{"type":"integer","title":"Total Storage Bytes","default":0},"total_storage_mb":{"type":"number","title":"Total Storage Mb","default":0.0}},"type":"object","required":["action","entity_type"],"title":"CleanupPreviewResponse","description":"Preview / dry-run result before destructive cleanup."},"CompletedEvaluationDetail":{"properties":{"evaluation_id":{"type":"string","title":"Evaluation Id"},"validator_hotkey":{"type":"string","title":"Validator Hotkey"},"validator_uid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Validator Uid"},"score":{"type":"number","title":"Score"},"stake":{"type":"number","title":"Stake"},"stake_weight":{"type":"number","title":"Stake Weight"}},"type":"object","required":["evaluation_id","validator_hotkey","score","stake","stake_weight"],"title":"CompletedEvaluationDetail","description":"Detail of a completed evaluation contributing to the score."},"DiscardQueuedRequest":{"properties":{"event_type":{"type":"string","title":"Event Type"}},"type":"object","required":["event_type"],"title":"DiscardQueuedRequest"},"DiscardQueuedResponse":{"properties":{"discarded_count":{"type":"integer","title":"Discarded Count"},"message":{"type":"string","title":"Message"}},"type":"object","required":["discarded_count","message"],"title":"DiscardQueuedResponse"},"DryRunItem":{"properties":{"id":{"type":"string","title":"Id"},"description":{"type":"string","title":"Description"},"storage_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Storage Bytes"}},"type":"object","required":["id","description"],"title":"DryRunItem","description":"Single item in a dry-run preview."},"DuplicateHashAgent":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"user_id":{"type":"string","title":"User Id"},"fullname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fullname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"coldkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coldkey"},"content_hash":{"type":"string","title":"Content Hash"},"pushed_at":{"type":"string","title":"Pushed At"},"file_size":{"type":"integer","title":"File Size"},"status":{"type":"string","title":"Status"}},"type":"object","required":["agent_id","user_id","miner_hotkey","content_hash","pushed_at","file_size","status"],"title":"DuplicateHashAgent","description":"Single agent within a duplicate-hash group."},"DuplicateHashGroup":{"properties":{"content_hash":{"type":"string","title":"Content Hash"},"agent_count":{"type":"integer","title":"Agent Count"},"unique_users":{"type":"integer","title":"Unique Users"},"unique_hotkeys":{"type":"integer","title":"Unique Hotkeys"},"agents":{"items":{"$ref":"#/components/schemas/DuplicateHashAgent"},"type":"array","title":"Agents"}},"type":"object","required":["content_hash","agent_count","unique_users","unique_hotkeys","agents"],"title":"DuplicateHashGroup","description":"Group of agents sharing the same content_hash."},"DuplicateHashResponse":{"properties":{"tournament_id":{"type":"string","title":"Tournament Id"},"groups":{"items":{"$ref":"#/components/schemas/DuplicateHashGroup"},"type":"array","title":"Groups","default":[]},"total_groups":{"type":"integer","title":"Total Groups","default":0},"total_duplicate_agents":{"type":"integer","title":"Total Duplicate Agents","default":0}},"type":"object","required":["tournament_id"],"title":"DuplicateHashResponse","description":"Response for the duplicate content-hash detection endpoint."},"EligibleMinerInfo":{"properties":{"hotkey":{"type":"string","title":"Hotkey"},"uid":{"type":"integer","title":"Uid"},"role":{"type":"string","title":"Role","default":"miner"},"block_number":{"type":"integer","title":"Block Number"},"confirmation_time":{"type":"string","format":"date-time","title":"Confirmation Time"}},"type":"object","required":["hotkey","uid","block_number","confirmation_time"],"title":"EligibleMinerInfo","description":"Single eligible miner information."},"EligibleMinerStatusEntry":{"properties":{"hotkey":{"type":"string","title":"Hotkey"},"uid":{"type":"integer","title":"Uid"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"uploaded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Uploaded At"},"upload_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Upload Block"}},"type":"object","required":["hotkey","uid"],"title":"EligibleMinerStatusEntry","description":"Eligible miner with latest agent status (for GET /agents/eligible-miners-status/{tournament_id})."},"EligibleMinersResponse":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"miners":{"items":{"$ref":"#/components/schemas/EligibleMinerInfo"},"type":"array","title":"Miners"},"total":{"type":"integer","title":"Total"},"locked":{"type":"boolean","title":"Locked"},"locked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Locked At"}},"type":"object","required":["tournament_id","miners","total","locked"],"title":"EligibleMinersResponse","description":"Eligible miners response."},"EligibleMinersStatusResponse":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"miners":{"items":{"$ref":"#/components/schemas/EligibleMinerStatusEntry"},"type":"array","title":"Miners"}},"type":"object","required":["tournament_id","miners"],"title":"EligibleMinersStatusResponse","description":"Response for GET /agents/eligible-miners-status/{tournament_id}."},"EmailPreviewRequest":{"properties":{"event_type":{"type":"string","title":"Event Type"},"platform_payload":{"anyOf":[{"$ref":"#/components/schemas/PlatformEventPayload"},{"type":"null"}]}},"type":"object","required":["event_type"],"title":"EmailPreviewRequest","description":"Preview body; for platform_event include platform_payload."},"EmailPreviewResponse":{"properties":{"subject":{"type":"string","title":"Subject"},"html_body":{"type":"string","title":"Html Body"},"text_body":{"type":"string","title":"Text Body"},"recipient_count":{"type":"integer","title":"Recipient Count"}},"type":"object","required":["subject","html_body","text_body","recipient_count"],"title":"EmailPreviewResponse"},"EvaluationDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"tournament_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Name"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Name"},"task_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Task Version"},"tournament_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tournament Version"},"validator_hotkey":{"type":"string","title":"Validator Hotkey"},"phase":{"type":"string","title":"Phase","default":"private"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"log_file_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Log File Path"},"status":{"type":"string","title":"Status"},"evaluated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Evaluated At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"}},"type":"object","required":["id","tournament_id","agent_id","miner_hotkey","validator_hotkey","status"],"title":"EvaluationDetailResponse","description":"Full evaluation detail with joined context."},"EvaluationListEntry":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"tournament_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Name"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"miner_uid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Miner Uid"},"task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Name"},"validator_hotkey":{"type":"string","title":"Validator Hotkey"},"phase":{"type":"string","title":"Phase","default":"private"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"log_file_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Log File Path"},"status":{"type":"string","title":"Status"},"evaluated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Evaluated At"}},"type":"object","required":["id","tournament_id","agent_id","miner_hotkey","validator_hotkey","status"],"title":"EvaluationListEntry","description":"Single evaluation in list response."},"EvaluationListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EvaluationListEntry"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["items","total","page","limit"],"title":"EvaluationListResponse","description":"Paginated list of evaluations."},"EvaluationProgressEntry":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"evaluated_by":{"items":{"type":"string"},"type":"array","title":"Evaluated By"},"pending_validators":{"items":{"type":"string"},"type":"array","title":"Pending Validators"}},"type":"object","required":["agent_id","miner_hotkey","evaluated_by","pending_validators"],"title":"EvaluationProgressEntry","description":"Single agent evaluation progress entry."},"EvaluationProgressResponse":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"phase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phase"},"total_agents":{"type":"integer","title":"Total Agents"},"total_validators":{"type":"integer","title":"Total Validators"},"completion_percentage":{"type":"number","title":"Completion Percentage"},"agents":{"items":{"$ref":"#/components/schemas/EvaluationProgressEntry"},"type":"array","title":"Agents"},"in_progress":{"items":{"$ref":"#/components/schemas/InProgressEntry"},"type":"array","title":"In Progress","default":[]}},"type":"object","required":["tournament_id","total_agents","total_validators","completion_percentage","agents"],"title":"EvaluationProgressResponse","description":"Evaluation progress response."},"EvaluationSubmitResponse":{"properties":{"evaluation_id":{"type":"string","format":"uuid","title":"Evaluation Id"},"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"validator_hotkey":{"type":"string","title":"Validator Hotkey"},"phase":{"type":"string","title":"Phase","default":"private"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"status":{"type":"string","title":"Status"},"evaluated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Evaluated At"}},"type":"object","required":["evaluation_id","tournament_id","agent_id","validator_hotkey","status"],"title":"EvaluationSubmitResponse","description":"Response from evaluation submission endpoint."},"EvaluationSubmitVerifyRequest":{"properties":{"validator_hotkey":{"type":"string","title":"Validator Hotkey","description":"Validator's SS58 hotkey address"},"public_key":{"type":"string","title":"Public Key","description":"Hex-encoded public key for signature verification"},"eval_info":{"type":"string","title":"Eval Info","description":"Signed string: hotkey:tournament_id:agent_id:timestamp[:log_hash]"},"signature":{"type":"string","title":"Signature","description":"Hex-encoded signature of eval_info"},"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id","description":"Tournament ID to submit evaluation for"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id","description":"Agent ID being evaluated"},"log_file_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Log File Size","description":"Size of log file in bytes (if any)"}},"type":"object","required":["validator_hotkey","public_key","eval_info","signature","tournament_id","agent_id"],"title":"EvaluationSubmitVerifyRequest","description":"Request to verify evaluation submission and get upload token.\n\nCLI sends this with wallet signature to prove hotkey ownership.\nFormat of eval_info: \"{hotkey}:{tournament_id}:{agent_id}:{timestamp}[:{log_hash}]\""},"EvaluationSubmitVerifyResponse":{"properties":{"upload_token":{"type":"string","title":"Upload Token","description":"Single-use token for evaluation submission"},"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"phase":{"type":"string","title":"Phase","description":"Phase locked into this token","default":"private"},"public_eval_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Public Eval End Time","description":"Public eval cutoff timestamp"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"max_log_file_size":{"type":"integer","title":"Max Log File Size","description":"Max log file size in bytes","default":104857600},"existing_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Existing Status","description":"Existing evaluation status if any (in_progress, pending)"}},"type":"object","required":["upload_token","tournament_id","agent_id","expires_at"],"title":"EvaluationSubmitVerifyResponse","description":"Response from evaluation verification endpoint."},"FailedEvaluationDetail":{"properties":{"evaluation_id":{"type":"string","title":"Evaluation Id"},"validator_hotkey":{"type":"string","title":"Validator Hotkey"},"validator_uid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Validator Uid"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["evaluation_id","validator_hotkey"],"title":"FailedEvaluationDetail","description":"Detail of a failed evaluation."},"FlagRequest":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"FlagRequest"},"GalleryMediaListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GalleryMediaResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"}},"type":"object","required":["items","total","page","page_size"],"title":"GalleryMediaListResponse","description":"Paginated media listing."},"GalleryMediaResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"alt_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alt Text"},"media_type":{"type":"string","title":"Media Type"},"content_type":{"type":"string","title":"Content Type"},"url":{"type":"string","title":"Url"},"file_size":{"type":"integer","title":"File Size"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"usage_count":{"type":"integer","title":"Usage Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","media_type","content_type","url","file_size","created_at","updated_at"],"title":"GalleryMediaResponse","description":"Full media record returned to clients."},"GalleryMediaUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Title"},"alt_text":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Alt Text"}},"type":"object","title":"GalleryMediaUpdate","description":"Fields that can be patched on an existing media record."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InProgressEntry":{"properties":{"agent_id":{"type":"string","title":"Agent Id"},"validator_hotkey":{"type":"string","title":"Validator Hotkey"},"updated_at":{"type":"number","title":"Updated At"}},"type":"object","required":["agent_id","validator_hotkey","updated_at"],"title":"InProgressEntry","description":"Single agent-in-progress entry from cache."},"InProgressRequestWithSignature":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id"},"validator_hotkey":{"type":"string","title":"Validator Hotkey","description":"Validator's SS58 hotkey address"},"public_key":{"type":"string","title":"Public Key","description":"Hex-encoded public key for signature verification"},"eval_info":{"type":"string","title":"Eval Info","description":"Signed string: hotkey:tournament_id:agent_id:timestamp"},"signature":{"type":"string","title":"Signature","description":"Hex-encoded signature of eval_info"}},"type":"object","required":["tournament_id","validator_hotkey","public_key","eval_info","signature"],"title":"InProgressRequestWithSignature","description":"Request to report which agent a validator is currently evaluating (with wallet signature).\n\nCLI sends this with wallet signature to prove hotkey ownership.\nFormat of eval_info: \"{hotkey}:{tournament_id}:{agent_id}:{timestamp}\"\nSend agent_id as null/None to clear in-progress status."},"LeaderboardEntry":{"properties":{"rank":{"type":"integer","title":"Rank"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"file_size":{"type":"integer","title":"File Size"},"aggregated_score":{"type":"number","title":"Aggregated Score"},"num_evaluations":{"type":"integer","title":"Num Evaluations"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"},"completed_evaluations":{"anyOf":[{"items":{"$ref":"#/components/schemas/CompletedEvaluationDetail"},"type":"array"},{"type":"null"}],"title":"Completed Evaluations"},"failed_evaluations":{"anyOf":[{"items":{"$ref":"#/components/schemas/FailedEvaluationDetail"},"type":"array"},{"type":"null"}],"title":"Failed Evaluations"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["rank","agent_id","miner_hotkey","file_size","aggregated_score","num_evaluations","uploaded_at"],"title":"LeaderboardEntry","description":"Leaderboard entry."},"LeaderboardResponse":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"phase":{"type":"string","title":"Phase","default":"private"},"available_phases":{"items":{"type":"string"},"type":"array","title":"Available Phases","default":[]},"is_final":{"type":"boolean","title":"Is Final","default":false},"entries":{"items":{"$ref":"#/components/schemas/LeaderboardEntry"},"type":"array","title":"Entries"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["tournament_id","entries","total"],"title":"LeaderboardResponse","description":"Leaderboard response."},"ManualSendEmailRequest":{"properties":{"event_type":{"type":"string","title":"Event Type"},"to_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Email"},"platform_payload":{"anyOf":[{"$ref":"#/components/schemas/PlatformEventPayload"},{"type":"null"}]}},"type":"object","required":["event_type"],"title":"ManualSendEmailRequest"},"ManualSendEmailResponse":{"properties":{"message":{"type":"string","title":"Message"},"sent_count":{"type":"integer","title":"Sent Count"}},"type":"object","required":["message","sent_count"],"title":"ManualSendEmailResponse"},"NotificationEventSummary":{"properties":{"timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Timestamp"},"event_type":{"type":"string","title":"Event Type"},"count":{"type":"integer","title":"Count"},"status":{"type":"string","title":"Status"},"tournament_id":{"type":"string","title":"Tournament Id"}},"type":"object","required":["event_type","count","status","tournament_id"],"title":"NotificationEventSummary"},"NotificationLogEntry":{"properties":{"id":{"type":"string","title":"Id"},"event_type":{"type":"string","title":"Event Type"},"tournament_id":{"type":"string","title":"Tournament Id"},"user_id":{"type":"string","title":"User Id"},"recipient_email":{"type":"string","title":"Recipient Email"},"status":{"type":"string","title":"Status"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"retry_count":{"type":"integer","title":"Retry Count","default":0},"approved_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approved By"},"approved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Approved At"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","event_type","tournament_id","user_id","recipient_email","status","created_at"],"title":"NotificationLogEntry"},"NotificationLogListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/NotificationLogEntry"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"tournament_id":{"type":"string","title":"Tournament Id"}},"type":"object","required":["items","total","limit","offset","tournament_id"],"title":"NotificationLogListResponse"},"NotificationPreferencesResponse":{"properties":{"email_enabled":{"type":"boolean","title":"Email Enabled"},"contest_start":{"type":"boolean","title":"Contest Start"},"submit_window_start":{"type":"boolean","title":"Submit Window Start"},"winner_update":{"type":"boolean","title":"Winner Update"},"platform_events":{"type":"boolean","title":"Platform Events"}},"type":"object","required":["email_enabled","contest_start","submit_window_start","winner_update","platform_events"],"title":"NotificationPreferencesResponse"},"NotificationPreferencesUpdate":{"properties":{"email_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Enabled"},"contest_start":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Contest Start"},"submit_window_start":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Submit Window Start"},"winner_update":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Winner Update"},"platform_events":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Platform Events"}},"type":"object","title":"NotificationPreferencesUpdate"},"NotificationSystemStatusResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"provider":{"type":"string","title":"Provider"},"queued_count":{"type":"integer","title":"Queued Count"},"pending_count":{"type":"integer","title":"Pending Count"},"sent_last_24h":{"type":"integer","title":"Sent Last 24H"},"failed_last_24h":{"type":"integer","title":"Failed Last 24H"},"discarded_last_24h":{"type":"integer","title":"Discarded Last 24H"},"last_check_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Check At"},"recent_events":{"items":{"$ref":"#/components/schemas/NotificationEventSummary"},"type":"array","title":"Recent Events","default":[]}},"type":"object","required":["enabled","provider","queued_count","pending_count","sent_last_24h","failed_last_24h","discarded_last_24h"],"title":"NotificationSystemStatusResponse"},"PlatformEventPayload":{"properties":{"subject":{"type":"string","maxLength":200,"minLength":1,"title":"Subject"},"headline":{"type":"string","maxLength":300,"minLength":1,"title":"Headline"},"body_html":{"type":"string","maxLength":100000,"minLength":1,"title":"Body Html"},"cta_label":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Cta Label"},"cta_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Cta Url"},"event_badge":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Event Badge"}},"type":"object","required":["subject","headline","body_html"],"title":"PlatformEventPayload","description":"Content for the platform_event email (major updates, Simstore launch, etc.)."},"PlatformFAQCreate":{"properties":{"question":{"type":"string","minLength":1,"title":"Question","description":"The question"},"answer":{"type":"string","minLength":1,"title":"Answer","description":"The answer"},"display_order":{"type":"integer","minimum":0.0,"title":"Display Order","description":"Ordering index (lower = first)","default":0}},"type":"object","required":["question","answer"],"title":"PlatformFAQCreate"},"PlatformFAQItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"question":{"type":"string","title":"Question"},"answer":{"type":"string","title":"Answer"},"display_order":{"type":"integer","title":"Display Order","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","question","answer","created_at","updated_at"],"title":"PlatformFAQItem","description":"A single platform-wide FAQ entry."},"PlatformFAQUpdate":{"properties":{"question":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Question"},"answer":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Answer"},"display_order":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Display Order"}},"type":"object","title":"PlatformFAQUpdate"},"PreliminaryLeaderResponse":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"leader_hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Leader Hotkey"},"leader_agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Leader Agent Id"},"leader_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Leader Score"},"phase":{"type":"string","title":"Phase","default":"public"}},"type":"object","required":["tournament_id"],"title":"PreliminaryLeaderResponse","description":"Current leaderboard leader for pre-reward emission allocation."},"PublicAgentListResponse":{"properties":{"agents":{"items":{"$ref":"#/components/schemas/PublicAgentResponse"},"type":"array","title":"Agents"},"total":{"type":"integer","title":"Total"},"participants_count":{"type":"integer","title":"Participants Count","description":"Distinct user_id values in this filtered result (Nepher accounts with ≥1 submission here).","default":0},"limit":{"type":"integer","title":"Limit","default":0},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","required":["agents","total"],"title":"PublicAgentListResponse","description":"List agents response for public endpoint with eligibility info."},"PublicAgentResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"},"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"task_name":{"type":"string","title":"Task Name"},"task_version":{"type":"integer","title":"Task Version"},"tournament_version":{"type":"integer","title":"Tournament Version"},"pushed_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pushed Block"},"pushed_at":{"type":"string","format":"date-time","title":"Pushed At"},"file_size":{"type":"integer","title":"File Size"},"status":{"type":"string","title":"Status"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank"},"upload_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Upload Block"},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"},"is_eligible":{"type":"boolean","title":"Is Eligible","default":false},"security_status":{"type":"string","title":"Security Status","default":"clean"}},"type":"object","required":["id","tournament_id","miner_hotkey","task_name","task_version","tournament_version","pushed_at","file_size","status","uploaded_at"],"title":"PublicAgentResponse","description":"Agent response schema for public list with eligibility info."},"QueuedNotificationItem":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"recipient_email":{"type":"string","title":"Recipient Email"},"event_type":{"type":"string","title":"Event Type"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","user_id","recipient_email","event_type","status","created_at"],"title":"QueuedNotificationItem"},"QueuedNotificationListResponse":{"properties":{"notifications":{"items":{"$ref":"#/components/schemas/QueuedNotificationItem"},"type":"array","title":"Notifications"},"total":{"type":"integer","title":"Total"},"event_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"},"tournament_id":{"type":"string","title":"Tournament Id"}},"type":"object","required":["notifications","total","tournament_id"],"title":"QueuedNotificationListResponse"},"ReportCreateRequest":{"properties":{"tournament_id":{"type":"string","title":"Tournament Id","description":"Tournament UUID"},"agent_id":{"type":"string","title":"Agent Id","description":"Agent UUID that failed evaluation"},"evaluation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Id","description":"Evaluation UUID if available"},"validator_hotkey":{"type":"string","title":"Validator Hotkey","description":"Hotkey of the reporting validator"},"log_content":{"type":"string","maxLength":500000,"minLength":1,"title":"Log Content","description":"Full failure log"},"error_type":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Error Type","description":"Category: runtime_error, timeout, security_violation, etc."},"summary":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Summary","description":"Short description of the failure"}},"type":"object","required":["tournament_id","agent_id","validator_hotkey","log_content"],"title":"ReportCreateRequest"},"ReportCreateResponse":{"properties":{"report_id":{"type":"string","title":"Report Id"},"message":{"type":"string","title":"Message"}},"type":"object","required":["report_id","message"],"title":"ReportCreateResponse"},"RetryFailedResponse":{"properties":{"retried_count":{"type":"integer","title":"Retried Count"},"message":{"type":"string","title":"Message"}},"type":"object","required":["retried_count","message"],"title":"RetryFailedResponse"},"ReviewRequest":{"properties":{"admin_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Notes"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","title":"ReviewRequest"},"ScoreBulkCreate":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"scores":{"items":{"$ref":"#/components/schemas/ScoreCreate"},"type":"array","title":"Scores"}},"type":"object","required":["tournament_id","scores"],"title":"ScoreBulkCreate"},"ScoreCreate":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id"},"score":{"type":"number","title":"Score"},"validator_hotkey":{"type":"string","title":"Validator Hotkey"},"stake_weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stake Weight"}},"type":"object","required":["agent_id","score","validator_hotkey"],"title":"ScoreCreate"},"SendQueuedRequest":{"properties":{"event_type":{"type":"string","title":"Event Type"},"exclude_user_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Exclude User Ids"},"notification_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Notification Ids"}},"type":"object","required":["event_type"],"title":"SendQueuedRequest"},"SendQueuedResponse":{"properties":{"approved_count":{"type":"integer","title":"Approved Count"},"excluded_count":{"type":"integer","title":"Excluded Count","default":0},"message":{"type":"string","title":"Message"}},"type":"object","required":["approved_count","message"],"title":"SendQueuedResponse"},"TournamentAutoStartUpdate":{"properties":{"next_tournament_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Tournament Id","description":"Tournament ID to auto-start when this one completes. Set to null to disable."}},"type":"object","title":"TournamentAutoStartUpdate","description":"Schema for setting auto-start next tournament."},"TournamentCreate":{"properties":{"task_name":{"type":"string","title":"Task Name","description":"Task name identifier"},"task_version":{"type":"integer","title":"Task Version","description":"Task version number"},"tournament_version":{"type":"integer","title":"Tournament Version","description":"Tournament version number"},"task_gh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Gh","description":"GitHub link to the task repository"},"eval_gh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Gh","description":"GitHub link to the evaluation repository"},"subnet_config_yaml":{"type":"string","title":"Subnet Config Yaml","description":"Subnet configuration YAML content"},"eval_config_yaml":{"type":"string","title":"Eval Config Yaml","description":"Evaluation configuration YAML content"},"public_eval_config_yaml":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Eval Config Yaml","description":"Public evaluation config YAML (enables two-phase)"},"public_eval_buffer_hours":{"anyOf":[{"type":"integer","maximum":48.0,"minimum":1.0},{"type":"null"}],"title":"Public Eval Buffer Hours","description":"Hours before private eval to cut off public eval","default":6},"is_test":{"type":"boolean","title":"Is Test","description":"Test mode — only whitelisted users can submit agents","default":false},"test_whitelist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Test Whitelist","description":"User IDs allowed to submit when is_test is true"},"title":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Title","description":"Human-readable competition title (e.g. 'Wildfire Detection Challenge')"},"subtitle":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Subtitle","description":"Short tagline shown under the title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Full Markdown description of the problem"},"overview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overview","description":"Short summary shown in listing cards"},"evaluation_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Description","description":"Markdown explanation of the scoring metric"},"rules":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rules","description":"Competition rules in Markdown"},"dataset_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Description","description":"Markdown description of the data miners receive"},"cover_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Image Url","description":"URL of the banner/hero image (legacy; prefer browse thumbnail from gallery)"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Topic tags (e.g. ['nlp', 'classification'])"},"difficulty":{"anyOf":[{"type":"string","enum":["beginner","intermediate","expert"]},{"type":"null"}],"title":"Difficulty","description":"Difficulty level: beginner / intermediate / expert"},"is_featured":{"type":"boolean","title":"Is Featured","description":"Pin to the top of the competition listing","default":false},"clone_from_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Clone From Id","description":"When set, gallery media links (and browse thumbnail) are copied from this tournament"}},"type":"object","required":["task_name","task_version","tournament_version","subnet_config_yaml","eval_config_yaml"],"title":"TournamentCreate","description":"Schema for creating a tournament."},"TournamentDetailResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_name":{"type":"string","title":"Task Name"},"task_version":{"type":"integer","title":"Task Version"},"tournament_version":{"type":"integer","title":"Tournament Version"},"task_gh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Gh"},"eval_gh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Gh"},"status":{"type":"string","title":"Status"},"stage":{"type":"string","title":"Stage"},"contest_start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contest Start Time"},"contest_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contest End Time"},"evaluation_start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Evaluation Start Time"},"evaluation_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Evaluation End Time"},"submit_window_start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Submit Window Start Time"},"reward_start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reward Start Time"},"reward_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reward End Time"},"has_public_eval":{"type":"boolean","title":"Has Public Eval","default":false},"current_eval_phase":{"anyOf":[{"type":"string","enum":["public","private","quiet_zone"]},{"type":"null"}],"title":"Current Eval Phase"},"public_eval_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Public Eval End Time"},"public_eval_buffer_hours":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Public Eval Buffer Hours"},"contest_start_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contest Start Block"},"contest_end_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contest End Block"},"submit_window_start_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Submit Window Start Block"},"evaluation_start_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Evaluation Start Block"},"evaluation_end_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Evaluation End Block"},"reward_start_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reward Start Block"},"reward_end_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reward End Block"},"reward_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reward Block"},"winner_agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Winner Agent Id"},"winner_hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Hotkey"},"winner_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Winner Score"},"winner_approved":{"type":"boolean","title":"Winner Approved","default":false},"winner_is_public":{"type":"boolean","title":"Winner Is Public","default":false},"winner_approved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Winner Approved At"},"winner_approved_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Approved By"},"is_test":{"type":"boolean","title":"Is Test","default":false},"test_whitelist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Test Whitelist"},"auto_start_next_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Auto Start Next Id"},"auto_start_next_task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Start Next Task Name"},"auto_start_next_task_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Start Next Task Version"},"auto_start_next_tournament_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Start Next Tournament Version"},"gallery_thumbnails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Gallery Thumbnails"},"gallery_videos":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Gallery Videos"},"gallery":{"anyOf":[{"items":{"$ref":"#/components/schemas/TournamentGalleryMediaItem"},"type":"array"},{"type":"null"}],"title":"Gallery"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"overview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overview"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"difficulty":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Difficulty"},"is_featured":{"type":"boolean","title":"Is Featured","default":false},"cover_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Image Url"},"browse_thumbnail_media_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Browse Thumbnail Media Id"},"browse_thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Browse Thumbnail Url"},"subnet_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Subnet Config"},"statistics":{"$ref":"#/components/schemas/TournamentStatistics"},"subnet_config_yaml":{"type":"string","title":"Subnet Config Yaml"},"eval_config_yaml":{"type":"string","title":"Eval Config Yaml"},"public_eval_config_yaml":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Eval Config Yaml"},"is_active":{"type":"boolean","title":"Is Active","default":false},"task_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Task Config"},"eval_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Eval Config"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"evaluation_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Description"},"rules":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rules"},"dataset_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Description"},"faqs":{"items":{"$ref":"#/components/schemas/TournamentFAQItem"},"type":"array","title":"Faqs","default":[]},"platform_faqs":{"items":{"$ref":"#/components/schemas/PlatformFAQItem"},"type":"array","title":"Platform Faqs","default":[]}},"type":"object","required":["id","task_name","task_version","tournament_version","status","stage","created_at","updated_at","statistics","subnet_config_yaml","eval_config_yaml"],"title":"TournamentDetailResponse","description":"Tournament detail response with full config context."},"TournamentFAQCreate":{"properties":{"question":{"type":"string","minLength":1,"title":"Question","description":"The question"},"answer":{"type":"string","minLength":1,"title":"Answer","description":"The answer"},"display_order":{"type":"integer","minimum":0.0,"title":"Display Order","description":"Ordering index (lower = first)","default":0}},"type":"object","required":["question","answer"],"title":"TournamentFAQCreate"},"TournamentFAQItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"question":{"type":"string","title":"Question"},"answer":{"type":"string","title":"Answer"},"display_order":{"type":"integer","title":"Display Order","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","tournament_id","question","answer","created_at","updated_at"],"title":"TournamentFAQItem","description":"A single FAQ entry embedded in tournament detail responses."},"TournamentFAQUpdate":{"properties":{"question":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Question"},"answer":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Answer"},"display_order":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Display Order"}},"type":"object","title":"TournamentFAQUpdate"},"TournamentGalleryAttach":{"properties":{"media_id":{"type":"string","format":"uuid","title":"Media Id"},"display_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Display Order","default":0}},"type":"object","required":["media_id"],"title":"TournamentGalleryAttach","description":"Request body to attach existing media to a tournament."},"TournamentGalleryItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"alt_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alt Text"},"media_type":{"type":"string","title":"Media Type"},"content_type":{"type":"string","title":"Content Type"},"url":{"type":"string","title":"Url"},"file_size":{"type":"integer","title":"File Size"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"display_order":{"type":"integer","title":"Display Order"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","media_type","content_type","url","file_size","display_order","created_at"],"title":"TournamentGalleryItem","description":"A gallery media item within a tournament context."},"TournamentGalleryMediaItem":{"properties":{"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"alt_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alt Text"},"media_type":{"type":"string","title":"Media Type"},"content_type":{"type":"string","title":"Content Type"},"url":{"type":"string","title":"Url"},"file_size":{"type":"integer","title":"File Size"},"width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Width"},"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"display_order":{"type":"integer","title":"Display Order","default":0}},"type":"object","required":["id","media_type","content_type","url","file_size"],"title":"TournamentGalleryMediaItem","description":"Inline gallery item embedded in tournament responses."},"TournamentGalleryReorder":{"properties":{"display_order":{"type":"integer","minimum":0.0,"title":"Display Order"}},"type":"object","required":["display_order"],"title":"TournamentGalleryReorder","description":"Request body to update display order of a linked media item."},"TournamentGalleryResponse":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"items":{"items":{"$ref":"#/components/schemas/TournamentGalleryItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["tournament_id","items","total"],"title":"TournamentGalleryResponse","description":"List of gallery items for a tournament."},"TournamentListResponse":{"properties":{"tournaments":{"items":{"$ref":"#/components/schemas/TournamentWithStats"},"type":"array","title":"Tournaments"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["tournaments","total","limit","offset"],"title":"TournamentListResponse","description":"List tournaments response."},"TournamentStatistics":{"properties":{"agents_count":{"type":"integer","title":"Agents Count","default":0},"participants_count":{"type":"integer","title":"Participants Count","default":0},"eligible_count":{"type":"integer","title":"Eligible Count","default":0},"validator_count":{"type":"integer","title":"Validator Count","default":0},"average_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Score"},"top_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Score"},"score_phase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Score Phase"}},"type":"object","title":"TournamentStatistics","description":"Tournament statistics."},"TournamentStatusUpdate":{"properties":{"status":{"type":"string","title":"Status","description":"New tournament status"}},"type":"object","required":["status"],"title":"TournamentStatusUpdate","description":"Schema for updating tournament status."},"TournamentUpdate":{"properties":{"task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Name"},"task_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Task Version"},"tournament_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tournament Version"},"task_gh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Gh"},"eval_gh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Gh"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"subnet_config_yaml":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subnet Config Yaml"},"eval_config_yaml":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Config Yaml"},"public_eval_config_yaml":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Eval Config Yaml"},"public_eval_buffer_hours":{"anyOf":[{"type":"integer","maximum":48.0,"minimum":1.0},{"type":"null"}],"title":"Public Eval Buffer Hours"},"is_test":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Test"},"test_whitelist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Test Whitelist"},"title":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Title"},"subtitle":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Subtitle"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"overview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overview"},"evaluation_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evaluation Description"},"rules":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rules"},"dataset_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Description"},"cover_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Image Url"},"browse_thumbnail_media_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Browse Thumbnail Media Id"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"difficulty":{"anyOf":[{"type":"string","enum":["beginner","intermediate","expert"]},{"type":"null"}],"title":"Difficulty"},"is_featured":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Featured"}},"type":"object","title":"TournamentUpdate","description":"Schema for updating a tournament."},"TournamentWithStats":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_name":{"type":"string","title":"Task Name"},"task_version":{"type":"integer","title":"Task Version"},"tournament_version":{"type":"integer","title":"Tournament Version"},"task_gh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Gh"},"eval_gh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Gh"},"status":{"type":"string","title":"Status"},"stage":{"type":"string","title":"Stage"},"contest_start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contest Start Time"},"contest_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contest End Time"},"evaluation_start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Evaluation Start Time"},"evaluation_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Evaluation End Time"},"submit_window_start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Submit Window Start Time"},"reward_start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reward Start Time"},"reward_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reward End Time"},"has_public_eval":{"type":"boolean","title":"Has Public Eval","default":false},"current_eval_phase":{"anyOf":[{"type":"string","enum":["public","private","quiet_zone"]},{"type":"null"}],"title":"Current Eval Phase"},"public_eval_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Public Eval End Time"},"public_eval_buffer_hours":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Public Eval Buffer Hours"},"contest_start_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contest Start Block"},"contest_end_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contest End Block"},"submit_window_start_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Submit Window Start Block"},"evaluation_start_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Evaluation Start Block"},"evaluation_end_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Evaluation End Block"},"reward_start_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reward Start Block"},"reward_end_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reward End Block"},"reward_block":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reward Block"},"winner_agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Winner Agent Id"},"winner_hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Hotkey"},"winner_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Winner Score"},"winner_approved":{"type":"boolean","title":"Winner Approved","default":false},"winner_is_public":{"type":"boolean","title":"Winner Is Public","default":false},"winner_approved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Winner Approved At"},"winner_approved_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Approved By"},"is_test":{"type":"boolean","title":"Is Test","default":false},"test_whitelist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Test Whitelist"},"auto_start_next_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Auto Start Next Id"},"auto_start_next_task_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auto Start Next Task Name"},"auto_start_next_task_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Start Next Task Version"},"auto_start_next_tournament_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auto Start Next Tournament Version"},"gallery_thumbnails":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Gallery Thumbnails"},"gallery_videos":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Gallery Videos"},"gallery":{"anyOf":[{"items":{"$ref":"#/components/schemas/TournamentGalleryMediaItem"},"type":"array"},{"type":"null"}],"title":"Gallery"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"overview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Overview"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"difficulty":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Difficulty"},"is_featured":{"type":"boolean","title":"Is Featured","default":false},"cover_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cover Image Url"},"browse_thumbnail_media_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Browse Thumbnail Media Id"},"browse_thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Browse Thumbnail Url"},"subnet_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Subnet Config"},"statistics":{"$ref":"#/components/schemas/TournamentStatistics"}},"type":"object","required":["id","task_name","task_version","tournament_version","status","stage","created_at","updated_at","statistics"],"title":"TournamentWithStats","description":"Tournament response with statistics."},"UploadVerifyRequest":{"properties":{"miner_hotkey":{"type":"string","title":"Miner Hotkey"},"public_key":{"type":"string","title":"Public Key"},"file_info":{"type":"string","title":"File Info"},"signature":{"type":"string","title":"Signature"},"file_size":{"type":"integer","title":"File Size"},"tournament_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id"}},"type":"object","required":["miner_hotkey","public_key","file_info","signature","file_size"],"title":"UploadVerifyRequest","description":"Request for upload verification (CLI submission)."},"UploadVerifyResponse":{"properties":{"upload_token":{"type":"string","title":"Upload Token"},"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"max_file_size":{"type":"integer","title":"Max File Size"}},"type":"object","required":["upload_token","tournament_id","expires_at","max_file_size"],"title":"UploadVerifyResponse","description":"Response for upload verification."},"UserDashboardStatsResponse":{"properties":{"lifetime_submissions":{"type":"integer","title":"Lifetime Submissions"},"tournaments_entered":{"type":"integer","title":"Tournaments Entered"},"personal_best_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Personal Best Score"}},"type":"object","required":["lifetime_submissions","tournaments_entered"],"title":"UserDashboardStatsResponse","description":"Cross-tournament submission metrics for the authenticated user."},"UserListResponse":{"properties":{"users":{"items":{"$ref":"#/components/schemas/UserResponse"},"type":"array","title":"Users"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["users","total","limit","offset"],"title":"UserListResponse","description":"User list response."},"UserResponse":{"properties":{"id":{"type":"string","title":"Id"},"fullname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fullname"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"role":{"type":"string","title":"Role"},"status":{"type":"string","title":"Status"},"last_uploaded":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Uploaded"},"last_login":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"linked_hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linked Hotkey"},"scoring_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Scoring Enabled"}},"type":"object","required":["id","role","status"],"title":"UserResponse","description":"User response with merged account-backend and tournament-backend data."},"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"},"ValidatorInfo":{"properties":{"link_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Link Id"},"is_active":{"type":"boolean","title":"Is Active","default":true},"scoring_enabled":{"type":"boolean","title":"Scoring Enabled","default":true},"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"},"fullname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fullname"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"is_linked":{"type":"boolean","title":"Is Linked","default":true},"account_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Role"},"account_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Status"},"hotkey":{"type":"string","title":"Hotkey"},"uid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Uid"},"stake":{"type":"number","title":"Stake","default":0.0},"stake_weight":{"type":"number","title":"Stake Weight","default":0.0},"evaluations_count":{"type":"integer","title":"Evaluations Count","default":0},"last_evaluation_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Evaluation At"}},"type":"object","required":["hotkey"],"title":"ValidatorInfo","description":"Complete validator info — composes user, staking, and activity data.\n\nAll linked validators are returned regardless of their current account role,\nso admins can spot and clean up role mismatches (e.g. role changed to miner)."},"ValidatorLinkCreate":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"hotkey":{"type":"string","title":"Hotkey"},"network":{"type":"string","title":"Network","description":"Bittensor network","default":"finney"},"subnet_uid":{"type":"integer","title":"Subnet Uid","description":"Subnet UID","default":49},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Admin notes"}},"type":"object","required":["user_id","hotkey"],"title":"ValidatorLinkCreate","description":"Request body for creating a validator link."},"ValidatorLinkResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"hotkey":{"type":"string","title":"Hotkey"},"network":{"type":"string","title":"Network"},"subnet_uid":{"type":"integer","title":"Subnet Uid"},"is_active":{"type":"boolean","title":"Is Active"},"scoring_enabled":{"type":"boolean","title":"Scoring Enabled","default":true},"linked_by":{"type":"string","format":"uuid","title":"Linked By"},"linked_at":{"type":"string","format":"date-time","title":"Linked At"},"updated_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","user_id","hotkey","network","subnet_uid","is_active","linked_by","linked_at"],"title":"ValidatorLinkResponse","description":"Response for a single validator link."},"ValidatorLinkUpdate":{"properties":{"hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hotkey"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"scoring_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Scoring Enabled"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"ValidatorLinkUpdate","description":"Request body for updating a validator link."},"ValidatorLinksResponse":{"properties":{"links":{"items":{"$ref":"#/components/schemas/ValidatorInfo"},"type":"array","title":"Links"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["links","total"],"title":"ValidatorLinksResponse","description":"List of validator links response."},"WeightCommitCreate":{"properties":{"validator_hotkey":{"type":"string","title":"Validator Hotkey"},"netuid":{"type":"integer","title":"Netuid"},"weight_hash":{"type":"string","title":"Weight Hash"},"weight_data":{"additionalProperties":{"type":"number"},"type":"object","title":"Weight Data"}},"type":"object","required":["validator_hotkey","netuid","weight_hash","weight_data"],"title":"WeightCommitCreate","description":"Request body for recording a successful weight commit."},"WeightCommitResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"validator_hotkey":{"type":"string","title":"Validator Hotkey"},"netuid":{"type":"integer","title":"Netuid"},"weight_hash":{"type":"string","title":"Weight Hash"},"weight_data":{"additionalProperties":{"type":"number"},"type":"object","title":"Weight Data"},"committed_at":{"type":"string","format":"date-time","title":"Committed At"}},"type":"object","required":["id","validator_hotkey","netuid","weight_hash","weight_data","committed_at"],"title":"WeightCommitResponse","description":"Response for a stored weight commit."},"WhitelistDomainCreate":{"properties":{"domain":{"type":"string","maxLength":255,"minLength":1,"title":"Domain","description":"Domain name (e.g. api.example.com)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional description"}},"type":"object","required":["domain"],"title":"WhitelistDomainCreate"},"WhitelistDomainListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WhitelistDomainResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"WhitelistDomainListResponse"},"WhitelistDomainResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"domain":{"type":"string","title":"Domain"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"type":"boolean","title":"Is Active"},"created_by":{"type":"string","format":"uuid","title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","domain","is_active","created_by","created_at"],"title":"WhitelistDomainResponse"},"WhitelistDomainUpdate":{"properties":{"domain":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Domain"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"WhitelistDomainUpdate"},"WhitelistIPCreate":{"properties":{"ip_address":{"type":"string","maxLength":50,"minLength":1,"title":"Ip Address","description":"IP address or CIDR range (e.g. 192.168.1.0/24)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional description"}},"type":"object","required":["ip_address"],"title":"WhitelistIPCreate"},"WhitelistIPListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WhitelistIPResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"WhitelistIPListResponse"},"WhitelistIPResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"ip_address":{"type":"string","title":"Ip Address"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"type":"boolean","title":"Is Active"},"created_by":{"type":"string","format":"uuid","title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","ip_address","is_active","created_by","created_at"],"title":"WhitelistIPResponse"},"WhitelistIPUpdate":{"properties":{"ip_address":{"anyOf":[{"type":"string","maxLength":50,"minLength":1},{"type":"null"}],"title":"Ip Address"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"WhitelistIPUpdate"},"WinnerHotkeyResponse":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"winner_hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Hotkey"},"winner_approved":{"type":"boolean","title":"Winner Approved"},"winner_agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Winner Agent Id"},"winner_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Winner Score"}},"type":"object","required":["tournament_id","winner_approved"],"title":"WinnerHotkeyResponse","description":"Winner hotkey response for reward."},"WinnerResponse":{"properties":{"tournament_id":{"type":"string","format":"uuid","title":"Tournament Id"},"winner_agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Winner Agent Id"},"winner_hotkey":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Hotkey"},"winner_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Winner Score"},"winner_approved":{"type":"boolean","title":"Winner Approved"},"winner_is_public":{"type":"boolean","title":"Winner Is Public","default":false},"winner_approved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Winner Approved At"},"winner_approved_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Approved By"}},"type":"object","required":["tournament_id","winner_approved"],"title":"WinnerResponse","description":"Winner information response."}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}