{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/healthz":{"get":{"tags":["System"],"summary":"Health Check","description":"Simple health check endpoint","operationId":"health_check_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/players":{"get":{"tags":["Players"],"summary":"Retrieve list of soccer players","description":"Returns a paginated list of players, including trading data such as last price, volume, and other filterable attributes like club, position, and age.","operationId":"get_players_players_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptions","description":"Number of records per page (options: 5, 10, 20, 50)","default":20},"description":"Number of records per page (options: 5, 10, 20, 50)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PlayersSortBy"},{"type":"null"}],"description":"Field to sort by","title":"Sort By"},"description":"Field to sort by"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"asc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"},{"name":"age_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Minimum age for players","title":"Age Min"},"description":"Minimum age for players"},{"name":"age_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Maximum age for players","title":"Age Max"},"description":"Maximum age for players"},{"name":"age","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Exact age for players","title":"Age"},"description":"Exact age for players"},{"name":"dob_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Earliest date of birth, as a unix timestamp (inclusive)","title":"Dob Min"},"description":"Earliest date of birth, as a unix timestamp (inclusive)"},{"name":"dob_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Latest date of birth, as a unix timestamp (inclusive)","title":"Dob Max"},"description":"Latest date of birth, as a unix timestamp (inclusive)"},{"name":"player_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Filter by specific player ID(s)","title":"Player Id"},"description":"Filter by specific player ID(s)"},{"name":"wages_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum wages","title":"Wages Min"},"description":"Minimum wages"},{"name":"wages_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum wages","title":"Wages Max"},"description":"Maximum wages"},{"name":"rating_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum rating","title":"Rating Min"},"description":"Minimum rating"},{"name":"rating_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum rating","title":"Rating Max"},"description":"Maximum rating"},{"name":"value_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum value","title":"Value Min"},"description":"Minimum value"},{"name":"value_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum value","title":"Value Max"},"description":"Maximum value"},{"name":"country_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country ID(s) to filter players (comma-separated for multiple values)","title":"Country Id"},"description":"Country ID(s) to filter players (comma-separated for multiple values)"},{"name":"owned","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter players owned by the given name","title":"Owned"},"description":"Filter players owned by the given name"},{"name":"positions","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of positions to filter players","title":"Positions"},"description":"Comma-separated list of positions to filter players"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by specific club ID","title":"Club Id"},"description":"Filter by specific club ID"},{"name":"free_agents","in":"query","required":false,"schema":{"type":"boolean","description":"If true, return only free agents (players with no club, i.e. club_id IS NULL). Cannot be combined with club_id.","default":false,"title":"Free Agents"},"description":"If true, return only free agents (players with no club, i.e. club_id IS NULL). Cannot be combined with club_id."},{"name":"allow_transfer","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by allow_transfer value","title":"Allow Transfer"},"description":"Filter by allow_transfer value"},{"name":"allow_renew","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by allow_renew value","title":"Allow Renew"},"description":"Filter by allow_renew value"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_PlayerResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/players/detailed":{"get":{"tags":["Players"],"summary":"Retrieve detailed soccer player data","description":"Provides a paginated list of players with additional fields such as fitness, injuries, contract details, rating breakdowns, and more comprehensive stats.","operationId":"get_players_detailed_players_detailed_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptions","description":"Number of records per page (options: 5, 10, 20, 50)","default":20},"description":"Number of records per page (options: 5, 10, 20, 50)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PlayersSortBy"},{"type":"null"}],"description":"Field to sort by","title":"Sort By"},"description":"Field to sort by"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"asc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"},{"name":"age_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Minimum age for players","title":"Age Min"},"description":"Minimum age for players"},{"name":"age_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Maximum age for players","title":"Age Max"},"description":"Maximum age for players"},{"name":"age","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Exact age for players","title":"Age"},"description":"Exact age for players"},{"name":"dob_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Earliest date of birth, as a unix timestamp (inclusive)","title":"Dob Min"},"description":"Earliest date of birth, as a unix timestamp (inclusive)"},{"name":"dob_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Latest date of birth, as a unix timestamp (inclusive)","title":"Dob Max"},"description":"Latest date of birth, as a unix timestamp (inclusive)"},{"name":"player_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Filter by specific player ID(s)","title":"Player Id"},"description":"Filter by specific player ID(s)"},{"name":"wages_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum wages","title":"Wages Min"},"description":"Minimum wages"},{"name":"wages_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum wages","title":"Wages Max"},"description":"Maximum wages"},{"name":"contract_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum contract","title":"Contract Min"},"description":"Minimum contract"},{"name":"contract_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum contract","title":"Contract Max"},"description":"Maximum contract"},{"name":"rating_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum rating","title":"Rating Min"},"description":"Minimum rating"},{"name":"rating_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum rating","title":"Rating Max"},"description":"Maximum rating"},{"name":"rating_gk_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum rating_gk","title":"Rating Gk Min"},"description":"Minimum rating_gk"},{"name":"rating_gk_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum rating_gk","title":"Rating Gk Max"},"description":"Maximum rating_gk"},{"name":"rating_tackling_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum rating_tackling","title":"Rating Tackling Min"},"description":"Minimum rating_tackling"},{"name":"rating_tackling_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum rating_tackling","title":"Rating Tackling Max"},"description":"Maximum rating_tackling"},{"name":"rating_passing_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum rating_passing","title":"Rating Passing Min"},"description":"Minimum rating_passing"},{"name":"rating_passing_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum rating_passing","title":"Rating Passing Max"},"description":"Maximum rating_passing"},{"name":"rating_shooting_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum rating_shooting","title":"Rating Shooting Min"},"description":"Minimum rating_shooting"},{"name":"rating_shooting_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum rating_shooting","title":"Rating Shooting Max"},"description":"Maximum rating_shooting"},{"name":"rating_aggression_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum rating_aggression","title":"Rating Aggression Min"},"description":"Minimum rating_aggression"},{"name":"rating_aggression_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum rating_aggression","title":"Rating Aggression Max"},"description":"Maximum rating_aggression"},{"name":"rating_stamina_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum rating_stamina","title":"Rating Stamina Min"},"description":"Minimum rating_stamina"},{"name":"rating_stamina_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum rating_stamina","title":"Rating Stamina Max"},"description":"Maximum rating_stamina"},{"name":"value_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum value","title":"Value Min"},"description":"Minimum value"},{"name":"value_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum value","title":"Value Max"},"description":"Maximum value"},{"name":"desired_contract_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum desired_contract","title":"Desired Contract Min"},"description":"Minimum desired_contract"},{"name":"desired_contract_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum desired_contract","title":"Desired Contract Max"},"description":"Maximum desired_contract"},{"name":"country_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country ID(s) to filter players (comma-separated for multiple values)","title":"Country Id"},"description":"Country ID(s) to filter players (comma-separated for multiple values)"},{"name":"owned","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter players owned by the given name","title":"Owned"},"description":"Filter players owned by the given name"},{"name":"positions","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of positions to filter players","title":"Positions"},"description":"Comma-separated list of positions to filter players"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by specific club ID","title":"Club Id"},"description":"Filter by specific club ID"},{"name":"position_mask","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Bitmask of positions to match (OR of position bits). Matched against the primary position, or multi_position when position_mask_multi=true.","title":"Position Mask"},"description":"Bitmask of positions to match (OR of position bits). Matched against the primary position, or multi_position when position_mask_multi=true."},{"name":"position_mask_multi","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"If true, match position_mask against multi_position (any position the player can play) instead of the primary position.","default":false,"title":"Position Mask Multi"},"description":"If true, match position_mask against multi_position (any position the player can play) instead of the primary position."},{"name":"include_loaned","in":"query","required":false,"schema":{"type":"boolean","description":"Include players on loan to the club when filtering by club_id","default":false,"title":"Include Loaned"},"description":"Include players on loan to the club when filtering by club_id"},{"name":"free_agents","in":"query","required":false,"schema":{"type":"boolean","description":"If true, return only free agents (players with no club, i.e. club_id IS NULL). Cannot be combined with club_id.","default":false,"title":"Free Agents"},"description":"If true, return only free agents (players with no club, i.e. club_id IS NULL). Cannot be combined with club_id."},{"name":"allow_transfer","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by allow_transfer value","title":"Allow Transfer"},"description":"Filter by allow_transfer value"},{"name":"allow_renew","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by allow_renew value","title":"Allow Renew"},"description":"Filter by allow_renew value"},{"name":"fitness","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by fitness","title":"Fitness"},"description":"Filter by fitness"},{"name":"retired","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by retired","title":"Retired"},"description":"Filter by retired"},{"name":"morale","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by morale","title":"Morale"},"description":"Filter by morale"},{"name":"injured","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by injured","title":"Injured"},"description":"Filter by injured"},{"name":"injury_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by injury_id","title":"Injury Id"},"description":"Filter by injury_id"},{"name":"position","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by position","title":"Position"},"description":"Filter by position"},{"name":"multi_position","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by multi_position","title":"Multi Position"},"description":"Filter by multi_position"},{"name":"ability_gk","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by ability_gk","title":"Ability Gk"},"description":"Filter by ability_gk"},{"name":"ability_tackling","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by ability_tackling","title":"Ability Tackling"},"description":"Filter by ability_tackling"},{"name":"ability_passing","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by ability_passing","title":"Ability Passing"},"description":"Filter by ability_passing"},{"name":"ability_shooting","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by ability_shooting","title":"Ability Shooting"},"description":"Filter by ability_shooting"},{"name":"banned","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by banned","title":"Banned"},"description":"Filter by banned"},{"name":"cup_tied","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by cup_tied","title":"Cup Tied"},"description":"Filter by cup_tied"},{"name":"yellow_cards","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by yellow_cards","title":"Yellow Cards"},"description":"Filter by yellow_cards"},{"name":"red_cards","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by red_cards","title":"Red Cards"},"description":"Filter by red_cards"},{"name":"agent_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by agent name, or 'NULL'/'NOT_NULL'","title":"Agent Name"},"description":"Filter by agent name, or 'NULL'/'NOT_NULL'"},{"name":"loan_offered","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by loan_offered season ID, or 'NULL'/'NOT_NULL'","title":"Loan Offered"},"description":"Filter by loan_offered season ID, or 'NULL'/'NOT_NULL'"},{"name":"loan_offer_accepted","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by loan_offer_accepted, or 'NULL'/'NOT_NULL'","title":"Loan Offer Accepted"},"description":"Filter by loan_offer_accepted, or 'NULL'/'NOT_NULL'"},{"name":"loaned_to_club","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by loaned_to_club, or 'NULL'/'NOT_NULL'","title":"Loaned To Club"},"description":"Filter by loaned_to_club, or 'NULL'/'NOT_NULL'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_PlayerDetailedResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/player/history/{player_id}":{"get":{"tags":["Players"],"summary":"Retrieve player history","description":"Returns the history of a soccer player, including information about past loans, historical ratings, and injury history.","operationId":"get_player_history_player_history__player_id__get","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"integer","title":"Player Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/player/transfer_history":{"get":{"tags":["Players"],"summary":"Retrieve transfer history","description":"Returns transfer history filtered by season_id, club_id, and/or player_id. If no season_id is specified, uses the latest season. At least one of club_id or player_id must be provided if season_id is not specified. With details=true each row also carries the player's dob (unix timestamp), position and multi_position (position bitmasks) and current rating.","operationId":"get_transfer_history_player_transfer_history_get","parameters":[{"name":"season_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by season ID. If not specified, uses the latest season","title":"Season Id"},"description":"Filter by season ID. If not specified, uses the latest season"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by club ID (matches either from or to club)","title":"Club Id"},"description":"Filter by club ID (matches either from or to club)"},{"name":"player_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by player ID","title":"Player Id"},"description":"Filter by player ID"},{"name":"details","in":"query","required":false,"schema":{"type":"boolean","description":"Also return each player's dob (unix timestamp), position and multi_position (position bitmasks) and current rating","default":false,"title":"Details"},"description":"Also return each player's dob (unix timestamp), position and multi_position (position bitmasks) and current rating"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransferHistoryItem"},"title":"Response Get Transfer History Player Transfer History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/players/loan_history":{"get":{"tags":["Players"],"summary":"Retrieve loan history","description":"Returns loan history filtered by season_id and/or club_id. At least one of season_id or club_id must be provided.","operationId":"get_loan_history_players_loan_history_get","parameters":[{"name":"season_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by season ID. If not specified, returns all seasons","title":"Season Id"},"description":"Filter by season ID. If not specified, returns all seasons"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by club ID (matches either from or to club)","title":"Club Id"},"description":"Filter by club ID (matches either from or to club)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LoanHistoryItem"},"title":"Response Get Loan History Players Loan History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/players/morale_history/{player_id}":{"get":{"tags":["Players"],"summary":"Get morale change history for a player","description":"Returns the latest 10 morale changes for a specific player","operationId":"get_player_morale_history_players_morale_history__player_id__get","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"integer","title":"Player Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of records to return","default":10,"title":"Limit"},"description":"Number of records to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoraleChangeResponse"},"title":"Response Get Player Morale History Players Morale History  Player Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/clubs":{"get":{"tags":["Clubs"],"summary":"Retrieve influence market data for clubs","description":"Fetch a paginated list of clubs, including basic market data such as last price, trading volume, and optional filtering. Returns a PaginatedResponse of ClubResponse objects.","operationId":"get_clubs_clubs_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptions","description":"Number of records per page (options: 5, 20, 50)","default":20},"description":"Number of records per page (options: 5, 20, 50)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ClubsSortBy"},{"type":"null"}],"description":"Field to sort by","title":"Sort By"},"description":"Field to sort by"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"asc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Filter by specific club ID(s)","title":"Club Id"},"description":"Filter by specific club ID(s)"},{"name":"country_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country ID to filter clubs","title":"Country Id"},"description":"Country ID to filter clubs"},{"name":"owned","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter clubs owned by the given name","title":"Owned"},"description":"Filter clubs owned by the given name"},{"name":"manager_locked","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Exact value for manager_locked","title":"Manager Locked"},"description":"Exact value for manager_locked"},{"name":"balance_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum balance","title":"Balance Min"},"description":"Minimum balance"},{"name":"balance_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum balance","title":"Balance Max"},"description":"Maximum balance"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ClubResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/clubs/detailed":{"get":{"tags":["Clubs"],"summary":"Retrieve detailed data for clubs","description":"Fetch a paginated list of clubs, including extended fields such as form, stadium data, fan counts, and more advanced filtering. Returns a PaginatedResponse of ClubDetailedResponse objects.","operationId":"get_clubs_detailed_clubs_detailed_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptions","description":"Number of records per page (options: 5, 20, 50)","default":20},"description":"Number of records per page (options: 5, 20, 50)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ClubsSortBy"},{"type":"null"}],"description":"Field to sort by","title":"Sort By"},"description":"Field to sort by"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"asc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Filter by specific club ID(s)","title":"Club Id"},"description":"Filter by specific club ID(s)"},{"name":"country_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country ID to filter clubs","title":"Country Id"},"description":"Country ID to filter clubs"},{"name":"owned","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter clubs owned by the given name","title":"Owned"},"description":"Filter clubs owned by the given name"},{"name":"manager_locked","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Exact value for manager_locked","title":"Manager Locked"},"description":"Exact value for manager_locked"},{"name":"available","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Availability status: 1 (available) or 0 (not available)","title":"Available"},"description":"Availability status: 1 (available) or 0 (not available)"},{"name":"league_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by league ID","title":"League Id"},"description":"Filter by league ID"},{"name":"division","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by division","title":"Division"},"description":"Filter by division"},{"name":"has_job_posting","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter clubs with job postings: 1 (has job posting), 0 (no job posting)","title":"Has Job Posting"},"description":"Filter clubs with job postings: 1 (has job posting), 0 (no job posting)"},{"name":"balance_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum balance","title":"Balance Min"},"description":"Minimum balance"},{"name":"balance_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum balance","title":"Balance Max"},"description":"Maximum balance"},{"name":"division_start_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum division_start","title":"Division Start Min"},"description":"Minimum division_start"},{"name":"division_start_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum division_start","title":"Division Start Max"},"description":"Maximum division_start"},{"name":"fans_start_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum fans_start","title":"Fans Start Min"},"description":"Minimum fans_start"},{"name":"fans_start_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum fans_start","title":"Fans Start Max"},"description":"Maximum fans_start"},{"name":"fans_current_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum fans_current","title":"Fans Current Min"},"description":"Minimum fans_current"},{"name":"fans_current_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum fans_current","title":"Fans Current Max"},"description":"Maximum fans_current"},{"name":"stadium_size_start_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum stadium_size_start","title":"Stadium Size Start Min"},"description":"Minimum stadium_size_start"},{"name":"stadium_size_start_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum stadium_size_start","title":"Stadium Size Start Max"},"description":"Maximum stadium_size_start"},{"name":"stadium_size_current_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum stadium_size_current","title":"Stadium Size Current Min"},"description":"Minimum stadium_size_current"},{"name":"stadium_size_current_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum stadium_size_current","title":"Stadium Size Current Max"},"description":"Maximum stadium_size_current"},{"name":"stadium_id_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum stadium_id","title":"Stadium Id Min"},"description":"Minimum stadium_id"},{"name":"stadium_id_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum stadium_id","title":"Stadium Id Max"},"description":"Maximum stadium_id"},{"name":"value_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum value","title":"Value Min"},"description":"Minimum value"},{"name":"value_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum value","title":"Value Max"},"description":"Maximum value"},{"name":"rating_start_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum rating","title":"Rating Start Min"},"description":"Minimum rating"},{"name":"rating_start_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum rating","title":"Rating Start Max"},"description":"Maximum rating"},{"name":"default_formation_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum default_formation","title":"Default Formation Min"},"description":"Minimum default_formation"},{"name":"default_formation_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum default_formation","title":"Default Formation Max"},"description":"Maximum default_formation"},{"name":"penalty_taker_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum penalty_taker","title":"Penalty Taker Min"},"description":"Minimum penalty_taker"},{"name":"penalty_taker_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum penalty_taker","title":"Penalty Taker Max"},"description":"Maximum penalty_taker"},{"name":"transfers_in_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum transfers_in","title":"Transfers In Min"},"description":"Minimum transfers_in"},{"name":"transfers_in_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum transfers_in","title":"Transfers In Max"},"description":"Maximum transfers_in"},{"name":"transfers_out_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum transfers_out","title":"Transfers Out Min"},"description":"Minimum transfers_out"},{"name":"transfers_out_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum transfers_out","title":"Transfers Out Max"},"description":"Maximum transfers_out"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ClubDetailedResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/clubs/{club_id}/job":{"get":{"tags":["Clubs"],"summary":"Retrieve job posting details for a specific club","description":"Fetch job posting information for a specific club, including poster name, posted time, and job description.","operationId":"get_club_job_posting_clubs__club_id__job_get","parameters":[{"name":"club_id","in":"path","required":true,"schema":{"type":"integer","description":"The ID of the club to get job posting for","title":"Club Id"},"description":"The ID of the club to get job posting for"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPostingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users":{"get":{"tags":["Users"],"summary":"Get user list and basic data","description":"Fetches a paginated list of users, including name, balance, last activity,\n    club ID, and whether they voted for a manager.\n    Supports sorting by specific fields, filtering by name prefix, or a list of names.","operationId":"get_users_users_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptions","description":"Number of records per page (options: 5, 20, 50, 100)","default":20},"description":"Number of records per page (options: 5, 20, 50, 100)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/UsersSortBy"},{"type":"null"}],"description":"Field to sort by","title":"Sort By"},"description":"Field to sort by"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"asc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"},{"name":"name_prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2},{"type":"null"}],"description":"Name prefix to search","title":"Name Prefix"},"description":"Name prefix to search"},{"name":"names","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"List of names to include","title":"Names"},"description":"List of names to include"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_UserResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/users/detailed":{"get":{"tags":["Users"],"summary":"Get detailed user and trading data","description":"Fetches a paginated list of users with detailed trading volume statistics\n    (daily, weekly, total), last activity, and club information (manager voted).\n    Supports sorting and filtering by name prefix, a list of names, and additional trading filters.","operationId":"get_users_detailed_users_detailed_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptions","description":"Number of records per page (options: 5, 20, 50, 100)","default":20},"description":"Number of records per page (options: 5, 20, 50, 100)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/UsersDetailedSortBy"},{"type":"null"}],"description":"Field to sort by","title":"Sort By"},"description":"Field to sort by"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"asc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"},{"name":"name_prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2},{"type":"null"}],"description":"Name prefix to search","title":"Name Prefix"},"description":"Name prefix to search"},{"name":"names","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"List of names to include","title":"Names"},"description":"List of names to include"},{"name":"buy_volume_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum buy volume (1 day)","title":"Buy Volume Min"},"description":"Minimum buy volume (1 day)"},{"name":"buy_volume_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum buy volume (1 day)","title":"Buy Volume Max"},"description":"Maximum buy volume (1 day)"},{"name":"sell_volume_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum sell volume (1 day)","title":"Sell Volume Min"},"description":"Minimum sell volume (1 day)"},{"name":"sell_volume_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum sell volume (1 day)","title":"Sell Volume Max"},"description":"Maximum sell volume (1 day)"},{"name":"total_volume_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum total volume","title":"Total Volume Min"},"description":"Minimum total volume"},{"name":"total_volume_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum total volume","title":"Total Volume Max"},"description":"Maximum total volume"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_UserDetailedResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share_trade_history":{"get":{"tags":["Share History"],"summary":"Retrieve share trade history","description":"Provides a paginated record of trades for clubs or players, optionally filtered by buyer/seller name, with optional sorting.","operationId":"get_share_trade_history_share_trade_history_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of records per page","default":50,"title":"Per Page"},"description":"Number of records per page"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the buyer or seller","title":"Name"},"description":"Name of the buyer or seller"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Club ID to filter trades","title":"Club Id"},"description":"Club ID to filter trades"},{"name":"player_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Player ID to filter trades","title":"Player Id"},"description":"Player ID to filter trades"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Field to sort by (e.g. 'unix_time', 'price', 'num', or 'id')","title":"Sort By"},"description":"Field to sort by (e.g. 'unix_time', 'price', 'num', or 'id')"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"desc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ShareTradeResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share_trade_history/all":{"get":{"tags":["Share History"],"summary":"Get the most recent trades","description":"Returns the most recent trades across all shares, newest first.","operationId":"get_all_recent_trades_share_trade_history_all_get","parameters":[{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of trades to return","default":20,"title":"Per Page"},"description":"Number of trades to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ShareTradeResponse"},"title":"Response Get All Recent Trades Share Trade History All Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share/transactions":{"get":{"tags":["Share History"],"summary":"Retrieve share transactions for a user","description":"Returns all share transactions for a specific user, including transfers between users.","operationId":"get_share_transactions_share_transactions_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Xaya name of the user","title":"Name"},"description":"Xaya name of the user"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ShareTransactionResponse"},"title":"Response Get Share Transactions Share Transactions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/trading_graph":{"get":{"tags":["Trading Graph"],"summary":"Retrieve aggregated trading data","description":"Generates time-series data (volume and weighted average price) for a club or player's trading activity, grouped by specified time intervals (e.g., 1d, 7d, 30d, 90d, 6m, 1y).","operationId":"get_trading_graph_trading_graph_get","parameters":[{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Club ID","title":"Club Id"},"description":"Club ID"},{"name":"player_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Player ID","title":"Player Id"},"description":"Player ID"},{"name":"time_range","in":"query","required":true,"schema":{"$ref":"#/components/schemas/TimeRangeEnum","description":"Time range: '1d', '7d', '30d', '90d', '6m', '1y'"},"description":"Time range: '1d', '7d', '30d', '90d', '6m', '1y'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TradingGraphDataPoint"},"title":"Response Get Trading Graph Trading Graph Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/trading_graph/all":{"get":{"tags":["Trading Graph"],"summary":"Retrieve daily and monthly payouts data","description":"Daily payouts (last 30 days) and monthly aggregated data: payouts, cash injections, player game shares, and circulation.","operationId":"get_payouts_graph_trading_graph_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CombinedPayoutsResponse"}}}}}}},"/share_balance_by_user_club":{"get":{"tags":["Share Balances"],"summary":"Get share balance for a specific user and club","description":"Returns the number of shares (influence) a user owns in a specific club","operationId":"get_share_balance_by_user_club_share_balance_by_user_club_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Username to look up","title":"Name"},"description":"Username to look up"},{"name":"club_id","in":"query","required":true,"schema":{"type":"integer","description":"Club ID to check for share ownership","title":"Club Id"},"description":"Club ID to check for share ownership"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserClubShareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share_balances":{"get":{"tags":["Share Balances"],"summary":"Retrieve influence balances","description":"Returns influence ownership data for clubs or players. Can filter by: name only, club_id only, player_id only, club_id+name (user's influence in specific club), or player_id+name (user's influence in specific player). Includes user's last active timestamp. Can also aggregate data by country or league.","operationId":"get_share_balances_share_balances_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptions","description":"Number of records per page (options: 5, 10, 20, 50)","default":20},"description":"Number of records per page (options: 5, 10, 20, 50)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ShareBalancesSortBy"},{"type":"null"}],"description":"Field to sort by (options: 'name', 'share_type', 'share_id', 'num', 'last_active_unix')","title":"Sort By"},"description":"Field to sort by (options: 'name', 'share_type', 'share_id', 'num', 'last_active_unix')"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"asc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by club ID","title":"Club Id"},"description":"Filter by club ID"},{"name":"player_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by player ID","title":"Player Id"},"description":"Filter by player ID"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by name","title":"Name"},"description":"Filter by name"},{"name":"share_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(club|player)$"},{"type":"null"}],"description":"Filter by share type: 'club' or 'player'","title":"Share Type"},"description":"Filter by share type: 'club' or 'player'"},{"name":"countries","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Set to True to get data aggregated per country","default":false,"title":"Countries"},"description":"Set to True to get data aggregated per country"},{"name":"leagues","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Set to True to get data aggregated per league","default":false,"title":"Leagues"},"description":"Set to True to get data aggregated per league"},{"name":"country_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country ID (used with name)","title":"Country Id"},"description":"Filter by country ID (used with name)"},{"name":"league_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by league ID (used with name)","title":"League Id"},"description":"Filter by league ID (used with name)"},{"name":"has_manager","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter clubs by manager presence (True: has manager, False: no manager)","title":"Has Manager"},"description":"Filter clubs by manager presence (True: has manager, False: no manager)"},{"name":"has_agent","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter players by agent presence (True: has agent, False: no agent)","title":"Has Agent"},"description":"Filter players by agent presence (True: has agent, False: no agent)"},{"name":"manager_last_active_unix_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum unix timestamp for manager's last active time (clubs only)","title":"Manager Last Active Unix Min"},"description":"Minimum unix timestamp for manager's last active time (clubs only)"},{"name":"manager_last_active_unix_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum unix timestamp for manager's last active time (clubs only, includes NULL if manager exists)","title":"Manager Last Active Unix Max"},"description":"Maximum unix timestamp for manager's last active time (clubs only, includes NULL if manager exists)"},{"name":"agent_last_active_unix_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum unix timestamp for agent's last active time (players only)","title":"Agent Last Active Unix Min"},"description":"Minimum unix timestamp for agent's last active time (players only)"},{"name":"agent_last_active_unix_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum unix timestamp for agent's last active time (players only, includes NULL if agent exists)","title":"Agent Last Active Unix Max"},"description":"Maximum unix timestamp for agent's last active time (players only, includes NULL if agent exists)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share_balances/detailed":{"get":{"tags":["Share Balances"],"summary":"Retrieve detailed influence balances with position and earnings","description":"Returns detailed share ownership data including league positions, club balance, and earnings for the specified user","operationId":"get_detailed_share_balances_share_balances_detailed_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":5,"description":"Number of records per page (5-100). Hard-capped at 100: the name/image/earnings/position enrichment runs per returned row, so a large page (the retired 'fetch every holding' path) cost 1-3s on a whale and was this handler's entire p95 tail. The app pages at 12-50; a consumer wanting the full set paginates 100 at a time.","default":20,"title":"Per Page"},"description":"Number of records per page (5-100). Hard-capped at 100: the name/image/earnings/position enrichment runs per returned row, so a large page (the retired 'fetch every holding' path) cost 1-3s on a whale and was this handler's entire p95 tail. The app pages at 12-50; a consumer wanting the full set paginates 100 at a time."},{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Username to get detailed balances for","title":"Name"},"description":"Username to get detailed balances for"},{"name":"share_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(club|player)$"},{"type":"null"}],"description":"Filter by share type: 'club' or 'player'","title":"Share Type"},"description":"Filter by share type: 'club' or 'player'"},{"name":"share_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Restrict to these share ids (pair with share_type — club/player id spaces overlap); used for datapack name search","title":"Share Ids"},"description":"Restrict to these share ids (pair with share_type — club/player id spaces overlap); used for datapack name search"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/DetailedShareBalancesSortBy"},{"type":"null"}],"description":"Server-side sort key (default: num desc)","title":"Sort By"},"description":"Server-side sort key (default: num desc)"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","description":"Sort direction","default":"desc","title":"Sort Order"},"description":"Sort direction"},{"name":"has_manager","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter clubs by manager presence (True: has manager, False: no manager)","title":"Has Manager"},"description":"Filter clubs by manager presence (True: has manager, False: no manager)"},{"name":"has_agent","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter players by agent presence (True: has agent, False: no agent)","title":"Has Agent"},"description":"Filter players by agent presence (True: has agent, False: no agent)"},{"name":"manager_last_active_unix_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum unix timestamp for manager's last active time (clubs only)","title":"Manager Last Active Unix Min"},"description":"Minimum unix timestamp for manager's last active time (clubs only)"},{"name":"manager_last_active_unix_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum unix timestamp for manager's last active time (clubs only, includes NULL if manager exists)","title":"Manager Last Active Unix Max"},"description":"Maximum unix timestamp for manager's last active time (clubs only, includes NULL if manager exists)"},{"name":"agent_last_active_unix_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum unix timestamp for agent's last active time (players only)","title":"Agent Last Active Unix Min"},"description":"Minimum unix timestamp for agent's last active time (players only)"},{"name":"agent_last_active_unix_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum unix timestamp for agent's last active time (players only, includes NULL if agent exists)","title":"Agent Last Active Unix Max"},"description":"Maximum unix timestamp for agent's last active time (players only, includes NULL if agent exists)"},{"name":"issue","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(any|low_balance|no_manager|inactive_manager|locked_manager|bad_form|unhappy_players|low_playtime|underpaid|no_agent|unhappy|contract_expiring|club_bad_form|league_mismatch)$"},{"type":"null"}],"description":"Portfolio issue filter (requires share_type; issue kinds are share_type-scoped)","title":"Issue"},"description":"Portfolio issue filter (requires share_type; issue kinds are share_type-scoped)"},{"name":"agent_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only players whose agent is exactly this user (the my_agent tab)","title":"Agent Name"},"description":"Only players whose agent is exactly this user (the my_agent tab)"},{"name":"wage_multiplier","in":"query","required":false,"schema":{"type":"number","minimum":0,"description":"economy-moneybase-multiplier from game params. The wage_change sort DEGRADES with the default 0 (expected wage 0), mirroring the client while game params load — callers wanting real wage semantics must pass it","default":0,"title":"Wage Multiplier"},"description":"economy-moneybase-multiplier from game params. The wage_change sort DEGRADES with the default 0 (expected wage 0), mirroring the client while game params load — callers wanting real wage semantics must pass it"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}],"description":"Name substring (accent/case-insensitive; clubs matched against dc_club_names, players against first+last in dc_player_names); requires share_type=club or player","title":"Search"},"description":"Name substring (accent/case-insensitive; clubs matched against dc_club_names, players against first+last in dc_player_names); requires share_type=club or player"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_DetailedShareBalanceResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share_balances/active_proposals":{"get":{"tags":["Share Balances"],"summary":"Active proposals across a user's FULL holdings","description":"Every holding of the user that currently has an active proposal, with the same proposal fields the detailed endpoint stamps — but computed against ALL holdings, not the capped top-N portfolio page, so the votes view is exact at any portfolio size","operationId":"get_user_active_proposals_share_balances_active_proposals_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Username to check holdings for","title":"Name"},"description":"Username to check holdings for"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserActiveProposalsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share_balances/issue_counts":{"get":{"tags":["Share Balances"],"summary":"Per-issue counts across a user's FULL holdings of one type","description":"Conditional-aggregate counts for every portfolio issue (plus 'any' and optionally the my_agent count) over ALL of the user's club or player holdings — the influencer tab's badge and dropdown numbers without shipping the rows","operationId":"get_share_balance_issue_counts_share_balances_issue_counts_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Username to count issues for","title":"Name"},"description":"Username to count issues for"},{"name":"share_type","in":"query","required":true,"schema":{"type":"string","pattern":"^(club|player)$","description":"Which holdings to count","title":"Share Type"},"description":"Which holdings to count"},{"name":"agent_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Also count players whose agent is exactly this user (my_agent tab badge)","title":"Agent Name"},"description":"Also count players whose agent is exactly this user (my_agent tab badge)"},{"name":"wage_multiplier","in":"query","required":false,"schema":{"type":"number","minimum":0,"description":"economy-moneybase-multiplier from game params; kept for the wage_change sort key, no issue count depends on it","default":0,"title":"Wage Multiplier"},"description":"economy-moneybase-multiplier from game params; kept for the wage_change sort key, no issue count depends on it"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareBalanceIssueCountsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/share_balances/summary":{"get":{"tags":["Share Balances"],"summary":"Compact per-user portfolio rollup (net worth, totals, counts, earnings)","description":"The O(all-holdings) numbers the profile needs, as scoped SQL aggregates — never ships individual holdings. Net worth = cash balance + Σ(num × last_price) for this user only.","operationId":"get_share_balances_summary_share_balances_summary_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Username to summarise","title":"Name"},"description":"Username to summarise"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserShareSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/svc_price":{"get":{"tags":["Market"],"summary":"Current SVC→USDC price (single float)","description":"The global SVC→USDC weighted price on its own — the same value as /market's SVC2USDC field, without the 30-day market aggregate wrapped around it. Lets a client that only needs the rate (the app-wide currency formatter / SvcRateProvider) read ~20 bytes instead of the full /market blob.","operationId":"get_svc_price_endpoint_svc_price_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/market":{"get":{"tags":["Market"],"summary":"Obtain overall market metrics","description":"Retrieves aggregated market data such as total players, clubs, volumes, user balances, and SVC2USDC price.","operationId":"get_market_data_market_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketResponse"}}}}}}},"/user_activity":{"get":{"tags":["User Activity"],"summary":"Get user activity stats","description":"Generates user activity statistics based on moves recorded in The Graph subgraph.\n    Calculates first move time, last active time, and an overall point-based ranking.\n    By default, returns the top 50 ranked users; if 'name' is specified, returns data for that user only.","operationId":"get_user_activity_user_activity_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by username","title":"Name"},"description":"Filter by username"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserActivityResponse"},"title":"Response Get User Activity User Activity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rich_list":{"get":{"tags":["Rich List"],"summary":"Retrieve the richest users","description":"Ranked list of users by net worth (balance + owned club/player assets). Supports pagination, name filter, and sorting.","operationId":"get_rich_list_rich_list_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptions","description":"Number of records per page (options: 5, 10, 20, 50, 100)","default":20},"description":"Number of records per page (options: 5, 10, 20, 50, 100)"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific user name (case sensitive)","title":"Name"},"description":"Filter by specific user name (case sensitive)"},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/RichListSortBy","description":"Field to sort by ('balance', 'total_networth', or 'last_active_unix')","default":"total_networth"},"description":"Field to sort by ('balance', 'total_networth', or 'last_active_unix')"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"desc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_RichListResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/best_managers":{"get":{"tags":["Best Managers"],"summary":"Get best managers data","description":"Retrieves a paginated list of the best managers from the database. Includes their ranks (old, A, B),\n    computed rankings, user's last active timestamp, and associated profile pictures. Supports sorting, pagination, and optional filtering by manager name.","operationId":"get_best_managers_best_managers_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptions","description":"Number of records per page (options: 5, 20, 50)","default":20},"description":"Number of records per page (options: 5, 20, 50)"},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/BestManagersSortBy","description":"Field to sort by: rank_old, rank_old_ranking, rank_a, rank_a_ranking, rank_b, rank_b_ranking, last_active_unix","default":"rank_a_ranking"},"description":"Field to sort by: rank_old, rank_old_ranking, rank_a, rank_a_ranking, rank_b, rank_b_ranking, last_active_unix"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"asc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific user name (case sensitive)","title":"Name"},"description":"Filter by specific user name (case sensitive)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_BestManagersResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user_balance_sheet":{"get":{"tags":["User Balance Sheet"],"summary":"Get user balance sheet entries","description":"Retrieves transaction-based balance sheet entries for a specific user.\n    Supports either a paginated query of the most recent records or a focused time range\n    (up to 30 days). Each entry contains amount, type, and referenced 'other' data.","operationId":"get_user_balance_sheet_user_balance_sheet_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptionsExtended","description":"Number of records per page (options: 5, 20, 50, 100)","default":50},"description":"Number of records per page (options: 5, 20, 50, 100)"},{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Name of the user (exact match)","title":"Name"},"description":"Name of the user (exact match)"},{"name":"from_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Unix time integer for start of time range","title":"From Time"},"description":"Unix time integer for start of time range"},{"name":"to_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Unix time integer for end of time range","title":"To Time"},"description":"Unix time integer for end of time range"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_UserBalanceSheetResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user_balance_sheet/weeks":{"get":{"tags":["User Balance Sheet"],"summary":"Get weekly aggregated user balance sheets","description":"Returns a paginated set of weekly aggregated balance sheet data for a given user.\n    Groups transactions by week (Monday 00:00 UTC through Sunday 23:59:59 UTC) and sums the amounts by type.","operationId":"get_user_balance_sheet_weeks_user_balance_sheet_weeks_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of weeks per page","default":10,"title":"Per Page"},"description":"Number of weeks per page"},{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Name of the user (exact match)","title":"Name"},"description":"Name of the user (exact match)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_UserWeeklyBalanceSheetResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user_balance_sheet/earnings":{"get":{"tags":["User Balance Sheet"],"summary":"Get aggregated SVC earnings","description":"Aggregates a user's earnings (from entries that include dividend amounts)\n    in SVC for the last 7, 14, and 30 days and for the last match day.\n    Also includes the latest SVC-to-USDC conversion rate and computes USDC values accordingly.","operationId":"get_user_earnings_user_balance_sheet_earnings_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Name of the user (exact match)","title":"Name"},"description":"Name of the user (exact match)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserEarningsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leagues":{"get":{"tags":["Leagues"],"summary":"Retrieve data for leagues","description":"Fetch a paginated list of leagues along with trading volumes, market cap, and other aggregate statistics. Filtered, sorted and paged from the cached league snapshot. Returns a PaginatedResponse of LeagueResponse objects.","operationId":"get_leagues_leagues_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PerPageOptions","description":"Number of records per page (options: 5, 10, 20, 50)","default":20},"description":"Number of records per page (options: 5, 10, 20, 50)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/LeaguesSortBy"},{"type":"null"}],"description":"Field to sort by","title":"Sort By"},"description":"Field to sort by"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"asc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"},{"name":"country_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country ID (supports comma-separated list)","title":"Country Id"},"description":"Filter by country ID (supports comma-separated list)"},{"name":"division","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by division (league level)","title":"Division"},"description":"Filter by division (league level)"},{"name":"league_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by league ID","title":"League Id"},"description":"Filter by league ID"},{"name":"season_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by season ID. If not specified, uses the latest season","title":"Season Id"},"description":"Filter by season ID. If not specified, uses the latest season"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_LeagueResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/league_tables":{"get":{"tags":["Leagues"],"summary":"Get league table standings","description":"Retrieve the current league table for a specified league with live manager data and cached static data.","operationId":"get_league_tables_league_tables_get","parameters":[{"name":"league_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"League ID","title":"League Id"},"description":"League ID"},{"name":"country_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country ID","title":"Country Id"},"description":"Country ID"},{"name":"division","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Division (level)","title":"Division"},"description":"Division (level)"},{"name":"season_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Season ID","title":"Season Id"},"description":"Season ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LeagueTableRowResponse"},"title":"Response Get League Tables League Tables Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/countries":{"get":{"tags":["Countries"],"summary":"Retrieve data for countries","description":"Fetch an aggregated list of countries, each with metrics such as total clubs, total players, trading volumes, and market caps. A background task refreshes the data every five minutes. Returns a list of CountryResponse objects.","operationId":"get_countries_countries_get","parameters":[{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/CountriesSortBy"},{"type":"null"}],"description":"Field to sort by","title":"Sort By"},"description":"Field to sort by"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort order: 'asc' or 'desc'","default":"desc","title":"Sort Order"},"description":"Sort order: 'asc' or 'desc'"},{"name":"country_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country ID","title":"Country Id"},"description":"Filter by country ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CountryResponse"},"title":"Response Get Countries Countries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/club_balance_sheet/weeks":{"get":{"tags":["Club Balance Sheet"],"summary":"Get club balance sheet entries by game week","description":"Returns a list of aggregated balance-sheet entries for the specified club and season, grouped by distinct block dates in ascending order. Each block date corresponds to a new 'game_week'. No pagination is used.","operationId":"get_club_balance_sheet_weeks_club_balance_sheet_weeks_get","parameters":[{"name":"club_id","in":"query","required":true,"schema":{"type":"integer","minimum":1,"description":"Club ID","title":"Club Id"},"description":"Club ID"},{"name":"season_id","in":"query","required":true,"schema":{"type":"integer","minimum":1,"description":"Season ID","title":"Season Id"},"description":"Season ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ClubWeeklyBalanceSheetResponse"},"title":"Response Get Club Balance Sheet Weeks Club Balance Sheet Weeks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leaderboards/referrals/all":{"get":{"tags":["Leaderboards"],"summary":"Get the all-time referral leaderboard","description":"Referrers by all-time bonus influence earned, from each referrer's running\n    totals in the SV subgraph — ranked rows capped at 200 deep.\n\n    Referrers who have neither earned a bonus nor referred anyone are omitted.","operationId":"get_referrals_leaderboard_all_leaderboards_referrals_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralBoardResponse"}}}}}}},"/leaderboards/referrals/windowed":{"get":{"tags":["Leaderboards"],"summary":"Get the referral leaderboard over a window","description":"Referrers by bonus influence earned inside a window, summed from the\n    subgraph's referral-bonus events, with the referrals they signed up in the\n    same window — ranked rows capped at 200 deep.\n\n    `window` is `30d` (rolling) or `season` (the current season to date).  The\n    all-time board is a different read entirely and has its own endpoint.","operationId":"get_referrals_leaderboard_windowed_leaderboards_referrals_windowed_get","parameters":[{"name":"window","in":"query","required":false,"schema":{"type":"string","description":"Window: 30d or season","default":"30d","title":"Window"},"description":"Window: 30d or season"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralBoardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leaderboards/earnings":{"get":{"tags":["Leaderboards"],"summary":"Get the earnings leaderboard","description":"Users by total earnings (club + player dividends) over 7 or 30 days,\n    with last-active timestamps.\n\n    Called with no paging parameters it returns the historical top-10 shape\n    (`TopEarnersResponse`) that the home and stats pages consume. Supply\n    `page`, `per_page` or `name` and it returns the paged board\n    (`PagedEarnersResponse`): ranked rows capped at 200 deep, plus a `you` row\n    carrying the named user's own rank when they fall outside the page.","operationId":"get_top_earners_leaderboards_earnings_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","description":"Number of days to look back (7 or 30 only)","default":30,"title":"Days"},"description":"Number of days to look back (7 or 30 only)"},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Board page, starting from 1 (paged shape)","title":"Page"},"description":"Board page, starting from 1 (paged shape)"},{"name":"per_page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Rows per page: 5, 10, 20, 50 or 100 (default 10)","title":"Per Page"},"description":"Rows per page: 5, 10, 20, 50 or 100 (default 10)"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Include this user's own ranked row as `you` when they are off-page","title":"Name"},"description":"Include this user's own ranked row as `you` when they are off-page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TopEarnersResponse"},{"$ref":"#/components/schemas/PagedEarnersResponse"}],"title":"Response 200 Get Top Earners Leaderboards Earnings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leaderboards/earnings/lifetime":{"get":{"tags":["Leaderboards"],"summary":"Get the lifetime earners leaderboard","description":"Users by all-time payouts received, from the per-user portfolio rollup —\n    ranked rows capped at 200 deep, plus a `you` row carrying the named user's\n    own rank when they fall outside the page.\n\n    `scope` picks the sub-board: `all` (every holding), `club` or `player`.\n    `realised_pl` is basis-derived and carries `basis_status` (`complete` /\n    `partial` / `mismatch`) so it can be badged; the payout columns are ledger\n    facts and are unaffected by it.","operationId":"get_lifetime_earners_leaderboards_earnings_lifetime_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","description":"Board scope: all, club or player","default":"all","title":"Scope"},"description":"Board scope: all, club or player"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Board page, starting from 1","default":1,"title":"Page"},"description":"Board page, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page: 5, 10, 20, 50 or 100","default":10,"title":"Per Page"},"description":"Rows per page: 5, 10, 20, 50 or 100"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Include this user's own ranked row as `you` when they are off-page","title":"Name"},"description":"Include this user's own ranked row as `you` when they are off-page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifetimeEarnersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leaderboards/scouts":{"get":{"tags":["Leaderboards"],"summary":"Get the scouts leaderboard","description":"Users by scout score — rating gained by the players they bought early,\n    weighted by the influence they still hold — ranked rows capped at 200 deep,\n    plus a `you` row carrying the named user's own rank when they fall outside\n    the page.\n\n    `sort` picks the ranking column: `score` (default), `total_gain` (rating\n    points gained across every pick) or `avg_gain` (per pick).  The `you` row\n    is ranked on whichever one is active, so it is always the position the\n    board itself would number them.\n\n    Deliberately rating-only: there is no value or price column, because a mark\n    is `num x last_price` off a book a single self-trade can move.","operationId":"get_scouts_leaderboard_leaderboards_scouts_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Board page, starting from 1","default":1,"title":"Page"},"description":"Board page, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page: 5, 10, 20, 50 or 100","default":10,"title":"Per Page"},"description":"Rows per page: 5, 10, 20, 50 or 100"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Ranking column: score, total_gain or avg_gain","default":"score","title":"Sort"},"description":"Ranking column: score, total_gain or avg_gain"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Include this user's own ranked row as `you` when they are off-page","title":"Name"},"description":"Include this user's own ranked row as `you` when they are off-page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoutBoardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leaderboards/scouts/picks":{"get":{"tags":["Leaderboards"],"summary":"Get the best scouting picks","description":"Individual picks by rating gained, then by the influence still held behind\n    them — the pick-level strip above the scouts board, capped at 200 deep.\n\n    `entry_basis` is `exact` when a rating was recorded at or before the\n    position was opened, and `earliest` when the position predates every\n    recorded rating for that player and the earliest known one stands in.","operationId":"get_scout_picks_leaderboards_scouts_picks_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page, starting from 1","default":1,"title":"Page"},"description":"Page, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page: 5, 10, 20, 50 or 100","default":10,"title":"Per Page"},"description":"Rows per page: 5, 10, 20, 50 or 100"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoutPicksResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leaderboards/managers":{"get":{"tags":["Leaderboards"],"summary":"Get the managers leaderboard","description":"Managers by what they have won — league titles, cups, runner-up medals and\n    promotions, each priced by division or stature, plus the form weighted into\n    the score — ranked rows capped at 200 deep, plus a `you` row carrying the\n    named user's own rank when they fall outside the page.\n\n    `view` picks the ranking column: `honours` (default, the cabinet and the\n    form together), `form` (points per game alone) or `streaks` (the longest\n    run of wins, from the per-fixture results rather than the season\n    summaries).  Every row carries `best_win_streak`, `best_unbeaten_streak`\n    and `current_win_streak` whichever view is active — on a season row those\n    are that season's runs, and only the all-time row's `current_win_streak` is\n    a run still going.  `season` scopes the board: `all` (career totals, the\n    default) or one of the season ids the payload's `seasons` list offers — any\n    other value is refused.  The `you` row is ranked inside whichever board is\n    active, so it is always the position the board itself would number them.\n\n    `updated_at` is the rollup's own stamp: this board is rebuilt when a season\n    rolls over, not per block.","operationId":"get_managers_leaderboard_leaderboards_managers_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Board page, starting from 1","default":1,"title":"Page"},"description":"Board page, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","description":"Rows per page: 5, 10, 20, 50 or 100","default":10,"title":"Per Page"},"description":"Rows per page: 5, 10, 20, 50 or 100"},{"name":"view","in":"query","required":false,"schema":{"type":"string","description":"Ranking column: honours, form or streaks","default":"honours","title":"View"},"description":"Ranking column: honours, form or streaks"},{"name":"season","in":"query","required":false,"schema":{"type":"string","description":"Season scope: `all` or a season id from `seasons`","default":"all","title":"Season"},"description":"Season scope: `all` or a season id from `seasons`"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Include this user's own ranked row as `you` when they are off-page","title":"Name"},"description":"Include this user's own ranked row as `you` when they are off-page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerBoardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leaderboards/managers/history":{"get":{"tags":["Leaderboards"],"summary":"Get one manager's career","description":"The row-detail popup behind the managers board: the all-time summary, every\n    season they managed and the career spells the game itself records.\n\n    Seasons are grouped by (season, club) — a mid-season move splits a season\n    across two clubs, and each group carries the club it belongs to, its league\n    finish (null for a club they only played a cup with) and the cup finishes\n    beside it.  Spells are newest first, capped at 100.\n\n    A name with no board row is a 404: the board is the register of real\n    managers.","operationId":"get_manager_history_leaderboards_managers_history_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"The manager's account name","title":"Name"},"description":"The manager's account name"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/achievements":{"get":{"tags":["Achievements"],"summary":"Get user achievements status","description":"Returns the status of achievements for a user in the 'Complete your profile' section.","operationId":"get_achievements_achievements_get","parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string","description":"User's xayaname","title":"Username"},"description":"User's xayaname"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AchievementsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/commentary/match_events/{fixture_id}":{"get":{"tags":["Commentary"],"summary":"Get match events for a fixture","description":"Retrieve all match events (goals, cards, etc.) for a specific fixture, ordered by time.","operationId":"get_match_events_commentary_match_events__fixture_id__get","parameters":[{"name":"fixture_id","in":"path","required":true,"schema":{"type":"integer","title":"Fixture Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MatchEventResponse"},"title":"Response Get Match Events Commentary Match Events  Fixture Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/commentary/match_commentary/{fixture_id}":{"get":{"tags":["Commentary"],"summary":"Get match commentary for a fixture","description":"Retrieve all match commentary events for a specific fixture, ordered by comm_sub_event_id.","operationId":"get_match_commentary_commentary_match_commentary__fixture_id__get","parameters":[{"name":"fixture_id","in":"path","required":true,"schema":{"type":"integer","title":"Fixture Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MatchCommentaryResponse"},"title":"Response Get Match Commentary Commentary Match Commentary  Fixture Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fixture_history/players/{fixture_id}":{"get":{"tags":["Fixture History"],"summary":"Get fixture player data for a fixture","description":"Retrieve all player performance data for a specific fixture from the archival database.","operationId":"get_fixture_player_data_fixture_history_players__fixture_id__get","parameters":[{"name":"fixture_id","in":"path","required":true,"schema":{"type":"integer","title":"Fixture Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FixturePlayerResponse"},"title":"Response Get Fixture Player Data Fixture History Players  Fixture Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fixture_history/tactics/{fixture_id}":{"get":{"tags":["Fixture History"],"summary":"Get fixture tactics data for a fixture","description":"Retrieve all tactics data for a specific fixture from the archival database, grouped by club_id.","operationId":"get_fixture_tactics_data_fixture_history_tactics__fixture_id__get","parameters":[{"name":"fixture_id","in":"path","required":true,"schema":{"type":"integer","title":"Fixture Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FixtureTacticsResponse"},"title":"Response Get Fixture Tactics Data Fixture History Tactics  Fixture Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/player_field_time/{club_id}":{"get":{"tags":["Player Field Time"],"summary":"Domestic-league field time for a club's players (current season, 5-min cache)","description":"Pre-computed field-time percentage (minutes played / (available rounds * 90), domestic league only, capped at 100) per player for the given club this season. Mirrors the GSP morale checker's lack-of-games bound. Used by the Squad -> Performance tab. The squad's players are looked up client-side from this list.","operationId":"get_club_field_time_player_field_time__club_id__get","parameters":[{"name":"club_id","in":"path","required":true,"schema":{"type":"integer","title":"Club Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlayerFieldTimeResponse"},"title":"Response Get Club Field Time Player Field Time  Club Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/player_field_time/by-player/{player_id}":{"get":{"tags":["Player Field Time"],"summary":"Current-season domestic field time for one player (per club)","description":"Pre-computed field-time percentage for a single player this season, one row per club they've played domestic-league minutes for. Used by the player page's Season Statistics. Same data as the per-club endpoint, keyed by player. A fast indexed lookup of a handful of rows, so it isn't cached server-side (the FE caches it).","operationId":"get_player_field_time_player_field_time_by_player__player_id__get","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"integer","title":"Player Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlayerFieldTimeResponse"},"title":"Response Get Player Field Time Player Field Time By Player  Player Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/transfers/basic":{"get":{"tags":["Transfers"],"summary":"Get latest completed transfers","description":"Returns the last 20 completed transfers (auctions) from the blockchain, including player ID, clubs involved, cost, and timestamp.","operationId":"get_basic_transfers_transfers_basic_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TransferBasicResponse"},"type":"array","title":"Response Get Basic Transfers Transfers Basic Get"}}}}}}},"/transfers/counts":{"get":{"tags":["Transfers"],"summary":"Get transfer counts for a club in a season","description":"Returns transfer counts from dc_transfer_counts table for a given club and season, including both incoming and outgoing transfers.","operationId":"get_transfer_counts_transfers_counts_get","parameters":[{"name":"club_id","in":"query","required":true,"schema":{"type":"integer","description":"Club ID","title":"Club Id"},"description":"Club ID"},{"name":"season_id","in":"query","required":true,"schema":{"type":"integer","description":"Season ID","title":"Season Id"},"description":"Season ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransferCountResponse"},"title":"Response Get Transfer Counts Transfers Counts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/proposals/active":{"get":{"tags":["Proposals"],"summary":"Get currently active proposals","description":"Returns all currently active proposals/votes that haven't ended yet. Sorted by end time (ending soonest first).","operationId":"get_active_proposals_proposals_active_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"description":"Number of proposals per page (default 100, max 5000)","default":100,"title":"Per Page"},"description":"Number of proposals per page (default 100, max 5000)"},{"name":"proposal_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(agent|manager|unlock)$"},{"type":"null"}],"description":"Filter by proposal type","title":"Proposal Type"},"description":"Filter by proposal type"},{"name":"share_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(player|club)$"},{"type":"null"}],"description":"Filter by share type","title":"Share Type"},"description":"Filter by share type"},{"name":"stage_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(proposal|voting)$"},{"type":"null"}],"description":"Filter by current stage","title":"Stage Filter"},"description":"Filter by current stage"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by specific club ID","title":"Club Id"},"description":"Filter by specific club ID"},{"name":"player_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by specific player ID","title":"Player Id"},"description":"Filter by specific player ID"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by name (searches in manager/agent names)","title":"Name"},"description":"Filter by name (searches in manager/agent names)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ProposalResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/proposals/historical":{"get":{"tags":["Proposals"],"summary":"Get proposals that ended in the last N days with daily statistics","description":"Returns proposals that ended in the last N days, grouped by day with statistics on types and counts.","operationId":"get_historical_proposals_proposals_historical_get","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"description":"Number of days back to look for ended proposals (default 7)","default":7,"title":"Days Back"},"description":"Number of days back to look for ended proposals (default 7)"},{"name":"proposal_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(agent|manager|unlock)$"},{"type":"null"}],"description":"Filter by proposal type","title":"Proposal Type"},"description":"Filter by proposal type"},{"name":"share_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(player|club)$"},{"type":"null"}],"description":"Filter by share type","title":"Share Type"},"description":"Filter by share type"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by specific club ID","title":"Club Id"},"description":"Filter by specific club ID"},{"name":"player_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by specific player ID","title":"Player Id"},"description":"Filter by specific player ID"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by name (searches in manager/agent names)","title":"Name"},"description":"Filter by name (searches in manager/agent names)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoricalProposalsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/proposals/graph":{"get":{"tags":["Proposals"],"summary":"Get daily proposal completion counts for graphing","description":"Returns daily counts of completed proposals by type for the last N days in chart format.","operationId":"get_proposals_graph_proposals_graph_get","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"description":"Number of days back to look for completed proposals (default 30)","default":30,"title":"Days Back"},"description":"Number of days back to look for completed proposals (default 30)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalGraphResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/proposals/outcomes":{"get":{"tags":["Proposals"],"summary":"Frozen close-time results for finished proposals","description":"Per-option final votes and the executed winner, as recorded at the block each proposal closed. Query either by explicit proposal ids or by entity (share_type + share_id); the entity form lets a client fetch outcomes in parallel with the proposal list itself. Proposals without a recorded outcome (not finished yet) are omitted from the response.","operationId":"get_proposal_outcomes_proposals_outcomes_get","parameters":[{"name":"ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated proposal ids (max 200)","title":"Ids"},"description":"Comma-separated proposal ids (max 200)"},{"name":"share_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(club|player)$"},{"type":"null"}],"description":"Entity type (with share_id, instead of ids)","title":"Share Type"},"description":"Entity type (with share_id, instead of ids)"},{"name":"share_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Entity id (with share_type, instead of ids)","title":"Share Id"},"description":"Entity id (with share_type, instead of ids)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalOutcomesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/proposals/finished":{"get":{"tags":["Proposals"],"summary":"Finished proposals for a batch of shares, frozen at close","description":"Every finished proposal for each requested club or player, reconstructed from the archival proposal_updates rows: option data, frozen per-option votes, the executed winner, the frozen eligible-vote denominator (total_votes) and the frozen per-voter map (votes: username -> option_id). Pass one or more shares as comma-separated type:id tokens (e.g. shares=club:42,player:7); a single share is just a one-token batch. Each share is returned as its own item, in request order, with an empty proposals list when it has none. Dilution proposals are included; /dilutions remains the richer settlement view of settled fundraising. At most 100 shares per request.","operationId":"get_finished_proposals_proposals_finished_get","parameters":[{"name":"shares","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Comma-separated shares as type:id tokens (e.g. club:42,player:7)","title":"Shares"},"description":"Comma-separated shares as type:id tokens (e.g. club:42,player:7)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinishedProposalsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ticker":{"get":{"tags":["Ticker"],"summary":"Get ticker data","description":"Returns latest player transfers, share trades and richest/poorest clubs for the ticker display. Served from a 10-minute cache, rebuilt on demand.","operationId":"get_ticker_data_ticker_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/messages":{"get":{"tags":["Messages"],"summary":"Get messages from the blockchain","description":"Returns messages from the archival database. Requires season_id and at least one of: country_id, comp_id, or club_id.","operationId":"get_messages_messages_get","parameters":[{"name":"season_id","in":"query","required":true,"schema":{"type":"integer","description":"Season ID to filter messages","title":"Season Id"},"description":"Season ID to filter messages"},{"name":"country_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country ID to filter messages","title":"Country Id"},"description":"Country ID to filter messages"},{"name":"comp_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Competition ID to filter messages","title":"Comp Id"},"description":"Competition ID to filter messages"},{"name":"club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Club ID to filter messages","title":"Club Id"},"description":"Club ID to filter messages"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"description":"Max rows to return (default 500)","default":500,"title":"Limit"},"description":"Max rows to return (default 500)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MessageResponse"},"title":"Response Get Messages Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/shop/clubs":{"get":{"tags":["Shop"],"summary":"Retrieve pack-sale data for clubs","description":"Fetch a paginated list of club packs from the on-chain sale, with filtering by tier, country, club ID, and price range.","operationId":"get_shop_clubs_shop_clubs_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-based)","default":1,"title":"Page"},"description":"Page number (1-based)"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page","default":20,"title":"Per Page"},"description":"Items per page"},{"name":"tiers","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Filter by tier (1-5)","title":"Tiers"},"description":"Filter by tier (1-5)"},{"name":"country_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Filter by 3-letter country codes","title":"Country Ids"},"description":"Filter by 3-letter country codes"},{"name":"club_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Filter by club ID","title":"Club Ids"},"description":"Filter by club ID"},{"name":"pricePerPack_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Min pack price (USDC, 6 decimals)","title":"Priceperpack Min"},"description":"Min pack price (USDC, 6 decimals)"},{"name":"pricePerPack_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Max pack price (USDC, 6 decimals)","title":"Priceperpack Max"},"description":"Max pack price (USDC, 6 decimals)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ShopClubsSortBy"},{"type":"null"}],"description":"Sort field","title":"Sort By"},"description":"Sort field"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"description":"Sort direction","default":"asc","title":"Sort Order"},"description":"Sort direction"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ShopClubResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dumps/share_orders/csv":{"get":{"tags":["Data Dumps"],"summary":"Download share_orders as CSV","description":"Download the full share_orders table as a CSV file attachment.","operationId":"get_share_orders_csv_dumps_share_orders_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dumps/share_orders/json":{"get":{"tags":["Data Dumps"],"summary":"Download share_orders as JSON","description":"Download the full share_orders JSON (clubs + players combined) as a file attachment.","operationId":"get_share_orders_json_download_dumps_share_orders_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dumps/share_orders/clubs":{"get":{"tags":["Data Dumps"],"summary":"Club share orders (optionally filtered by ID)","description":"Serve club share orders grouped by club_id, optionally filtered to specific IDs.","operationId":"get_share_orders_clubs_dumps_share_orders_clubs_get","parameters":[{"name":"ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Club IDs to include; omit for all","title":"Ids"},"description":"Club IDs to include; omit for all"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dumps/share_orders/players":{"get":{"tags":["Data Dumps"],"summary":"Player share orders (optionally filtered by ID)","description":"Serve player share orders grouped by player_id, optionally filtered to specific IDs.","operationId":"get_share_orders_players_dumps_share_orders_players_get","parameters":[{"name":"ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Player IDs to include; omit for all","title":"Ids"},"description":"Player IDs to include; omit for all"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dumps/share_orders":{"get":{"tags":["Data Dumps"],"summary":"All share orders (clubs + players combined)","description":"Serve the full share_orders JSON with clubs and players grouped separately.","operationId":"get_share_orders_dumps_share_orders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dumps/leagues":{"get":{"tags":["Data Dumps"],"summary":"All national leagues for the current season","description":"Serve all national leagues (comp_type=0) for the current season.","operationId":"get_leagues_dumps_leagues_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dumps/league_tables":{"get":{"tags":["Data Dumps"],"summary":"League tables for all divisions, optionally filtered to Division 1 by country","description":"Without country_ids: serve all league tables for all divisions (flat format).\nWith country_ids: serve Division 1 standings for those countries in enriched format\n({country_id, division, teams}).","operationId":"get_league_tables_dumps_league_tables_get","parameters":[{"name":"country_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Country codes to filter by (e.g. ENG, ITA); returns Division 1 only for those countries","title":"Country Ids"},"description":"Country codes to filter by (e.g. ENG, ITA); returns Division 1 only for those countries"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dumps/club_earnings":{"get":{"tags":["Data Dumps"],"summary":"Pre-calculated club earnings for buyers","description":"Serve pre-calculated club earnings data (buyable influence and ROI by payback threshold).","operationId":"get_club_earnings_dumps_club_earnings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dumps/club_earnings_light":{"get":{"tags":["Data Dumps"],"summary":"Simplified club earnings (club_id → SVC per influence per season)","description":"Serve simplified club earnings: just the raw SVC generated per influence per season.","operationId":"get_club_earnings_light_dumps_club_earnings_light_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dumps/club_seller_opportunities":{"get":{"tags":["Data Dumps"],"summary":"Pre-calculated club seller opportunities","description":"Serve pre-calculated seller opportunities (premium buy orders by payback threshold).","operationId":"get_club_seller_opportunities_dumps_club_seller_opportunities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dumps/club_packs":{"get":{"tags":["Data Dumps"],"summary":"Club pack deals","description":"Serve club pack deals (clubs with active packs, price, payback, and availability).","operationId":"get_club_packs_dumps_club_packs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dumps/player_earnings":{"get":{"tags":["Data Dumps"],"summary":"Player earnings and ROI analysis","description":"Serve player earnings data with filtering, sorting, and pagination. Uses SMART match time percentages.","operationId":"get_player_earnings_dumps_player_earnings_get","parameters":[{"name":"threshold","in":"query","required":true,"schema":{"type":"integer","description":"ROI threshold in seasons (2, 3, 4, 5, 6, 7, 8, 10, 12, 15, 20)","title":"Threshold"},"description":"ROI threshold in seasons (2, 3, 4, 5, 6, 7, 8, 10, 12, 15, 20)"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by club country (e.g., 'ENG', 'ITA')","title":"Country"},"description":"Filter by club country (e.g., 'ENG', 'ITA')"},{"name":"division","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by club division (0-based, so 0=D1)","title":"Division"},"description":"Filter by club division (0-based, so 0=D1)"},{"name":"min_rating","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum player rating","title":"Min Rating"},"description":"Minimum player rating"},{"name":"max_rating","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum player rating","title":"Max Rating"},"description":"Maximum player rating"},{"name":"position","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Player position code (GK, LB, CB, RB, DML, DMC, DMR, LM, CM, RM, AML, AMC, AMR, FL, FC, FR)","title":"Position"},"description":"Player position code (GK, LB, CB, RB, DML, DMC, DMR, LM, CM, RM, AML, AMC, AMR, FL, FC, FR)"},{"name":"min_age","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum player age","title":"Min Age"},"description":"Minimum player age"},{"name":"max_age","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum player age","title":"Max Age"},"description":"Maximum player age"},{"name":"min_buyable","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum buyable influence at threshold","title":"Min Buyable"},"description":"Minimum buyable influence at threshold"},{"name":"player_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Single-player lookup (the quick-buy fair-price seed)","title":"Player Id"},"description":"Single-player lookup (the quick-buy fair-price seed)"},{"name":"min_match_time","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum match time percentage (0-100)","title":"Min Match Time"},"description":"Minimum match time percentage (0-100)"},{"name":"max_match_time","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum match time percentage (0-100)","title":"Max Match Time"},"description":"Maximum match time percentage (0-100)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Sort field (payback, earnings, buyable, cost, rating, age, avg_price, match_time)","default":"payback","title":"Sort"},"description":"Sort field (payback, earnings, buyable, cost, rating, age, avg_price, match_time)"},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","description":"Sort order (asc, desc)","default":"asc","title":"Order"},"description":"Sort order (asc, desc)"},{"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":500,"minimum":1,"description":"Results per page","default":100,"title":"Limit"},"description":"Results per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dilutions":{"get":{"tags":["Dilutions"],"summary":"Retrieve dilution events","description":"Returns a paginated list of dilution events with contributions, including state and financial details.","operationId":"get_dilutions_dilutions_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number, starting from 1","default":1,"title":"Page"},"description":"Page number, starting from 1"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"description":"Number of events per page (default 100, max 5000)","default":100,"title":"Per Page"},"description":"Number of events per page (default 100, max 5000)"},{"name":"share_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by share type (e.g. 'club')","title":"Share Type"},"description":"Filter by share type (e.g. 'club')"},{"name":"share_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by share ID (club or player ID)","title":"Share Id"},"description":"Filter by share ID (club or player ID)"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by contributor username","title":"Name"},"description":"Filter by contributor username"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(active|finished|success|failed|rejected)$"},{"type":"null"}],"description":"Filter by event state","title":"State"},"description":"Filter by event state"},{"name":"include_rejected","in":"query","required":false,"schema":{"type":"boolean","description":"Include rejected votes with finished or unfiltered events","default":false,"title":"Include Rejected"},"description":"Include rejected votes with finished or unfiltered events"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/DilutionSortBy"},{"type":"null"}],"description":"Field to sort by: total_raised, price, influence_created, date","title":"Sort By"},"description":"Field to sort by: total_raised, price, influence_created, date"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","description":"Sort order: asc or desc","default":"asc","title":"Sort Order"},"description":"Sort order: asc or desc"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_DilutionEventResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/gsp":{"post":{"tags":["Unified v1"],"summary":"Gsp Rpc","operationId":"gsp_rpc_v1_gsp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/bootstrap":{"get":{"tags":["Unified v1"],"summary":"V1 Bootstrap","description":"Season-scale structure in one response (ADR 002 Stage 4 item 3,\nfirst aggregate): seasons, the current season's leagues and cups, the\nthree association groups and game params — the five GSP structure\nreads every fresh client performs.","operationId":"v1_bootstrap_v1_bootstrap_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/portfolio/discover":{"get":{"tags":["Unified v1"],"summary":"Archetype-driven club/player candidates for the Discover tab","operationId":"v1_portfolio_discover_v1_portfolio_discover_get","parameters":[{"name":"share_type","in":"query","required":true,"schema":{"type":"string","pattern":"^(club|player)$","title":"Share Type"}},{"name":"archetype","in":"query","required":true,"schema":{"type":"string","description":"One of the share_type's archetype ids; archetypes are share_type-scoped","title":"Archetype"},"description":"One of the share_type's archetype ids; archetypes are share_type-scoped"},{"name":"country_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":3,"maxLength":3},{"type":"null"}],"description":"Club country (for players: their club's country)","title":"Country Id"},"description":"Club country (for players: their club's country)"},{"name":"division","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"0 = top flight","title":"Division"},"description":"0 = top flight"},{"name":"age_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Players only","title":"Age Min"},"description":"Players only"},{"name":"age_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Players only","title":"Age Max"},"description":"Players only"},{"name":"position","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Players only; dc_players.position code","title":"Position"},"description":"Players only; dc_players.position code"},{"name":"exclude_owned","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Username whose current holdings (num > 0) are hidden","title":"Exclude Owned"},"description":"Username whose current holdings (num > 0) are hidden"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"club: fanbase|balance|rating|title_streak (default fanbase); player: rating|age|earnings|payback_years (default rating; payback_years = 5-influence cost / current earnings, lower is better)","title":"Sort"},"description":"club: fanbase|balance|rating|title_streak (default fanbase); player: rating|age|earnings|payback_years (default rating; payback_years = 5-influence cost / current earnings, lower is better)"},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(asc|desc)$"},{"type":"null"}],"title":"Order"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Per Page"}}],"responses":{"200":{"description":"Paged candidates: identity + archetype + reasons (the classifier facts) + display fields. Archetypes are disjoint (first match wins), so the five sections of one share_type never overlap.","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/club/{club_id}":{"get":{"tags":["Unified v1"],"summary":" V1 Club Data","description":"Compose the club overview page in one response.","operationId":"_v1_club_data_v1_club__club_id__get","parameters":[{"name":"club_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"title":"Club Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/player/{player_id}":{"get":{"tags":["Unified v1"],"summary":" V1 Player Data","description":"Compose the player overview page in one response.","operationId":"_v1_player_data_v1_player__player_id__get","parameters":[{"name":"player_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"title":"Player Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/user/{name}":{"get":{"tags":["Unified v1"],"summary":" V1 User Data","description":"Compose the public user (profile) overview page in one response.","operationId":"_v1_user_data_v1_user__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","minLength":1,"title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/portfolio/{name}":{"get":{"tags":["Unified v1"],"summary":" V1 Portfolio Data","description":"One-call portfolio page (spec §5.4): pure composition of\nalready-cached sections — a warm hit is a handful of Redis GETs.","operationId":"_v1_portfolio_data_v1_portfolio__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","minLength":1,"title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/match/{fixture_id}":{"get":{"tags":["Unified v1"],"summary":" V1 Match Data","description":"Compose the match/fixture page in one response.\n\nThe full commentary is intentionally NOT here — it is a tab, fetched lazily\nfrom /v1/match/{id}/commentary. The pitch's substitution markers ride the\ntiny `substitutions` section instead, so this response stays ~20KB.","operationId":"_v1_match_data_v1_match__fixture_id__get","parameters":[{"name":"fixture_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"title":"Fixture Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/match/{fixture_id}/commentary":{"get":{"tags":["Unified v1"],"summary":" V1 Match Commentary Data","description":"The match commentary tab, fetched lazily when a user opens it. Same\nseal-cached section the main aggregate used to inline; kept off the hot\npath so a match-page load never carries the full commentary array. Returns\nthe bare list (the frontend's getMatchCommentary shape).","operationId":"_v1_match_commentary_data_v1_match__fixture_id__commentary_get","parameters":[{"name":"fixture_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"title":"Fixture Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/user/{name}/portfolio/{share_type}/{share_id}/history":{"get":{"tags":["Unified v1"],"summary":"Get Portfolio History","description":"Holding history for one (name, share_type, share_id), paged\nnewest-first.\n\n``bucket=week`` pages the updater's per-week payout buckets and IGNORES\n``kind`` -- every bucket is a payout aggregate by construction, so there\nis nothing to filter by trade vs payout.\n\n``bucket=event`` merges the three raw archival streams, honouring\n``kind``. A returned page can be shorter than ``limit`` -- zero items\nincluded -- and still carry a ``nextCursor``; callers must page on\n``nextCursor``'s presence, never on a full-length page. Both modes\nreject a malformed (or other-mode) cursor before\ntouching a session, and both read the trailer live from holding metrics\nrather than from any cached body.\n\n``from``/``to`` compare against the week bucket start (``week_start``)\nin ``bucket=week`` -- a mid-week ``from`` excludes that week's bucket --\nand resolve to a block-height window (event-time inclusive) in\n``bucket=event``.","operationId":"get_portfolio_history_v1_user__name__portfolio__share_type___share_id__history_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","minLength":1,"title":"Name"}},{"name":"share_type","in":"path","required":true,"schema":{"type":"string","pattern":"^(club|player)$","title":"Share Type"}},{"name":"share_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"title":"Share Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Opaque resume token from nextCursor; pages strictly older items.","title":"Cursor"},"description":"Opaque resume token from nextCursor; pages strictly older items."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","pattern":"^(trade|payout|all)$","default":"all","title":"Kind"}},{"name":"bucket","in":"query","required":false,"schema":{"type":"string","pattern":"^(event|week)$","default":"event","title":"Bucket"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"To"}}],"responses":{"200":{"description":"Holding event/week history. Money in base units (x10000).  xirr is not served here; dataThroughHeight/basisStatus are read from holding metrics and may lag archival by the updater interval.  `estimatedBasis` is how much of this holding's `total_spent` is policy-ASSESSED value rather than cash paid (the sum of its free-receipt valuations; 0 when nothing was valued) -- clients must disclose it rather than present the total as money the user spent.  A page MAY hold fewer than `limit` items -- including zero -- while `nextCursor` is still set (a truncated merge watermark or an all-paired tail can do this); clients must treat `nextCursor` presence, not `len(items) == limit`, as the has-more signal.  Event-mode item `shares` sign: `gift_out` keeps the ledger's own negative sign, `sell` (and every other trade-stream kind) is a positive quantity, `dilution` is normalised positive.  Optional `source` names an item's provenance -- `pack`/`referral`/`airdrop`/`free` on a mint, `gift` on a valued `gift_in`, `fundraise` on a `dilution` -- and is ABSENT on trades, payouts, `gift_out` and any `gift_in` no valuation could price; for `airdrop`/`gift`/`referral` the `amount` is a buy-equivalent worth, not cash paid.","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/home":{"get":{"tags":["Unified v1"],"summary":"V1 Home","description":"Compose the home (``/``) page's initial paint in one response.","operationId":"v1_home_v1_home_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/stats":{"get":{"tags":["Unified v1"],"summary":"V1 Stats","description":"Compose the /stats page's initial paint in one response.\n\nThe six sections normalizeStats reads, and no more: it used to also return\ntopEarners7d, topPlayers(50) and bestManagers — 24 KB of a 53 KB response\nthat no section of /stats renders and the seed never read (same over-fetch\nas /v1/exchange, and the same double cost: the payload is a client-component\nprop, so it also rode the RSC flight payload to the browser).  /v1/home\nstill computes the two lists it does render.","operationId":"v1_stats_v1_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/exchange":{"get":{"tags":["Unified v1"],"summary":"V1 Exchange","description":"Compose the exchange (``/influence``) landing lists in one response.\n\nThe exchange is lazy per selected entity — orderbook / shareholders /\nper-entity trades are served realtime and by /v1/club and /v1/player — so\nthis covers only the landing paint: recent prints plus the browsable\nclub/player lists and the SVC rate (via market).\n\nIt used to ALSO return hotClubs(50) and topPlayers(50) — 66 KB of a 96 KB\nresponse — which no component on /influence renders and the seed never read.\nBecause the whole payload is handed to a client component as a prop, that\n66 KB was serialized into the RSC flight payload and shipped to the browser a\nsecond time. Both are still computed for /v1/home and /v1/stats, which do\nrender them; they simply have no business here.","operationId":"v1_exchange_v1_exchange_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/votes":{"get":{"tags":["Unified v1"],"summary":"V1 Votes","description":"Compose the global votes page — the raw active governance votes plus the\nclub/player detail maps needed to enrich them — in one response.  The\nfrontend buildGlobalVotes transform does the filter/dedupe/enrich (+ datapack\nnames); we resolve details for exactly the entity id sets it will need, so\nthe seeded ``['globalVotes']`` equals a live fetch.  The per-page vote-OPTIONS\nbatch (``shareProposalsBatch``) stays a client fetch — it keys on the visible\npage's entities (client tab/pagination), not on load.","operationId":"v1_votes_v1_votes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/transfer-market":{"get":{"tags":["Unified v1"],"summary":"V1 Transfer Market","operationId":"v1_transfer_market_v1_transfer_market_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Per Page"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"end_time","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"asc","title":"Order"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"positions","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Positions"}},{"name":"multipos","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Multipos"}},{"name":"min_rating","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Rating"}},{"name":"max_rating","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Rating"}},{"name":"min_age","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Age"}},{"name":"max_age","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Age"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"min_bid","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Bid"}},{"name":"max_bid","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Bid"}},{"name":"ending_soon","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Ending Soon"}},{"name":"contracts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contracts"}},{"name":"max_time_remaining","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Time Remaining"}},{"name":"agent_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"}},{"name":"no_agent","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"No Agent"}},{"name":"squad_club_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Squad Club Id"}},{"name":"bid_player_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bid Player Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/transfer-market/listed-ids":{"get":{"tags":["Unified v1"],"summary":"V1 Transfer Listed Ids","description":"Which players are transfer-listed, and nothing else.\n\nThe profile pages (holdings, agent list) only need to know whether each\nplayer they show carries a \"listed\" badge — and to answer that they were\npulling the same 3.3 MB of auctions as the market page itself. This is the\nsame question in ~60 KB.  ``scope=all`` skips the biddable cut, for the\nagent workspace (see ``listed_ids``).","operationId":"v1_transfer_listed_ids_v1_transfer_market_listed_ids_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","pattern":"^(biddable|all)$","default":"biddable","title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/search":{"get":{"tags":["Unified v1"],"summary":"V1 Search","description":"Unified /v1 search — currently the datacentre user name-prefix lookup\n(club/player/country search is client-side; see the module docstring).\n\nReturns ``{\"users\": <paginated users>}``.  A query shorter than two\ncharacters, or a failed lookup, yields an empty page rather than an error so\nthe caller's search box degrades cleanly.","operationId":"v1_search_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Search term — matches user names by prefix","title":"Q"},"description":"Search term — matches user names by prefix"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Maximum users to return","default":10,"title":"Limit"},"description":"Maximum users to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/country/{country_id}":{"get":{"tags":["Unified v1"],"summary":"V1 Country","description":"Compose the country page (header market data + league overviews + cups +\nnews) in one response.  ``season`` overrides the season used for cups/news\n(leagues always reflect the latest season, matching the frontend).","operationId":"v1_country_v1_country__country_id__get","parameters":[{"name":"country_id","in":"path","required":true,"schema":{"type":"string","description":"Country code, e.g. ENG","title":"Country Id"},"description":"Country code, e.g. ENG"},{"name":"season","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Season id; defaults to the current season","title":"Season"},"description":"Season id; defaults to the current season"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/league/{country_id}/{division}":{"get":{"tags":["Unified v1"],"summary":"V1 League","description":"Compose the division page (standings + turns + top players + news) in one\nresponse, resolving the league from country + season + division server-side\n(the page URL carries no league_id).  ``season`` selects which season's\nleague — and therefore which standings/news — to serve.","operationId":"v1_league_v1_league__country_id___division__get","parameters":[{"name":"country_id","in":"path","required":true,"schema":{"type":"string","description":"Country code, e.g. ENG","title":"Country Id"},"description":"Country code, e.g. ENG"},{"name":"division","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"League level as in the page URL (1 = top division)","title":"Division"},"description":"League level as in the page URL (1 = top division)"},{"name":"season","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Season id; defaults to the current season","title":"Season"},"description":"Season id; defaults to the current season"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/continental/{continent}":{"get":{"tags":["Unified v1"],"summary":"V1 Continental","description":"Compose the continental competition page (its three cups + the group-stage\nstandings) in one response, resolving the season server-side.  ``season``\noverrides which season's cups/groups to serve.  A continent with no leagues/\ncups (e.g. OCE) yields empty sections, not an error.","operationId":"v1_continental_v1_continental__continent__get","parameters":[{"name":"continent","in":"path","required":true,"schema":{"type":"string","description":"Continent association id, e.g. EUR/AFR/AME/ASI","title":"Continent"},"description":"Continent association id, e.g. EUR/AFR/AME/ASI"},{"name":"season","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Season id; defaults to the current season","title":"Season"},"description":"Season id; defaults to the current season"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/world-cup":{"get":{"tags":["Unified v1"],"summary":"V1 World Cup","description":"Compose the World Club Cup page (the competition row + its knockout bracket\nfixtures) in one response.  Three dependent steps: seasons → the WOR cup for\nthe season → the cup's bracket (gated on a resolved ``cup_id``).  ``season``\nselects which season's cup/bracket to serve; the frontend keeps\n``buildCupBracket`` client-side, so this returns the raw ``{turn, fixtures}``\nrounds.","operationId":"v1_world_cup_v1_world_cup_get","parameters":[{"name":"season","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Season id; defaults to the current season","title":"Season"},"description":"Season id; defaults to the current season"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/country-cup/{country_id}":{"get":{"tags":["Unified v1"],"summary":"V1 Country Cup","description":"Compose the domestic-cup page — the country's cups for the season plus the\ndomestic cup's knockout bracket — in one response.  Mirrors ``v1_world_cup``\nbut resolves the cup via ``_country_cups`` + ``comp_type == 1`` (domestic,\nmatching the frontend ``getDomesticCup``).  Returns the FULL country cups list\n(identity with ``getCupsByCountry``) so the frontend seeds the shared\n``['cups','country',id,season]`` key and re-derives the domestic cup for the\nbracket key; a country with no domestic cup yields ``fixtures: []``.","operationId":"v1_country_cup_v1_country_cup__country_id__get","parameters":[{"name":"country_id","in":"path","required":true,"schema":{"type":"string","description":"Country association id, e.g. ENG","title":"Country Id"},"description":"Country association id, e.g. ENG"},{"name":"season","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Season id; defaults to the current season","title":"Season"},"description":"Season id; defaults to the current season"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/map":{"get":{"tags":["Unified v1"],"summary":"V1 Map","description":"Compose the world map page — the full country heatmap rows plus the three\nassociation trees (national/continental/world) — in one response.  Mirrors\nwhat ``MapContent`` fetches via ``useMapCountries`` + three ``useAssociations``\nhooks.  Each section degrades to null/[] independently; associations are\nunwrapped from the GSP envelope so the seed equals ``getAssociations``.","operationId":"v1_map_v1_map_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/jobs-board":{"get":{"tags":["Unified v1"],"summary":"V1 Jobs Board","description":"Compose the jobs-board: the Posted tab (clubs advertising a manager job)\nand the Takeover tab (available clubs), each a paginated list whose ``total``\nis the tab count.  Post/cancel/takeover are mutations, out of scope.","operationId":"v1_jobs_board_v1_jobs_board_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/shop":{"get":{"tags":["Unified v1"],"summary":"V1 Shop","description":"Compose the shop: the default page of influence packs for sale + the\nclub_earnings_light SVC/year map the pack cards need.  Filter/pagination\nchanges re-fire /shop; buy/approve are on-chain mutations, out of scope.","operationId":"v1_shop_v1_shop_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AchievementsResponse":{"properties":{"username":{"type":"string","title":"Username"},"refer_a_friend":{"type":"integer","title":"Refer A Friend"},"complete_a_trade":{"type":"integer","title":"Complete A Trade"},"buy_a_pack":{"type":"integer","title":"Buy A Pack"}},"type":"object","required":["username","refer_a_friend","complete_a_trade","buy_a_pack"],"title":"AchievementsResponse"},"ActiveProposalHoldingResponse":{"properties":{"share_type":{"type":"string","title":"Share Type"},"share_id":{"type":"integer","title":"Share Id"},"num":{"type":"integer","title":"Num"},"club_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Id"},"proposal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Proposal Id"},"proposal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Type"},"proposal_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Stage"},"proposal_end_time_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Proposal End Time Unix"},"proposal_time_remaining":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Time Remaining"},"proposal_total_votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Proposal Total Votes"},"proposal_leading_candidate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Leading Candidate"},"proposal_leading_votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Proposal Leading Votes"}},"type":"object","required":["share_type","share_id","num"],"title":"ActiveProposalHoldingResponse","description":"One holding of the queried user that has an active proposal.\n\nField names mirror the proposal_* stamps on DetailedShareBalanceResponse\nso the frontend votes tab consumes both shapes interchangeably — but this\nendpoint derives them from the user's FULL holdings, not the capped\nportfolio page, so it is exact at any portfolio size."},"BestManagersResponse":{"properties":{"name":{"type":"string","title":"Name"},"rank_old":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank Old"},"rank_old_ranking":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank Old Ranking"},"rank_a":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank A"},"rank_a_ranking":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank A Ranking"},"rank_b":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank B"},"rank_b_ranking":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rank B Ranking"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"}},"type":"object","required":["name","rank_old","rank_old_ranking","rank_a","rank_a_ranking","rank_b","rank_b_ranking"],"title":"BestManagersResponse"},"BestManagersSortBy":{"type":"string","enum":["name","rank_old","rank_old_ranking","rank_a","rank_a_ranking","rank_b","rank_b_ranking","last_active_unix"],"title":"BestManagersSortBy"},"ClubDetailedResponse":{"properties":{"club_id":{"type":"integer","title":"Club Id"},"balance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance"},"form":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Form"},"division_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Division Start"},"fans_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fans Start"},"fans_current":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fans Current"},"stadium_size_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stadium Size Start"},"stadium_size_current":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stadium Size Current"},"stadium_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stadium Id"},"value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Value"},"rating_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Start"},"manager_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manager Name"},"manager_last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Last Active Unix"},"default_formation":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Default Formation"},"penalty_taker":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Penalty Taker"},"country_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Id"},"manager_locked":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Locked"},"transfers_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Transfers In"},"transfers_out":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Transfers Out"},"committed_tactics":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Committed Tactics"},"proposed_manager":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposed Manager"},"last_price":{"type":"integer","title":"Last Price","default":0},"volume_1_day":{"type":"integer","title":"Volume 1 Day","default":0},"volume_7_day":{"type":"integer","title":"Volume 7 Day","default":0},"last_7days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days"},"last_7days_price":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days Price"},"available":{"type":"integer","title":"Available"},"league_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"League Id"},"division":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Division"},"avg_wages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Avg Wages"},"total_wages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Wages"},"total_player_value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Player Value"},"avg_player_rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Avg Player Rating"},"avg_player_rating_top21":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Avg Player Rating Top21"},"avg_shooting":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Avg Shooting"},"avg_passing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Avg Passing"},"avg_tackling":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Avg Tackling"},"gk_rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gk Rating"},"league_titles":{"type":"integer","title":"League Titles","default":0},"cup_wins":{"type":"integer","title":"Cup Wins","default":0},"runners_up":{"type":"integer","title":"Runners Up","default":0},"promotions":{"type":"integer","title":"Promotions","default":0},"trophy_points":{"type":"integer","title":"Trophy Points","default":0},"manager_voted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Voted"},"job_posted":{"anyOf":[{"$ref":"#/components/schemas/JobPostedDetails"},{"type":"string"},{"type":"null"}],"title":"Job Posted"},"top_influencers":{"anyOf":[{"items":{"$ref":"#/components/schemas/ShareBalanceItem"},"type":"array"},{"type":"null"}],"title":"Top Influencers"},"league_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"League Position"},"previous_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Previous Position"}},"type":"object","required":["club_id","balance","form","division_start","fans_start","fans_current","stadium_size_start","stadium_size_current","stadium_id","value","rating_start","manager_name","default_formation","penalty_taker","country_id","manager_locked","transfers_in","transfers_out","committed_tactics","proposed_manager","available","league_id","division","avg_wages","total_wages","total_player_value","avg_player_rating","avg_player_rating_top21","avg_shooting","avg_passing","avg_tackling","gk_rating"],"title":"ClubDetailedResponse"},"ClubResponse":{"properties":{"club_id":{"type":"integer","title":"Club Id"},"last_price":{"type":"integer","title":"Last Price","default":0},"volume_1_day":{"type":"integer","title":"Volume 1 Day","default":0},"volume_7_day":{"type":"integer","title":"Volume 7 Day","default":0},"last_7days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days"},"last_7days_price":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days Price"},"balance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance"},"manager_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manager Name"},"country_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Id"},"value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Value"},"rating_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Start"},"manager_last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Last Active Unix"}},"type":"object","required":["club_id","balance","manager_name","country_id","value","rating_start"],"title":"ClubResponse"},"ClubWeeklyBalanceSheetResponse":{"properties":{"season":{"type":"integer","title":"Season"},"game_week":{"type":"integer","title":"Game Week"},"date":{"type":"integer","title":"Date"},"agent_wages":{"type":"integer","title":"Agent Wages"},"cash_injection":{"type":"integer","title":"Cash Injection"},"dilution_income":{"type":"integer","title":"Dilution Income","default":0},"gate_receipts":{"type":"integer","title":"Gate Receipts"},"ground_maintenance":{"type":"integer","title":"Ground Maintenance"},"managers_wage":{"type":"integer","title":"Managers Wage"},"merchandise":{"type":"integer","title":"Merchandise"},"other_income":{"type":"integer","title":"Other Income"},"other_outgoings":{"type":"integer","title":"Other Outgoings"},"player_wages":{"type":"integer","title":"Player Wages"},"prize_money":{"type":"integer","title":"Prize Money"},"shareholder_payouts":{"type":"integer","title":"Shareholder Payouts"},"shareholder_prize_money":{"type":"integer","title":"Shareholder Prize Money"},"sponsor":{"type":"integer","title":"Sponsor"},"transfers_in":{"type":"integer","title":"Transfers In"},"transfers_out":{"type":"integer","title":"Transfers Out"},"tv_revenue":{"type":"integer","title":"Tv Revenue"}},"type":"object","required":["season","game_week","date","agent_wages","cash_injection","gate_receipts","ground_maintenance","managers_wage","merchandise","other_income","other_outgoings","player_wages","prize_money","shareholder_payouts","shareholder_prize_money","sponsor","transfers_in","transfers_out","tv_revenue"],"title":"ClubWeeklyBalanceSheetResponse"},"ClubsSortBy":{"type":"string","enum":["club_id","last_price","volume_1_day","volume_7_day","balance","country_id","value","rating_start","available","league_id","division","avg_wages","total_wages","total_player_value","avg_player_rating","avg_player_rating_top21","avg_shooting","avg_passing","avg_tackling","gk_rating","transfers_in","transfers_out","stadium_size_current","fans_current","trophy_points"],"title":"ClubsSortBy"},"CombinedPayoutsResponse":{"properties":{"daily":{"items":{"$ref":"#/components/schemas/PayoutsDataPoint"},"type":"array","title":"Daily"},"monthly":{"items":{"$ref":"#/components/schemas/MonthlyDataPoint"},"type":"array","title":"Monthly"}},"type":"object","required":["daily","monthly"],"title":"CombinedPayoutsResponse"},"CountriesSortBy":{"type":"string","enum":["country_id","total_clubs","total_players","total_volume_1_day","total_volume_7_day","market_cap","club_market_cap","player_market_cap","total_available_jobs","total_leagues"],"title":"CountriesSortBy"},"CountryResponse":{"properties":{"country_id":{"type":"string","title":"Country Id"},"total_clubs":{"type":"integer","title":"Total Clubs","default":0},"total_players":{"type":"integer","title":"Total Players","default":0},"total_volume_1_day":{"type":"integer","title":"Total Volume 1 Day","default":0},"total_volume_7_day":{"type":"integer","title":"Total Volume 7 Day","default":0},"last_7days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days"},"market_cap":{"type":"integer","title":"Market Cap","default":0},"club_market_cap":{"type":"integer","title":"Club Market Cap","default":0},"player_market_cap":{"type":"integer","title":"Player Market Cap","default":0},"total_available_jobs":{"type":"integer","title":"Total Available Jobs","default":0},"total_leagues":{"type":"integer","title":"Total Leagues","default":0}},"type":"object","required":["country_id"],"title":"CountryResponse"},"DailyProposalStats":{"properties":{"date":{"type":"string","title":"Date"},"total_ended":{"type":"integer","title":"Total Ended"},"by_type":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Type"},"by_share_type":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Share Type"},"proposals":{"items":{"$ref":"#/components/schemas/ProposalResponse"},"type":"array","title":"Proposals"}},"type":"object","required":["date","total_ended","by_type","by_share_type","proposals"],"title":"DailyProposalStats"},"DetailedShareBalanceResponse":{"properties":{"name":{"type":"string","title":"Name"},"share_type":{"type":"string","title":"Share Type"},"share_id":{"type":"integer","title":"Share Id"},"num":{"type":"integer","title":"Num"},"last_price":{"type":"integer","title":"Last Price","default":0},"country_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Id"},"league_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"League Id"},"division":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Division"},"club_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Id"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"agent_last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Last Active Unix"},"manager_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manager Name"},"manager_last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Last Active Unix"},"club_balance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Balance"},"old_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Old Position"},"new_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"New Position"},"league_form":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"League Form"},"stadium_size_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stadium Size Start"},"stadium_size_current":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stadium Size Current"},"fans_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fans Start"},"fans_current":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fans Current"},"manager_locked":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Locked"},"dob":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dob"},"player_value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player Value"},"wages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Wages"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"position_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position Name"},"multi_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Multi Position"},"positions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Positions"},"fitness":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fitness"},"morale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Morale"},"concerns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Concerns"},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"},"rating_gk":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Gk"},"rating_tackling":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Tackling"},"rating_passing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Passing"},"rating_shooting":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Shooting"},"injured":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Injured"},"contract":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contract"},"form":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Form"},"banned":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Banned"},"nationality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nationality"},"desired_contract":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Desired Contract"},"allow_transfer":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Allow Transfer"},"allow_renew":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Allow Renew"},"loan_offered":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loan Offered"},"loan_offer_accepted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loan Offer Accepted"},"loaned_to_club":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loaned To Club"},"last_7days_price":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days Price"},"earnings_7d":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Earnings 7D"},"earnings_30d":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Earnings 30D"},"total_spent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Spent"},"sale_proceeds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sale Proceeds"},"remaining_cost_basis":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Remaining Cost Basis"},"realised_pl":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Realised Pl"},"lifetime_payouts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lifetime Payouts"},"lifetime_payout_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lifetime Payout Count"},"season_payouts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Season Payouts"},"season_payout_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Season Payout Count"},"trailing_season_payouts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trailing Season Payouts"},"free_shares_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Free Shares In"},"free_value_at_receipt":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Free Value At Receipt"},"first_payout_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"First Payout Time"},"basis_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basis Status"},"xirr_per_season":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Xirr Per Season"},"this_week_payouts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"This Week Payouts"},"last_week_payouts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Week Payouts"},"recent_weekly_payouts":{"anyOf":[{"items":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"array"},{"type":"null"}],"title":"Recent Weekly Payouts"},"issue_codes":{"items":{"type":"string"},"type":"array","title":"Issue Codes","default":[]},"has_active_proposal":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Active Proposal"},"proposal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Proposal Id"},"proposal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Type"},"proposal_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Stage"},"proposal_end_time_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Proposal End Time Unix"},"proposal_time_remaining":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Time Remaining"},"proposal_total_votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Proposal Total Votes"},"proposal_leading_candidate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proposal Leading Candidate"},"proposal_leading_votes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Proposal Leading Votes"}},"type":"object","required":["name","share_type","share_id","num"],"title":"DetailedShareBalanceResponse"},"DetailedShareBalancesSortBy":{"type":"string","enum":["num","value","earnings_7d","earnings_30d","balance","rating","last_active_unix","age","contract","games_played","wage_change","total_spent","remaining_cost_basis","lifetime_payouts","trailing_season_payouts","realised_pl","xirr_per_season","this_week_payouts","payback","yoc"],"title":"DetailedShareBalancesSortBy"},"DilutionContributionItem":{"properties":{"name":{"type":"string","title":"Name"},"amount":{"type":"integer","title":"Amount","default":0},"shares_bought":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shares Bought"},"refund":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Refund"}},"type":"object","required":["name"],"title":"DilutionContributionItem"},"DilutionEventResponse":{"properties":{"event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Event Id"},"share_type":{"type":"string","title":"Share Type"},"share_id":{"type":"integer","title":"Share Id"},"state":{"type":"string","title":"State"},"num":{"type":"integer","title":"Num"},"min_raise":{"type":"integer","title":"Min Raise"},"end_time":{"type":"integer","title":"End Time"},"shares_bought":{"type":"integer","title":"Shares Bought","default":0},"tentative_raise":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tentative Raise"},"price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Price"},"total_bids":{"type":"integer","title":"Total Bids","default":0},"total_refund":{"type":"integer","title":"Total Refund","default":0},"total_raised":{"type":"integer","title":"Total Raised","default":0},"contributions":{"items":{"$ref":"#/components/schemas/DilutionContributionItem"},"type":"array","title":"Contributions","default":[]},"proposal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Proposal Id"},"options":{"anyOf":[{"items":{"$ref":"#/components/schemas/DilutionOptionItem"},"type":"array"},{"type":"null"}],"title":"Options"}},"type":"object","required":["event_id","share_type","share_id","state","num","min_raise","end_time"],"title":"DilutionEventResponse"},"DilutionOptionItem":{"properties":{"option_id":{"type":"integer","title":"Option Id"},"num":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num"},"min_raise":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Raise"},"votes":{"type":"integer","title":"Votes"},"winner":{"type":"boolean","title":"Winner"}},"type":"object","required":["option_id","num","min_raise","votes","winner"],"title":"DilutionOptionItem"},"DilutionSortBy":{"type":"string","enum":["total_raised","price","influence_created","date"],"title":"DilutionSortBy"},"EarningsPeriod":{"properties":{"svc":{"type":"integer","title":"Svc"},"usdc":{"type":"number","title":"Usdc"}},"type":"object","required":["svc","usdc"],"title":"EarningsPeriod"},"FinishedProposal":{"properties":{"proposal_id":{"type":"integer","title":"Proposal Id"},"type":{"type":"string","title":"Type"},"state":{"type":"string","title":"State","default":"finished"},"start_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Time"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data"},"options":{"items":{"$ref":"#/components/schemas/FinishedProposalOption"},"type":"array","title":"Options","default":[]},"votes":{"additionalProperties":{"type":"integer"},"type":"object","title":"Votes","default":{}},"total_votes":{"type":"integer","title":"Total Votes","default":0}},"type":"object","required":["proposal_id","type"],"title":"FinishedProposal"},"FinishedProposalOption":{"properties":{"option_id":{"type":"integer","title":"Option Id"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data"},"votes":{"type":"integer","title":"Votes","default":0},"is_winner":{"type":"boolean","title":"Is Winner","default":false}},"type":"object","required":["option_id"],"title":"FinishedProposalOption"},"FinishedProposalsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/FinishedShareProposals"},"type":"array","title":"Items","default":[]}},"type":"object","title":"FinishedProposalsResponse"},"FinishedShareProposals":{"properties":{"share_type":{"type":"string","title":"Share Type"},"share_id":{"type":"integer","title":"Share Id"},"proposals":{"items":{"$ref":"#/components/schemas/FinishedProposal"},"type":"array","title":"Proposals","default":[]}},"type":"object","required":["share_type","share_id"],"title":"FinishedShareProposals"},"FixturePlayerResponse":{"properties":{"team":{"type":"integer","title":"Team"},"player_id":{"type":"integer","title":"Player Id"},"start_ix":{"type":"integer","title":"Start Ix"},"time_started":{"type":"integer","title":"Time Started"},"time_finished":{"type":"integer","title":"Time Finished"},"minutes_played":{"type":"integer","title":"Minutes Played"},"saves":{"type":"integer","title":"Saves"},"key_tackles":{"type":"integer","title":"Key Tackles"},"key_passes":{"type":"integer","title":"Key Passes"},"assists":{"type":"integer","title":"Assists"},"shots":{"type":"integer","title":"Shots"},"goals":{"type":"integer","title":"Goals"},"yellow_cards":{"type":"integer","title":"Yellow Cards"},"red_cards":{"type":"integer","title":"Red Cards"},"yellowred_cards":{"type":"integer","title":"Yellowred Cards"},"injuries":{"type":"integer","title":"Injuries"},"keeping_abilities":{"type":"integer","title":"Keeping Abilities"},"tackling_abilities":{"type":"integer","title":"Tackling Abilities"},"passing_abilities":{"type":"integer","title":"Passing Abilities"},"shooting_abilities":{"type":"integer","title":"Shooting Abilities"},"rating":{"type":"integer","title":"Rating"},"youth_player":{"type":"boolean","title":"Youth Player"},"fixture_id":{"type":"integer","title":"Fixture Id"}},"type":"object","required":["team","player_id","start_ix","time_started","time_finished","minutes_played","saves","key_tackles","key_passes","assists","shots","goals","yellow_cards","red_cards","yellowred_cards","injuries","keeping_abilities","tackling_abilities","passing_abilities","shooting_abilities","rating","youth_player","fixture_id"],"title":"FixturePlayerResponse"},"FixtureTacticsResponse":{"properties":{"club_id":{"type":"integer","title":"Club Id"},"tactic_actions":{"items":{"$ref":"#/components/schemas/TacticActionItem"},"type":"array","title":"Tactic Actions"},"set_tactics":{"title":"Set Tactics"},"auto_tactics":{"anyOf":[{},{"type":"null"}],"title":"Auto Tactics"},"reason_for_auto":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason For Auto"}},"type":"object","required":["club_id","tactic_actions","set_tactics","auto_tactics","reason_for_auto"],"title":"FixtureTacticsResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HistoricalProposalsResponse":{"properties":{"days_back":{"type":"integer","title":"Days Back"},"total_ended":{"type":"integer","title":"Total Ended"},"by_type":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Type"},"by_share_type":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Share Type"},"daily_stats":{"items":{"$ref":"#/components/schemas/DailyProposalStats"},"type":"array","title":"Daily Stats"},"all_proposals":{"items":{"$ref":"#/components/schemas/ProposalResponse"},"type":"array","title":"All Proposals"}},"type":"object","required":["days_back","total_ended","by_type","by_share_type","daily_stats","all_proposals"],"title":"HistoricalProposalsResponse"},"JobPostedDetails":{"properties":{"posted_at":{"type":"integer","title":"Posted At"},"poster_name":{"type":"string","title":"Poster Name"},"poster_last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Poster Last Active Unix"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"poster_influence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Poster Influence"}},"type":"object","required":["posted_at","poster_name"],"title":"JobPostedDetails"},"JobPostingResponse":{"properties":{"club_id":{"type":"integer","title":"Club Id"},"poster_name":{"type":"string","title":"Poster Name"},"posted_at":{"type":"integer","title":"Posted At"},"description":{"type":"string","title":"Description"}},"type":"object","required":["club_id","poster_name","posted_at","description"],"title":"JobPostingResponse"},"LeagueResponse":{"properties":{"league_id":{"type":"integer","title":"League Id"},"country_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Id"},"division":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Division"},"ticket_cost":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ticket Cost"},"tv_money":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tv Money"},"prize_money_pot":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prize Money Pot"},"ave_attendance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ave Attendance"},"num_teams":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Teams"},"round":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Round"},"num_rounds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Rounds"},"comp_type":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Comp Type"},"ave_club_rating_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ave Club Rating Start"},"total_volume_1_day":{"type":"integer","title":"Total Volume 1 Day","default":0},"total_volume_7_day":{"type":"integer","title":"Total Volume 7 Day","default":0},"last_7days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days"},"volume_clubs_1_day":{"type":"integer","title":"Volume Clubs 1 Day","default":0},"volume_players_1_day":{"type":"integer","title":"Volume Players 1 Day","default":0},"volume_clubs_7_day":{"type":"integer","title":"Volume Clubs 7 Day","default":0},"volume_players_7_day":{"type":"integer","title":"Volume Players 7 Day","default":0},"market_cap":{"type":"integer","title":"Market Cap","default":0},"club_market_cap":{"type":"integer","title":"Club Market Cap","default":0},"player_market_cap":{"type":"integer","title":"Player Market Cap","default":0},"total_wages":{"type":"integer","title":"Total Wages","default":0},"avg_wages":{"type":"integer","title":"Avg Wages","default":0},"total_player_value":{"type":"integer","title":"Total Player Value","default":0},"total_clubs":{"type":"integer","title":"Total Clubs","default":0},"total_players":{"type":"integer","title":"Total Players","default":0},"total_available_jobs":{"type":"integer","title":"Total Available Jobs","default":0}},"type":"object","required":["league_id","country_id","division","ticket_cost","tv_money","prize_money_pot","ave_attendance","num_teams","round","num_rounds","comp_type"],"title":"LeagueResponse"},"LeagueTableRowResponse":{"properties":{"club_id":{"type":"integer","title":"Club Id"},"league_id":{"type":"integer","title":"League Id"},"manager_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manager Name"},"manager_last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Last Active Unix"},"country_id":{"type":"string","title":"Country Id"},"division":{"type":"integer","title":"Division"},"club_ix":{"type":"integer","title":"Club Ix"},"played":{"type":"integer","title":"Played"},"won":{"type":"integer","title":"Won"},"drawn":{"type":"integer","title":"Drawn"},"lost":{"type":"integer","title":"Lost"},"goals_for":{"type":"integer","title":"Goals For"},"goals_against":{"type":"integer","title":"Goals Against"},"pts":{"type":"integer","title":"Pts"},"form":{"type":"string","title":"Form"},"old_position":{"type":"integer","title":"Old Position"},"new_position":{"type":"integer","title":"New Position"},"season_id":{"type":"integer","title":"Season Id"},"stadium_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stadium Size"},"fanbase":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fanbase"},"balance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance"},"avg_player_rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Avg Player Rating"},"top_3_players":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Top 3 Players"}},"type":"object","required":["club_id","league_id","country_id","division","club_ix","played","won","drawn","lost","goals_for","goals_against","pts","form","old_position","new_position","season_id"],"title":"LeagueTableRowResponse"},"LeaguesSortBy":{"type":"string","enum":["league_id","country_id","division","ticket_cost","tv_money","prize_money_pot","ave_attendance","num_teams","round","num_rounds","comp_type","total_volume_1_day","total_volume_7_day","volume_clubs_1_day","volume_players_1_day","volume_clubs_7_day","volume_players_7_day","market_cap","club_market_cap","player_market_cap","total_wages","avg_wages","total_player_value","total_clubs","total_players","total_available_jobs"],"title":"LeaguesSortBy"},"LifetimeEarnerEntry":{"properties":{"rank":{"type":"integer","title":"Rank"},"name":{"type":"string","title":"Name"},"lifetime_payouts":{"type":"integer","title":"Lifetime Payouts"},"lifetime_payout_count":{"type":"integer","title":"Lifetime Payout Count"},"holdings_count":{"type":"integer","title":"Holdings Count"},"realised_pl":{"type":"integer","title":"Realised Pl"},"basis_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basis Status"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"}},"type":"object","required":["rank","name","lifetime_payouts","lifetime_payout_count","holdings_count","realised_pl"],"title":"LifetimeEarnerEntry","description":"A row of the all-time payouts board.\n\nNo usdc column, unlike the windowed board: the envelope carries the rate\nonce and the frontend converts, which is also why the you-row compute never\nhas to fetch a price (and so cannot disagree with the board's)."},"LifetimeEarnersResponse":{"properties":{"scope":{"type":"string","title":"Scope"},"svc2usdc":{"type":"number","title":"Svc2Usdc"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"type":"integer","title":"Total"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At"},"entries":{"items":{"$ref":"#/components/schemas/LifetimeEarnerEntry"},"type":"array","title":"Entries"},"you":{"anyOf":[{"$ref":"#/components/schemas/LifetimeEarnerEntry"},{"type":"null"}]}},"type":"object","required":["scope","svc2usdc","page","per_page","total","entries"],"title":"LifetimeEarnersResponse"},"LineupItem":{"properties":{"player_id":{"type":"integer","title":"Player Id"},"tempo":{"type":"integer","title":"Tempo"},"tackling_style":{"type":"integer","title":"Tackling Style"}},"type":"object","required":["player_id","tempo","tackling_style"],"title":"LineupItem"},"LoanHistoryItem":{"properties":{"player_id":{"type":"integer","title":"Player Id"},"loan_start_date":{"type":"integer","title":"Loan Start Date"},"from_club_id":{"type":"integer","title":"From Club Id"},"to_club_id":{"type":"integer","title":"To Club Id"},"season_id":{"type":"integer","title":"Season Id"}},"type":"object","required":["player_id","loan_start_date","from_club_id","to_club_id","season_id"],"title":"LoanHistoryItem"},"ManagerBoardResponse":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"type":"integer","title":"Total"},"seasons":{"items":{"type":"integer"},"type":"array","title":"Seasons"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At"},"entries":{"items":{"$ref":"#/components/schemas/ManagerEntry"},"type":"array","title":"Entries"},"you":{"anyOf":[{"$ref":"#/components/schemas/ManagerEntry"},{"type":"null"}]}},"type":"object","required":["page","per_page","total","seasons","entries"],"title":"ManagerBoardResponse","description":"One page of a manager board.\n\n`seasons` rides the payload because it is also the ALLOW-LIST the route\nvalidates `season` against: the tabs a client is offered are exactly the\nones a request may name.  `updated_at` is the rollup's own stamp rather\nthan the build time — this board is rebuilt on a rollover, so \"how old is\nthe data\" and \"when was this cached\" are days apart."},"ManagerEntry":{"properties":{"name":{"type":"string","title":"Name"},"manager_score":{"type":"number","title":"Manager Score"},"trophy_points":{"type":"integer","title":"Trophy Points"},"league_titles":{"type":"integer","title":"League Titles"},"cup_wins":{"type":"integer","title":"Cup Wins"},"runners_up":{"type":"integer","title":"Runners Up"},"promotions":{"type":"integer","title":"Promotions"},"best_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Position"},"best_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Level"},"clubs_managed":{"type":"integer","title":"Clubs Managed"},"points_per_game":{"type":"number","title":"Points Per Game"},"points":{"type":"integer","title":"Points"},"games":{"type":"integer","title":"Games"},"won":{"type":"integer","title":"Won"},"drawn":{"type":"integer","title":"Drawn"},"lost":{"type":"integer","title":"Lost"},"best_win_streak":{"type":"integer","title":"Best Win Streak"},"best_unbeaten_streak":{"type":"integer","title":"Best Unbeaten Streak"},"current_win_streak":{"type":"integer","title":"Current Win Streak"},"rank":{"type":"integer","title":"Rank"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"}},"type":"object","required":["name","manager_score","trophy_points","league_titles","cup_wins","runners_up","promotions","clubs_managed","points_per_game","points","games","won","drawn","lost","best_win_streak","best_unbeaten_streak","current_win_streak","rank"],"title":"ManagerEntry","description":"A board row: the rollup columns plus the position the board numbers them\nat and the last-active stamp the hub prints beside every name."},"ManagerHistoryResponse":{"properties":{"name":{"type":"string","title":"Name"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At"},"summary":{"$ref":"#/components/schemas/ManagerStats"},"seasons":{"items":{"$ref":"#/components/schemas/ManagerSeason"},"type":"array","title":"Seasons"},"spells":{"items":{"$ref":"#/components/schemas/ManagerSpell"},"type":"array","title":"Spells"}},"type":"object","required":["name","summary","seasons","spells"],"title":"ManagerHistoryResponse"},"ManagerSeason":{"properties":{"season_id":{"type":"integer","title":"Season Id"},"club_id":{"type":"integer","title":"Club Id"},"league":{"anyOf":[{"$ref":"#/components/schemas/ManagerSeasonLeague"},{"type":"null"}]},"cups":{"items":{"$ref":"#/components/schemas/ManagerSeasonCup"},"type":"array","title":"Cups"}},"type":"object","required":["season_id","club_id","cups"],"title":"ManagerSeason","description":"One season at one club.  The CLUB is part of the group key, not a field\nhanging off a season: a mid-season move splits a season across two clubs,\nand a season carrying a single club id would attribute one club's results\nto the other."},"ManagerSeasonCup":{"properties":{"comp_type":{"type":"integer","title":"Comp Type"},"position":{"type":"integer","title":"Position"}},"type":"object","required":["comp_type","position"],"title":"ManagerSeasonCup","description":"A cup finish: the type and the position.  A cup row carries no league\ntable, which is exactly why the two are separate shapes rather than one\nwith half its fields null."},"ManagerSeasonLeague":{"properties":{"comp_id":{"type":"integer","title":"Comp Id"},"level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Level"},"country_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Id"},"position":{"type":"integer","title":"Position"},"promoted":{"type":"boolean","title":"Promoted"},"played":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Played"},"won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Won"},"drawn":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Drawn"},"lost":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lost"},"pts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pts"}},"type":"object","required":["comp_id","position","promoted"],"title":"ManagerSeasonLeague","description":"The league half of one (season, club) group: where they finished and the\ntable row behind it.  Ids, not names — competition and country names come\nfrom the frontend's datapack."},"ManagerSpell":{"properties":{"club_id":{"type":"integer","title":"Club Id"},"points":{"type":"integer","title":"Points"},"num_games":{"type":"integer","title":"Num Games"},"won":{"type":"integer","title":"Won"},"drawn":{"type":"integer","title":"Drawn"},"lost":{"type":"integer","title":"Lost"},"start_date":{"type":"integer","title":"Start Date"},"end_date":{"type":"integer","title":"End Date"}},"type":"object","required":["club_id","points","num_games","won","drawn","lost","start_date","end_date"],"title":"ManagerSpell","description":"A career spell out of the game's own manager history — the tenure, not\nthe honours: when they were in the dugout, and what they took from it."},"ManagerStats":{"properties":{"name":{"type":"string","title":"Name"},"manager_score":{"type":"number","title":"Manager Score"},"trophy_points":{"type":"integer","title":"Trophy Points"},"league_titles":{"type":"integer","title":"League Titles"},"cup_wins":{"type":"integer","title":"Cup Wins"},"runners_up":{"type":"integer","title":"Runners Up"},"promotions":{"type":"integer","title":"Promotions"},"best_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Position"},"best_level":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Level"},"clubs_managed":{"type":"integer","title":"Clubs Managed"},"points_per_game":{"type":"number","title":"Points Per Game"},"points":{"type":"integer","title":"Points"},"games":{"type":"integer","title":"Games"},"won":{"type":"integer","title":"Won"},"drawn":{"type":"integer","title":"Drawn"},"lost":{"type":"integer","title":"Lost"},"best_win_streak":{"type":"integer","title":"Best Win Streak"},"best_unbeaten_streak":{"type":"integer","title":"Best Unbeaten Streak"},"current_win_streak":{"type":"integer","title":"Current Win Streak"}},"type":"object","required":["name","manager_score","trophy_points","league_titles","cup_wins","runners_up","promotions","clubs_managed","points_per_game","points","games","won","drawn","lost","best_win_streak","best_unbeaten_streak","current_win_streak"],"title":"ManagerStats","description":"One dc_manager_leaderboard row's columns, verbatim from the rollup.\n\nEvery counter the score is built from sits beside it, so the number is\nexplainable from the row: `trophy_points` is the cabinet (titles, cups,\nrunner-up medals and promotions, each priced by division or stature) and\n`points_per_game` is the form the score weights on top of it.\n\nThe three streak columns come from somewhere else entirely — the\nper-fixture manager stamps rather than the season summaries — but they are\nrollup columns of the same row, so they ride every board and the popup\nalike.  `current_win_streak` is a live run only on the all-time row; on a\nfinished season's row it is how that manager ENDED that season.\n\nA base class rather than a copy, because the same nineteen columns are both\na board row and a career summary — one definition means the popup can never\ndescribe a manager differently from the board that opened it."},"MarketResponse":{"properties":{"TotalPlayers":{"type":"integer","title":"Totalplayers"},"PlayersMarketCap":{"type":"integer","title":"Playersmarketcap"},"PlayerValues":{"type":"integer","title":"Playervalues"},"Players7dayVolume":{"type":"integer","title":"Players7Dayvolume"},"Players7dayVolumePrior":{"type":"integer","title":"Players7Dayvolumeprior"},"Players7dayVolumeChange":{"type":"number","title":"Players7Dayvolumechange"},"Players30dayVolume":{"type":"integer","title":"Players30Dayvolume"},"Players30dayVolumePrior":{"type":"integer","title":"Players30Dayvolumeprior"},"Players30dayVolumeChange":{"type":"number","title":"Players30Dayvolumechange"},"TotalClubs":{"type":"integer","title":"Totalclubs"},"ClubsMarketCap":{"type":"integer","title":"Clubsmarketcap"},"ClubBalances":{"type":"integer","title":"Clubbalances"},"Clubs7dayVolume":{"type":"integer","title":"Clubs7Dayvolume"},"Clubs7dayVolumePrior":{"type":"integer","title":"Clubs7Dayvolumeprior"},"Clubs7dayVolumeChange":{"type":"number","title":"Clubs7Dayvolumechange"},"Clubs30dayVolume":{"type":"integer","title":"Clubs30Dayvolume"},"Clubs30dayVolumePrior":{"type":"integer","title":"Clubs30Dayvolumeprior"},"Clubs30dayVolumeChange":{"type":"number","title":"Clubs30Dayvolumechange"},"TotalMarketCap":{"type":"integer","title":"Totalmarketcap"},"Total7dayVolume":{"type":"integer","title":"Total7Dayvolume"},"Total7dayVolumePrior":{"type":"integer","title":"Total7Dayvolumeprior"},"Total7dayVolumeChange":{"type":"number","title":"Total7Dayvolumechange"},"Total30dayVolume":{"type":"integer","title":"Total30Dayvolume"},"Total30dayVolumePrior":{"type":"integer","title":"Total30Dayvolumeprior"},"Total30dayVolumeChange":{"type":"number","title":"Total30Dayvolumechange"},"Transfers7dayVol":{"type":"integer","title":"Transfers7Dayvol"},"Transfers7dayVolPrior":{"type":"integer","title":"Transfers7Dayvolprior"},"Transfers7dayVolChange":{"type":"number","title":"Transfers7Dayvolchange"},"Transfers30dayVol":{"type":"integer","title":"Transfers30Dayvol"},"Transfers30dayVolPrior":{"type":"integer","title":"Transfers30Dayvolprior"},"Transfers30dayVolChange":{"type":"number","title":"Transfers30Dayvolchange"},"SVCTrades7dayVolSVC":{"type":"integer","title":"Svctrades7Dayvolsvc"},"SVCTrades7dayVolSVCPrior":{"type":"integer","title":"Svctrades7Dayvolsvcprior"},"SVCTrades7dayVolSVCChange":{"type":"number","title":"Svctrades7Dayvolsvcchange"},"SVCTrades30dayVolSVC":{"type":"integer","title":"Svctrades30Dayvolsvc"},"SVCTrades30dayVolSVCPrior":{"type":"integer","title":"Svctrades30Dayvolsvcprior"},"SVCTrades30dayVolSVCChange":{"type":"number","title":"Svctrades30Dayvolsvcchange"},"SVCTrades7dayVolUSDC":{"type":"number","title":"Svctrades7Dayvolusdc"},"SVCTrades7dayVolUSDCPrior":{"type":"number","title":"Svctrades7Dayvolusdcprior"},"SVCTrades7dayVolUSDCChange":{"type":"number","title":"Svctrades7Dayvolusdcchange"},"SVCTrades30dayVolUSDC":{"type":"number","title":"Svctrades30Dayvolusdc"},"SVCTrades30dayVolUSDCPrior":{"type":"number","title":"Svctrades30Dayvolusdcprior"},"SVCTrades30dayVolUSDCChange":{"type":"number","title":"Svctrades30Dayvolusdcchange"},"UserBalances":{"type":"integer","title":"Userbalances"},"BurnedSVC":{"type":"integer","title":"Burnedsvc"},"UserTotalVolume":{"type":"integer","title":"Usertotalvolume"},"NumberOfUsers":{"type":"integer","title":"Numberofusers"},"NumberAgents":{"type":"integer","title":"Numberagents"},"NumberManagers":{"type":"integer","title":"Numbermanagers"},"ActiveUsers":{"type":"integer","title":"Activeusers"},"ActiveManagers":{"type":"integer","title":"Activemanagers"},"InactiveManagers":{"type":"integer","title":"Inactivemanagers"},"NumberManagersLocked":{"type":"integer","title":"Numbermanagerslocked"},"NumberManagersUnlocked":{"type":"integer","title":"Numbermanagersunlocked"},"SVC2USDC":{"type":"number","title":"Svc2Usdc"},"SVCPriceChart":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Svcpricechart","default":[]},"PlayersVolumeChart":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Playersvolumechart","default":[]},"ClubsVolumeChart":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Clubsvolumechart","default":[]},"TransfersVolumeChart":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Transfersvolumechart","default":[]},"SVCTradesVolumeChart":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Svctradesvolumechart","default":[]},"DailyActiveUsersChart":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Dailyactiveuserschart","default":[]},"DailyTradesChart":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Dailytradeschart","default":[]}},"type":"object","required":["TotalPlayers","PlayersMarketCap","PlayerValues","Players7dayVolume","Players7dayVolumePrior","Players7dayVolumeChange","Players30dayVolume","Players30dayVolumePrior","Players30dayVolumeChange","TotalClubs","ClubsMarketCap","ClubBalances","Clubs7dayVolume","Clubs7dayVolumePrior","Clubs7dayVolumeChange","Clubs30dayVolume","Clubs30dayVolumePrior","Clubs30dayVolumeChange","TotalMarketCap","Total7dayVolume","Total7dayVolumePrior","Total7dayVolumeChange","Total30dayVolume","Total30dayVolumePrior","Total30dayVolumeChange","Transfers7dayVol","Transfers7dayVolPrior","Transfers7dayVolChange","Transfers30dayVol","Transfers30dayVolPrior","Transfers30dayVolChange","SVCTrades7dayVolSVC","SVCTrades7dayVolSVCPrior","SVCTrades7dayVolSVCChange","SVCTrades30dayVolSVC","SVCTrades30dayVolSVCPrior","SVCTrades30dayVolSVCChange","SVCTrades7dayVolUSDC","SVCTrades7dayVolUSDCPrior","SVCTrades7dayVolUSDCChange","SVCTrades30dayVolUSDC","SVCTrades30dayVolUSDCPrior","SVCTrades30dayVolUSDCChange","UserBalances","BurnedSVC","UserTotalVolume","NumberOfUsers","NumberAgents","NumberManagers","ActiveUsers","ActiveManagers","InactiveManagers","NumberManagersLocked","NumberManagersUnlocked","SVC2USDC"],"title":"MarketResponse"},"MatchCommentaryResponse":{"properties":{"comm_sub_event_id":{"type":"integer","title":"Comm Sub Event Id"},"category":{"type":"string","title":"Category"},"player_one_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player One Id"},"player_two_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player Two Id"},"club_one_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club One Id"},"club_two_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Two Id"},"data_one":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data One"},"season_id":{"type":"integer","title":"Season Id"},"comm_event_id":{"type":"integer","title":"Comm Event Id"},"time":{"type":"integer","title":"Time"},"fixture_id":{"type":"integer","title":"Fixture Id"}},"type":"object","required":["comm_sub_event_id","category","player_one_id","player_two_id","club_one_id","club_two_id","data_one","season_id","comm_event_id","time","fixture_id"],"title":"MatchCommentaryResponse"},"MatchEventResponse":{"properties":{"match_event_id":{"type":"integer","title":"Match Event Id"},"event_type":{"type":"string","title":"Event Type"},"player_id":{"type":"integer","title":"Player Id"},"club_id":{"type":"integer","title":"Club Id"},"time":{"type":"integer","title":"Time"},"goal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goal Type"},"season_id":{"type":"integer","title":"Season Id"}},"type":"object","required":["match_event_id","event_type","player_id","club_id","time","goal_type","season_id"],"title":"MatchEventResponse"},"MessageResponse":{"properties":{"message_id":{"type":"integer","title":"Message Id"},"date":{"type":"integer","title":"Date"},"type":{"type":"integer","title":"Type"},"sub_type":{"type":"integer","title":"Sub Type"},"club_1":{"type":"integer","title":"Club 1"},"club_2":{"type":"integer","title":"Club 2"},"data_1":{"type":"integer","title":"Data 1"},"data_2":{"type":"integer","title":"Data 2"},"data_3":{"type":"integer","title":"Data 3"},"data_4":{"type":"integer","title":"Data 4"},"data_5":{"type":"integer","title":"Data 5"},"name_1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name 1"},"season_id":{"type":"integer","title":"Season Id"}},"type":"object","required":["message_id","date","type","sub_type","club_1","club_2","data_1","data_2","data_3","data_4","data_5","name_1","season_id"],"title":"MessageResponse"},"MonthlyDataPoint":{"properties":{"month":{"type":"string","title":"Month"},"timestamp":{"type":"integer","title":"Timestamp"},"total_payouts":{"type":"integer","title":"Total Payouts"},"cash_injection":{"type":"integer","title":"Cash Injection"},"player_game_shares":{"type":"integer","title":"Player Game Shares"},"circulation":{"type":"integer","title":"Circulation"}},"type":"object","required":["month","timestamp","total_payouts","cash_injection","player_game_shares","circulation"],"title":"MonthlyDataPoint"},"MoraleChangeResponse":{"properties":{"player_id":{"type":"integer","title":"Player Id"},"new_morale":{"type":"integer","title":"New Morale"},"time":{"type":"string","format":"date-time","title":"Time"},"unix_time":{"type":"integer","title":"Unix Time"}},"type":"object","required":["player_id","new_morale","time","unix_time"],"title":"MoraleChangeResponse"},"PagedEarnerEntry":{"properties":{"rank":{"type":"integer","title":"Rank"},"name":{"type":"string","title":"Name"},"total_earnings":{"type":"integer","title":"Total Earnings"},"club_earnings":{"type":"integer","title":"Club Earnings"},"player_earnings":{"type":"integer","title":"Player Earnings"},"total_earnings_usdc":{"type":"number","title":"Total Earnings Usdc"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"}},"type":"object","required":["rank","name","total_earnings","club_earnings","player_earnings","total_earnings_usdc"],"title":"PagedEarnerEntry","description":"A board row.  Same fields as TopEarnerEntry plus the rank, which the\ntop-10 shape leaves to the client's array index — the hub cannot, because\nits pages start at an offset and its `you` row is off-page entirely."},"PagedEarnersResponse":{"properties":{"days":{"type":"integer","title":"Days"},"svc2usdc":{"type":"number","title":"Svc2Usdc"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"type":"integer","title":"Total"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At"},"entries":{"items":{"$ref":"#/components/schemas/PagedEarnerEntry"},"type":"array","title":"Entries"},"you":{"anyOf":[{"$ref":"#/components/schemas/PagedEarnerEntry"},{"type":"null"}]}},"type":"object","required":["days","svc2usdc","page","per_page","total","entries"],"title":"PagedEarnersResponse"},"PaginatedResponse_BestManagersResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/BestManagersResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[BestManagersResponse]"},"PaginatedResponse_ClubDetailedResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/ClubDetailedResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[ClubDetailedResponse]"},"PaginatedResponse_ClubResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/ClubResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[ClubResponse]"},"PaginatedResponse_DetailedShareBalanceResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/DetailedShareBalanceResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[DetailedShareBalanceResponse]"},"PaginatedResponse_DilutionEventResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/DilutionEventResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[DilutionEventResponse]"},"PaginatedResponse_LeagueResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/LeagueResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[LeagueResponse]"},"PaginatedResponse_PlayerDetailedResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/PlayerDetailedResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[PlayerDetailedResponse]"},"PaginatedResponse_PlayerResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/PlayerResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[PlayerResponse]"},"PaginatedResponse_ProposalResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/ProposalResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[ProposalResponse]"},"PaginatedResponse_RichListResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/RichListResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[RichListResponse]"},"PaginatedResponse_ShareTradeResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/ShareTradeResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[ShareTradeResponse]"},"PaginatedResponse_ShopClubResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/ShopClubResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[ShopClubResponse]"},"PaginatedResponse_UserBalanceSheetResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/UserBalanceSheetResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[UserBalanceSheetResponse]"},"PaginatedResponse_UserDetailedResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/UserDetailedResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[UserDetailedResponse]"},"PaginatedResponse_UserResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/UserResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[UserResponse]"},"PaginatedResponse_UserWeeklyBalanceSheetResponse_":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"total_pages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Pages"},"items":{"items":{"$ref":"#/components/schemas/UserWeeklyBalanceSheetResponse"},"type":"array","title":"Items"}},"type":"object","required":["page","per_page","items"],"title":"PaginatedResponse[UserWeeklyBalanceSheetResponse]"},"PayoutsDataPoint":{"properties":{"date":{"type":"string","title":"Date"},"timestamp":{"type":"integer","title":"Timestamp"},"total_payouts":{"type":"integer","title":"Total Payouts"},"club_payouts":{"type":"integer","title":"Club Payouts"},"player_payouts":{"type":"integer","title":"Player Payouts"}},"type":"object","required":["date","timestamp","total_payouts","club_payouts","player_payouts"],"title":"PayoutsDataPoint"},"PerPageOptions":{"type":"integer","enum":[5,10,20,50,100,1000],"title":"PerPageOptions"},"PerPageOptionsExtended":{"type":"integer","enum":[5,10,20,50,100],"title":"PerPageOptionsExtended"},"PickEntry":{"properties":{"rank":{"type":"integer","title":"Rank"},"name":{"type":"string","title":"Name"},"player_id":{"type":"integer","title":"Player Id"},"club_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Id"},"rating_at_entry":{"type":"integer","title":"Rating At Entry"},"rating_now":{"type":"integer","title":"Rating Now"},"rating_gain":{"type":"integer","title":"Rating Gain"},"entry_basis":{"type":"string","title":"Entry Basis"},"shares_held":{"type":"integer","title":"Shares Held"},"lifetime_payouts":{"type":"integer","title":"Lifetime Payouts"},"first_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"First Time"}},"type":"object","required":["rank","name","player_id","rating_at_entry","rating_now","rating_gain","entry_basis","shares_held","lifetime_payouts"],"title":"PickEntry","description":"One pick on the Best Picks strip: who bought which player, where the\nrating was when they did, and where it is now.\n\n`entry_basis` is carried through untouched — `earliest` means the position\npredates every recorded rating for that player and the earliest known one\nstands in.  The strip badges those rather than presenting an approximation\nas fact, which it can only do if this column arrives verbatim.\n\nIds, not names: club and player names come from the frontend's datapack, so\nshipping them here would only duplicate 8MB of static data per request."},"PlayerDetailedResponse":{"properties":{"player_id":{"type":"integer","title":"Player Id"},"fitness":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fitness"},"retired":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Retired"},"morale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Morale"},"concerns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Concerns"},"injured":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Injured"},"injury_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Injury Id"},"wages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Wages"},"contract":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contract"},"form":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Form"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"position_main":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position Main"},"multi_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Multi Position"},"positions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Positions","default":[]},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"},"rating_gk":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Gk"},"rating_tackling":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Tackling"},"rating_passing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Passing"},"rating_shooting":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Shooting"},"rating_stamina":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Stamina"},"rating_aggression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Aggression"},"banned":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Banned"},"cup_tied":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cup Tied"},"yellow_cards":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Yellow Cards"},"red_cards":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Red Cards"},"dob":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dob"},"side":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Side"},"value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Value"},"country_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Id"},"club_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"last_transfer":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Transfer"},"desired_contract":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Desired Contract"},"allow_transfer":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Allow Transfer"},"allow_renew":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Allow Renew"},"loan_offered":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loan Offered"},"loan_offer_accepted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loan Offer Accepted"},"loaned_to_club":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Loaned To Club"},"age":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age"},"last_price":{"type":"integer","title":"Last Price","default":0},"volume_1_day":{"type":"integer","title":"Volume 1 Day","default":0},"volume_7_day":{"type":"integer","title":"Volume 7 Day","default":0},"last_7days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days"},"last_7days_price":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days Price"},"agent_last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Last Active Unix"},"transfer_auction_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Transfer Auction Id"},"auction_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auction End Time"},"auction_minimum_bid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auction Minimum Bid"},"auction_high_bid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auction High Bid"},"auction_high_bid_club":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auction High Bid Club"}},"type":"object","required":["player_id","fitness","retired","morale","concerns","injured","injury_id","wages","contract","form","position","multi_position","rating","rating_gk","rating_tackling","rating_passing","rating_shooting","rating_stamina","rating_aggression","banned","cup_tied","yellow_cards","red_cards","dob","side","value","country_id","club_id","agent_name","last_transfer","desired_contract","allow_transfer","allow_renew","loan_offered","loan_offer_accepted","loaned_to_club","age"],"title":"PlayerDetailedResponse"},"PlayerFieldTimeResponse":{"properties":{"player_id":{"type":"integer","title":"Player Id"},"club_id":{"type":"integer","title":"Club Id"},"season_id":{"type":"integer","title":"Season Id"},"league_minutes":{"type":"integer","title":"League Minutes"},"available_rounds":{"type":"integer","title":"Available Rounds"},"field_time_pct":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Field Time Pct"}},"type":"object","required":["player_id","club_id","season_id","league_minutes","available_rounds"],"title":"PlayerFieldTimeResponse"},"PlayerHistoryResponse":{"properties":{"player_id":{"type":"integer","title":"Player Id"},"loans":{"items":{"$ref":"#/components/schemas/PlayerLoanResponse"},"type":"array","title":"Loans"},"ratings":{"items":{"$ref":"#/components/schemas/PlayerRatingResponse"},"type":"array","title":"Ratings"},"injuries":{"items":{"$ref":"#/components/schemas/PlayerInjuryResponse"},"type":"array","title":"Injuries"},"transfers":{"items":{"$ref":"#/components/schemas/PlayerTransferResponse"},"type":"array","title":"Transfers"}},"type":"object","required":["player_id","loans","ratings","injuries","transfers"],"title":"PlayerHistoryResponse"},"PlayerInjuryResponse":{"properties":{"injury_id":{"type":"integer","title":"Injury Id"},"start_date":{"type":"integer","title":"Start Date"},"end_date":{"type":"integer","title":"End Date"},"season_id":{"type":"integer","title":"Season Id"}},"type":"object","required":["injury_id","start_date","end_date","season_id"],"title":"PlayerInjuryResponse"},"PlayerLoanResponse":{"properties":{"season_id":{"type":"integer","title":"Season Id"},"from_club_id":{"type":"integer","title":"From Club Id"},"to_club_id":{"type":"integer","title":"To Club Id"},"loan_start_date":{"type":"integer","title":"Loan Start Date"}},"type":"object","required":["season_id","from_club_id","to_club_id","loan_start_date"],"title":"PlayerLoanResponse"},"PlayerRatingResponse":{"properties":{"rating":{"type":"integer","title":"Rating"},"rating_gk":{"type":"integer","title":"Rating Gk"},"rating_tackling":{"type":"integer","title":"Rating Tackling"},"rating_passing":{"type":"integer","title":"Rating Passing"},"rating_shooting":{"type":"integer","title":"Rating Shooting"},"rating_aggression":{"type":"integer","title":"Rating Aggression"},"rating_stamina":{"type":"integer","title":"Rating Stamina"},"date_updated":{"type":"integer","title":"Date Updated"}},"type":"object","required":["rating","rating_gk","rating_tackling","rating_passing","rating_shooting","rating_aggression","rating_stamina","date_updated"],"title":"PlayerRatingResponse"},"PlayerResponse":{"properties":{"player_id":{"type":"integer","title":"Player Id"},"last_price":{"type":"integer","title":"Last Price","default":0},"volume_1_day":{"type":"integer","title":"Volume 1 Day","default":0},"volume_7_day":{"type":"integer","title":"Volume 7 Day","default":0},"last_7days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days"},"last_7days_price":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days Price"},"wages":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Wages"},"multi_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Multi Position"},"positions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Positions","default":[]},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"},"country_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Id"},"dob":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dob"},"value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Value"},"club_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"last_transfer":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Transfer"},"age":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Age"},"desired_contract":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Desired Contract"},"agent_last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Agent Last Active Unix"},"transfer_auction_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Transfer Auction Id"},"auction_end_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auction End Time"},"auction_minimum_bid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auction Minimum Bid"},"auction_high_bid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auction High Bid"},"auction_high_bid_club":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auction High Bid Club"}},"type":"object","required":["player_id","wages","multi_position","rating","country_id","dob","value","club_id","agent_name","last_transfer","age"],"title":"PlayerResponse"},"PlayerTransferResponse":{"properties":{"date":{"type":"integer","title":"Date"},"club_id_from":{"type":"integer","title":"Club Id From"},"club_id_to":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Id To"},"amount":{"type":"integer","title":"Amount"}},"type":"object","required":["date","club_id_from","club_id_to","amount"],"title":"PlayerTransferResponse"},"PlayersSortBy":{"type":"string","enum":["player_id","last_price","volume_1_day","volume_7_day","wages","rating","rating_gk","rating_tackling","rating_passing","rating_shooting","rating_stamina","rating_aggression","country_id","dob","value","club_id","agent_name","position","desired_contract","contract","auction_end_time"],"title":"PlayersSortBy"},"ProposalChartData":{"properties":{"date":{"type":"string","title":"Date"},"unlock":{"type":"integer","title":"Unlock"},"agent":{"type":"integer","title":"Agent"},"manager":{"type":"integer","title":"Manager"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["date","unlock","agent","manager","total"],"title":"ProposalChartData"},"ProposalGraphResponse":{"properties":{"days_back":{"type":"integer","title":"Days Back"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"total_completed":{"type":"integer","title":"Total Completed"},"by_type_total":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Type Total"},"chart_data":{"items":{"$ref":"#/components/schemas/ProposalChartData"},"type":"array","title":"Chart Data"}},"type":"object","required":["days_back","start_date","end_date","total_completed","by_type_total","chart_data"],"title":"ProposalGraphResponse"},"ProposalOutcome":{"properties":{"proposal_id":{"type":"integer","title":"Proposal Id"},"options":{"items":{"$ref":"#/components/schemas/ProposalOutcomeOption"},"type":"array","title":"Options"}},"type":"object","required":["proposal_id","options"],"title":"ProposalOutcome"},"ProposalOutcomeOption":{"properties":{"option_id":{"type":"integer","title":"Option Id"},"votes":{"type":"integer","title":"Votes"},"winner":{"type":"boolean","title":"Winner"}},"type":"object","required":["option_id","votes","winner"],"title":"ProposalOutcomeOption"},"ProposalOutcomesResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ProposalOutcome"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"ProposalOutcomesResponse"},"ProposalResponse":{"properties":{"proposal_id":{"type":"integer","title":"Proposal Id"},"share_type":{"type":"string","title":"Share Type"},"share_id":{"type":"integer","title":"Share Id"},"name":{"type":"string","title":"Name"},"proposal_type":{"type":"string","title":"Proposal Type"},"stage":{"type":"string","title":"Stage"},"manager_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manager Name"},"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"type":"string","format":"date-time","title":"End Time"},"end_time_unix":{"type":"integer","title":"End Time Unix"},"time_remaining":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Remaining"},"vote_options":{"items":{"$ref":"#/components/schemas/ProposalVoteOption"},"type":"array","title":"Vote Options","default":[]},"total_votes":{"type":"integer","title":"Total Votes","default":0}},"type":"object","required":["proposal_id","share_type","share_id","name","proposal_type","stage","start_time","end_time","end_time_unix"],"title":"ProposalResponse"},"ProposalVoteOption":{"properties":{"option_id":{"type":"integer","title":"Option Id"},"option_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Option Data"},"votes":{"type":"integer","title":"Votes"},"is_winner":{"type":"boolean","title":"Is Winner"}},"type":"object","required":["option_id","votes","is_winner"],"title":"ProposalVoteOption"},"ReferralBoardEntry":{"properties":{"rank":{"type":"integer","title":"Rank"},"account":{"type":"string","title":"Account"},"referrals":{"type":"integer","title":"Referrals"},"bonus_shares":{"type":"integer","title":"Bonus Shares"},"usd_spent":{"type":"integer","title":"Usd Spent"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"}},"type":"object","required":["rank","account","referrals","bonus_shares","usd_spent"],"title":"ReferralBoardEntry","description":"A referral board row.\n\n`referrals` / `bonus_shares` / `usd_spent` are window-scoped: all-time takes\nthem from the referrer's running totals, the windowed boards sum the events\ninside the window.  The board ranks on bonus_shares in every case."},"ReferralBoardResponse":{"properties":{"window":{"type":"string","title":"Window"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At"},"entries":{"items":{"$ref":"#/components/schemas/ReferralBoardEntry"},"type":"array","title":"Entries"}},"type":"object","required":["window","entries"],"title":"ReferralBoardResponse"},"RichListResponse":{"properties":{"name":{"type":"string","title":"Name"},"balance":{"type":"integer","title":"Balance"},"club_asset_value":{"type":"integer","title":"Club Asset Value"},"player_asset_value":{"type":"integer","title":"Player Asset Value"},"total_networth":{"type":"integer","title":"Total Networth"},"rank":{"type":"integer","title":"Rank"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"}},"type":"object","required":["name","balance","club_asset_value","player_asset_value","total_networth","rank"],"title":"RichListResponse"},"RichListSortBy":{"type":"string","enum":["balance","total_networth","last_active_unix"],"title":"RichListSortBy"},"ScoutBoardResponse":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"type":"integer","title":"Total"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At"},"entries":{"items":{"$ref":"#/components/schemas/ScoutEntry"},"type":"array","title":"Entries"},"you":{"anyOf":[{"$ref":"#/components/schemas/ScoutEntry"},{"type":"null"}]}},"type":"object","required":["page","per_page","total","entries"],"title":"ScoutBoardResponse"},"ScoutEntry":{"properties":{"rank":{"type":"integer","title":"Rank"},"name":{"type":"string","title":"Name"},"scout_score":{"type":"number","title":"Scout Score"},"picks":{"type":"integer","title":"Picks"},"total_rating_gain":{"type":"integer","title":"Total Rating Gain"},"avg_rating_gain":{"type":"number","title":"Avg Rating Gain"},"best_player_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Player Id"},"best_rating_gain":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Rating Gain"},"pick_payouts":{"type":"integer","title":"Pick Payouts"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"}},"type":"object","required":["rank","name","scout_score","picks","total_rating_gain","avg_rating_gain","pick_payouts"],"title":"ScoutEntry","description":"A row of the scouts board, verbatim from the updater's rollup.\n\nRating-only by design: there is no value or price column here and there\nmust never be one.  A mark is `num x last_price` off a book a single\nself-trade can move, so a value-gain board ranks whoever last traded with\nthemselves; `scout_score` is rating gain weighted by influence held, and\nevery component of it sits beside it so the number is explainable from the\nrow."},"ScoutPicksResponse":{"properties":{"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total":{"type":"integer","title":"Total"},"updated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updated At"},"entries":{"items":{"$ref":"#/components/schemas/PickEntry"},"type":"array","title":"Entries"}},"type":"object","required":["page","per_page","total","entries"],"title":"ScoutPicksResponse"},"ShareBalanceIssueCountsResponse":{"properties":{"share_type":{"type":"string","title":"Share Type"},"total":{"type":"integer","title":"Total"},"any_issue":{"type":"integer","title":"Any Issue"},"issues":{"additionalProperties":{"type":"integer"},"type":"object","title":"Issues"},"my_agent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"My Agent"}},"type":"object","required":["share_type","total","any_issue","issues"],"title":"ShareBalanceIssueCountsResponse","description":"Per-issue counts across ALL of one user's holdings of one type — the\ninfluencer tab's Issues badge and dropdown labels, exact at any portfolio\nsize (the client used to count these over the capped 2000-item blob)."},"ShareBalanceItem":{"properties":{"name":{"type":"string","title":"Name"},"num":{"type":"integer","title":"Num"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"}},"type":"object","required":["name","num"],"title":"ShareBalanceItem"},"ShareBalancesSortBy":{"type":"string","enum":["name","share_type","share_id","num","last_active_unix"],"title":"ShareBalancesSortBy"},"ShareTradeResponse":{"properties":{"id":{"type":"integer","title":"Id"},"time":{"type":"string","format":"date-time","title":"Time"},"unix_time":{"type":"integer","title":"Unix Time"},"share_type":{"type":"string","title":"Share Type"},"share_id":{"type":"integer","title":"Share Id"},"buyer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Buyer"},"seller":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seller"},"num":{"type":"integer","title":"Num"},"price":{"type":"integer","title":"Price"},"market_buy":{"type":"boolean","title":"Market Buy"}},"type":"object","required":["id","time","unix_time","share_type","share_id","buyer","seller","num","price","market_buy"],"title":"ShareTradeResponse"},"ShareTransactionResponse":{"properties":{"unix_time":{"type":"integer","title":"Unix Time"},"share_type":{"type":"string","title":"Share Type"},"share_id":{"type":"integer","title":"Share Id"},"name":{"type":"string","title":"Name"},"num":{"type":"integer","title":"Num"},"type":{"type":"string","title":"Type"},"other_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Other Name"}},"type":"object","required":["unix_time","share_type","share_id","name","num","type","other_name"],"title":"ShareTransactionResponse"},"ShopClubPricingResponse":{"properties":{"num":{"type":"integer","title":"Num"},"price":{"type":"integer","title":"Price"}},"type":"object","required":["num","price"],"title":"ShopClubPricingResponse"},"ShopClubResponse":{"properties":{"club_id":{"type":"integer","title":"Club Id"},"country_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Id"},"tier":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tier"},"available":{"type":"boolean","title":"Available"},"tranche":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tranche"},"tranche_remaining":{"type":"integer","title":"Tranche Remaining"},"current_price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Price"},"pricePerPack":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priceperpack"},"max_packs":{"type":"integer","title":"Max Packs"},"shares":{"items":{"$ref":"#/components/schemas/ShopClubShareResponse"},"type":"array","title":"Shares","default":[]},"pricing":{"items":{"$ref":"#/components/schemas/ShopClubPricingResponse"},"type":"array","title":"Pricing","default":[]}},"type":"object","required":["club_id","available","tranche_remaining","max_packs"],"title":"ShopClubResponse"},"ShopClubShareResponse":{"properties":{"club_id":{"type":"integer","title":"Club Id"},"amount":{"type":"integer","title":"Amount"},"tranche":{"type":"integer","title":"Tranche"},"tranche_remaining":{"type":"integer","title":"Tranche Remaining"},"current_price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Price"}},"type":"object","required":["club_id","amount","tranche","tranche_remaining"],"title":"ShopClubShareResponse"},"ShopClubsSortBy":{"type":"string","enum":["club_id","tier","pricePerPack","sharesAvailableSale"],"title":"ShopClubsSortBy"},"TacticActionItem":{"properties":{"time":{"type":"integer","title":"Time"},"situation":{"type":"integer","title":"Situation"},"goal_margin":{"type":"integer","title":"Goal Margin"},"formation_id":{"type":"integer","title":"Formation Id"},"play_style":{"type":"integer","title":"Play Style"},"use_playmaker":{"type":"integer","title":"Use Playmaker"},"use_target_man":{"type":"integer","title":"Use Target Man"},"captain":{"type":"integer","title":"Captain"},"penalty_taker":{"type":"integer","title":"Penalty Taker"},"free_kicks":{"type":"integer","title":"Free Kicks"},"corner_taker":{"type":"integer","title":"Corner Taker"},"playmaker":{"type":"integer","title":"Playmaker"},"target_man":{"type":"integer","title":"Target Man"},"autopicked":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Autopicked"},"lineup":{"items":{"$ref":"#/components/schemas/LineupItem"},"type":"array","title":"Lineup"}},"type":"object","required":["time","situation","goal_margin","formation_id","play_style","use_playmaker","use_target_man","captain","penalty_taker","free_kicks","corner_taker","playmaker","target_man","autopicked","lineup"],"title":"TacticActionItem"},"TimeRangeEnum":{"type":"string","enum":["1d","7d","30d","90d","6m","1y"],"title":"TimeRangeEnum"},"TopEarnerEntry":{"properties":{"name":{"type":"string","title":"Name"},"total_earnings":{"type":"integer","title":"Total Earnings"},"club_earnings":{"type":"integer","title":"Club Earnings"},"player_earnings":{"type":"integer","title":"Player Earnings"},"total_earnings_usdc":{"type":"number","title":"Total Earnings Usdc"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"}},"type":"object","required":["name","total_earnings","club_earnings","player_earnings","total_earnings_usdc"],"title":"TopEarnerEntry"},"TopEarnersResponse":{"properties":{"days":{"type":"integer","title":"Days"},"svc2usdc":{"type":"number","title":"Svc2Usdc"},"entries":{"items":{"$ref":"#/components/schemas/TopEarnerEntry"},"type":"array","title":"Entries"}},"type":"object","required":["days","svc2usdc","entries"],"title":"TopEarnersResponse"},"TradingGraphDataPoint":{"properties":{"timestamp":{"type":"integer","title":"Timestamp"},"datetime":{"type":"string","format":"date-time","title":"Datetime"},"volume":{"type":"integer","title":"Volume"},"weighted_average_price":{"type":"number","title":"Weighted Average Price"}},"type":"object","required":["timestamp","datetime","volume","weighted_average_price"],"title":"TradingGraphDataPoint"},"TransferBasicResponse":{"properties":{"player_id":{"type":"integer","title":"Player Id"},"from_club":{"type":"integer","title":"From Club"},"to_club":{"type":"integer","title":"To Club"},"cost":{"type":"integer","title":"Cost"},"unix_time":{"type":"integer","title":"Unix Time"},"datetime":{"type":"string","format":"date-time","title":"Datetime"}},"type":"object","required":["player_id","from_club","to_club","cost","unix_time","datetime"],"title":"TransferBasicResponse"},"TransferCountResponse":{"properties":{"season_id":{"type":"integer","title":"Season Id"},"from_club":{"type":"integer","title":"From Club"},"to_club":{"type":"integer","title":"To Club"},"transfers":{"type":"integer","title":"Transfers"}},"type":"object","required":["season_id","from_club","to_club","transfers"],"title":"TransferCountResponse"},"TransferHistoryItem":{"properties":{"player_id":{"type":"integer","title":"Player Id"},"date":{"type":"integer","title":"Date"},"club_id_from":{"type":"integer","title":"Club Id From"},"club_id_to":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Id To"},"amount":{"type":"integer","title":"Amount"},"dob":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dob"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"multi_position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Multi Position"},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"}},"type":"object","required":["player_id","date","club_id_from","club_id_to","amount"],"title":"TransferHistoryItem"},"TypeAmountEntry":{"properties":{"type":{"type":"string","title":"Type"},"amount":{"type":"integer","title":"Amount"}},"type":"object","required":["type","amount"],"title":"TypeAmountEntry"},"UserActiveProposalsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActiveProposalHoldingResponse"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"UserActiveProposalsResponse"},"UserActivityResponse":{"properties":{"name":{"type":"string","title":"Name"},"last_active_unix":{"type":"integer","title":"Last Active Unix"},"first_move":{"type":"integer","title":"First Move"},"rank":{"type":"integer","title":"Rank"},"points":{"type":"integer","title":"Points"}},"type":"object","required":["name","last_active_unix","first_move","rank","points"],"title":"UserActivityResponse"},"UserBalanceSheetResponse":{"properties":{"name":{"type":"string","title":"Name"},"amount":{"type":"integer","title":"Amount"},"type":{"type":"string","title":"Type"},"other_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Other Name"},"other_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Other Type"},"other_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Other Id"},"fixture_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fixture Id"},"time":{"type":"string","format":"date-time","title":"Time"},"unix_time":{"type":"integer","title":"Unix Time"}},"type":"object","required":["name","amount","type","time","unix_time"],"title":"UserBalanceSheetResponse"},"UserClubShareResponse":{"properties":{"name":{"type":"string","title":"Name"},"club_id":{"type":"integer","title":"Club Id"},"num_shares":{"type":"integer","title":"Num Shares"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"}},"type":"object","required":["name","club_id","num_shares"],"title":"UserClubShareResponse"},"UserDetailedResponse":{"properties":{"name":{"type":"string","title":"Name"},"balance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"},"club_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Id"},"manager_voted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Voted"},"buy_volume_1_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Buy Volume 1 Day"},"buy_volume_7_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Buy Volume 7 Day"},"sell_volume_1_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sell Volume 1 Day"},"sell_volume_7_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sell Volume 7 Day"},"buy_total_volume":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Buy Total Volume"},"sell_total_volume":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sell Total Volume"},"total_volume":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Volume"},"total_volume_30_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Volume 30 Day"},"first_trade_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"First Trade Date"},"tenth_trade_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tenth Trade Date"},"hundredth_trade_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hundredth Trade Date"},"thousandth_trade_date":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thousandth Trade Date"},"biggest_trade":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Biggest Trade"},"last_7days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 7Days"},"last_30days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Last 30Days"}},"type":"object","required":["name","balance","last_active_unix","last_active","club_id","buy_volume_1_day","buy_volume_7_day","sell_volume_1_day","sell_volume_7_day","buy_total_volume","sell_total_volume","total_volume","total_volume_30_day","first_trade_date","tenth_trade_date","hundredth_trade_date","thousandth_trade_date","biggest_trade","last_7days","last_30days"],"title":"UserDetailedResponse"},"UserEarningsResponse":{"properties":{"svc2usdc":{"type":"number","title":"Svc2Usdc"},"earnings_7d":{"$ref":"#/components/schemas/EarningsPeriod"},"earnings_14d":{"$ref":"#/components/schemas/EarningsPeriod"},"earnings_30d":{"$ref":"#/components/schemas/EarningsPeriod"},"earnings_last_match_day":{"$ref":"#/components/schemas/EarningsPeriod"}},"type":"object","required":["svc2usdc","earnings_7d","earnings_14d","earnings_30d","earnings_last_match_day"],"title":"UserEarningsResponse"},"UserResponse":{"properties":{"name":{"type":"string","title":"Name"},"balance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance"},"last_active_unix":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Active Unix"},"last_active":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Active"},"club_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Club Id"},"manager_voted":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Manager Voted"}},"type":"object","required":["name","balance","last_active_unix","last_active","club_id"],"title":"UserResponse"},"UserShareSummaryResponse":{"properties":{"name":{"type":"string","title":"Name"},"balance":{"type":"integer","title":"Balance","default":0},"net_worth":{"type":"integer","title":"Net Worth","default":0},"club_count":{"type":"integer","title":"Club Count","default":0},"player_count":{"type":"integer","title":"Player Count","default":0},"club_value":{"type":"integer","title":"Club Value","default":0},"player_value":{"type":"integer","title":"Player Value","default":0},"total_value":{"type":"integer","title":"Total Value","default":0},"club_earnings_7d":{"type":"integer","title":"Club Earnings 7D","default":0},"club_earnings_30d":{"type":"integer","title":"Club Earnings 30D","default":0},"player_earnings_7d":{"type":"integer","title":"Player Earnings 7D","default":0},"player_earnings_30d":{"type":"integer","title":"Player Earnings 30D","default":0}},"type":"object","required":["name"],"title":"UserShareSummaryResponse","description":"Compact per-user portfolio rollup — the O(all-holdings) numbers the\nprofile page needs (net worth, totals, counts, earnings) computed as scoped\nSQL aggregates instead of by shipping every holding to the browser.  All\nmonetary values are in base units (divide by API_VALUE_DIVISOR to display)."},"UserWeeklyBalanceSheetResponse":{"properties":{"name":{"type":"string","title":"Name"},"week_start_unix_time":{"type":"integer","title":"Week Start Unix Time"},"week_end_unix_time":{"type":"integer","title":"Week End Unix Time"},"totals":{"items":{"$ref":"#/components/schemas/TypeAmountEntry"},"type":"array","title":"Totals"}},"type":"object","required":["name","week_start_unix_time","week_end_unix_time","totals"],"title":"UserWeeklyBalanceSheetResponse"},"UsersDetailedSortBy":{"type":"string","enum":["name","balance","last_active_unix","club_id","buy_volume_1_day","buy_volume_7_day","sell_volume_1_day","sell_volume_7_day","buy_total_volume","sell_total_volume","total_volume","total_volume_30_day","first_trade_date","10th_trade_date","100th_trade_date","1000th_trade_date","biggest_trade","manager_voted"],"title":"UsersDetailedSortBy"},"UsersSortBy":{"type":"string","enum":["name","balance","last_active_unix","club_id","manager_voted"],"title":"UsersSortBy"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}