Cito API V1 API

Utilities API — QR code generation and sports/esports data (Fortnite, CoD, LoL, Apex, Dota 2, CS2, UFC, Tennis, RAF Wrestling, BKFC).

Operations 344

Showing the first 250 of 344. The full set is in the contract, and via get_provider_operations.

GET /health Health check #
GET /dota2 Dota 2 API overview #
GET /dota2/search Search Dota 2 data #
GET /dota2/matches/live Live Dota 2 matches #
GET /dota2/matches/{matchId}/live Cito Dota match live snapshot #
GET /dota2/matches/upcoming Upcoming Dota 2 matches #
GET /dota2/matches/recent Recent Dota 2 matches #
GET /dota2/matches/{matchId} Dota 2 match details #
GET /dota2/matches/{matchId}/player-stats Dota 2 match player stats #
GET /dota2/players/{playerIdOrSlug}/radar Dota 2 player radar #
GET /dota2/teams/{teamIdOrSlug}/radar Dota 2 team radar #
GET /dota2/teams List Dota 2 teams #
GET /dota2/players List Dota 2 players #
GET /dota2/tournaments List Dota 2 tournaments #
GET /qr/generate Generate QR code (simple) #
POST /qr/generate Generate QR code (with logo) #
GET /ufc UFC API overview #
GET /ufc/rankings UFC rankings (compatibility) #
GET /ufc/rankings/media UFC Media Panel rankings #
GET /ufc/rankings/media/{division} UFC Media Panel rankings by division #
GET /ufc/fighters List UFC fighters #
GET /ufc/fighters/{slug} Get UFC fighter profile #
GET /ufc/fighters/{slug}/stats Get UFC fighter stats #
GET /ufc/events List UFC events #
GET /ufc/events/recent List recent UFC events #
GET /ufc/events/upcoming List upcoming UFC events #
GET /ufc/events/{eventIdOrSlug} Get UFC event detail #
GET /ufc/events/{slug}/bouts Get UFC event bouts #
GET /ufc/events/{slug}/stats Get UFC event stats #
GET /ufc/bouts List UFC bouts #
GET /ufc/bouts/{boutId} Get UFC bout detail #
GET /ufc/bouts/{boutId}/stats Get UFC bout stats #
GET /ufc/bouts/{boutId}/rounds Get UFC bout round stats #
GET /tennis/live/ws Tennis Live WebSocket (point-by-point) #
GET /ufc/bouts/{boutId}/odds Get UFC bout odds #
GET /ufc/events/{slug}/odds Get UFC event odds #
GET /ufc/live UFC live overview #
GET /ufc/live/events List UFC live events #
GET /ufc/live/events/{slug} Get UFC live event #
GET /ufc/live/{boutId} Get UFC live bout #
GET /ufc/live/{boutId}/state Get UFC live bout state #
GET /ufc/live/{boutId}/snapshots List UFC live bout snapshots #
GET /ufc/live/stream UFC live SSE stream #
GET /ufc/live/{boutId}/socket UFC live transport contract (SSE + WebSocket) #
GET /ufc/live/health UFC live worker health #
GET /ufc/events/{slug}/live Event live alias #
GET /cod/search Search Call of Duty data #
GET /cod/matches Recent Call of Duty matches #
GET /cod/matches/live Live Call of Duty matches #
GET /cod/matches/upcoming Upcoming Call of Duty matches #
GET /cod/matches/recent Recently completed Call of Duty matches #
GET /cod/matches/{id} Call of Duty match details #
GET /cod/matches/{id}/maps Call of Duty match map breakdown #
GET /cod/matches/{id}/player-stats Call of Duty match player stats #
GET /cod/players List Call of Duty players #
GET /cod/players/{id} Call of Duty player details #
GET /cod/players/{id}/stats Call of Duty player season stats #
GET /cod/players/{id}/matches Call of Duty player match history #
GET /cod/orgs List Call of Duty organizations #
GET /cod/orgs/{slug} Call of Duty organization details #
GET /cod/orgs/{slug}/roster Call of Duty organization roster #
GET /cod/tournaments List Call of Duty tournaments #
GET /cod/tournaments/{id} Call of Duty tournament details #
GET /cod/tournaments/{id}/results Call of Duty tournament results #
GET /cod/standings CDL standings #
GET /cod/transfers List Call of Duty transfers #
GET /cod/leaderboards/earnings Call of Duty earnings leaderboard #
GET /fortnite/search Search Fortnite data #
GET /fortnite/matches List Fortnite competitive matches #
GET /fortnite/matches/{matchId} Fortnite match details #
GET /fortnite/matches/{matchId}/stats Fortnite match player stats #
GET /fortnite/matches/{matchId}/kill-feed Fortnite match kill feed #
GET /fortnite/tournaments List Fortnite tournaments #
GET /fortnite/tournaments/live Live Fortnite tournaments #
GET /fortnite/tournaments/upcoming Upcoming Fortnite tournaments #
GET /fortnite/tournaments/live/{eventId}/{windowId} Live Fortnite event leaderboard #
GET /fortnite/tournaments/{id} Fortnite tournament details #
GET /fortnite/tournaments/{id}/results Fortnite tournament results #
GET /fortnite/players List Fortnite players #
GET /fortnite/players/{identifier} Fortnite player details #
GET /fortnite/players/{identifier}/profile Fortnite player lifetime profile stats #
GET /fortnite/players/{identifier}/earnings Fortnite player earnings #
GET /fortnite/orgs List Fortnite organizations #
GET /fortnite/orgs/{slug} Fortnite organization details #
GET /fortnite/orgs/{slug}/roster Fortnite organization roster #
GET /fortnite/pros/rankings Fortnite pro rankings (Cito PR) #
GET /fortnite/leaderboards/earnings Fortnite earnings leaderboard #
GET /fortnite/transfers List Fortnite transfers #
GET /tennis/health Service Health Check #
GET /tennis/health/sync Background Sync Status #
GET /tennis/matches/live List Active Live Matches #
GET /tennis/matches/upcoming Upcoming Scheduled Matches #
GET /tennis/matches/live/{match_id} Get Detailed Live Match State #
GET /tennis/players List & Filter Players #
GET /tennis/players/search Player Autocomplete Search #
GET /tennis/players/batch Fetch Many Players by ID #
GET /tennis/players/{player_id} Get Player Biographical Profile #
GET /tennis/players/{player_id}/stats Get Player Detailed Career Statistics #
GET /tennis/matches Query Match Archive #
GET /tennis/matches/recent Get Recent Tour Matches #
GET /tennis/matches/completed Completed Matches for a Day #
GET /tennis/matches/{match_id} Get Match Details & Box Score #
GET /tennis/h2h Head-to-Head Rivalry Record #
GET /tennis/h2h/matrix Multi-Player H2H Grid #
GET /tennis/rankings Weekly ATP/WTA Rankings Table #
GET /tennis/rankings/top Top N Rankings Snapshot #
GET /tennis/rankings/movers Ranking Movers Between Published Lists #
GET /tennis/rankings/dates List Available Ranking Dates #
GET /tennis/standings Tour Standings (latest singles rankings) #
GET /tennis/rankings/history/{player_id} Player Career Ranking Trajectory #
GET /tennis/tournaments List & Filter Tournaments #
GET /tennis/tournaments/calendar Annual Season Calendar #
GET /tennis/tournaments/{tournament_id} Get Tournament Profile #
GET /tennis/tournaments/{tournament_id}/draw Get Tournament Draw Bracket #
GET /tennis/tournaments/{tournament_id}/editions/{year}/draw Get Specific Tournament Edition Draw #
GET /tennis/tournaments/{tournament_id}/bracket Get Tournament Bracket (draw-tree alias) #
GET /tennis/odds/upcoming Upcoming Matches With Odds #
GET /tennis/odds/{match_id} Pre-Match Odds #
GET /tennis/odds/{match_id}/live Live (In-Play) Odds #
GET /tennis/matches/{match_id}/timeline Completed Match Timeline #
GET /tennis/matches/{match_id}/status Unified Match Status #
GET /tennis/schedule Daily Tennis Schedule #
GET /tennis/players/{player_id}/form Player Recent Form #
GET /tennis/leaderboards/aces Season Aces Leaderboard #
GET /tennis/leaderboards/break-points-saved Season Break-Points-Saved Leaderboard #
GET /tennis/leaderboards/1st-serve-won Season First-Serve-Won Leaderboard #
GET /tennis/leaderboards/break-conversion Season Break-Conversion Leaderboard #
GET /tennis/leaderboards/return-games-won Season Return-Games-Won Leaderboard #
GET /tennis/leaderboards/tiebreak-win-pct Season Tiebreak-Win-Pct Leaderboard #
GET /tennis/leaderboards/deciding-set-record Season Deciding-Set-Record Leaderboard #
GET /tennis/leaderboards/comeback-wins Season Comeback-Wins Leaderboard #
GET /tennis/leaderboards/finals-record Season Finals-Record Leaderboard #
GET /tennis/tournaments/{tournament_id}/edition Tournament Edition Metadata #
GET /tennis/coverage Dataset Coverage #
GET /tennis/h2h/{player1_id}/{player2_id} Head-to-Head (path form) #
GET /tennis/players/{player_id}/matches Player Match Log #
GET /tennis/tournaments/{tournament_id}/schedule Tournament Edition Schedule #
GET /tennis/matches/{match_id}/stats Match Statistics Slice #
GET /tennis/competitions Competitions Index #
GET /tennis/rankings/{circuit} Rankings by Circuit (path form) #
GET /cs2 CS2 API overview #
GET /cs2/status/sync CS2 data freshness #
GET /cs2/changelog CS2 data changelog #
GET /cs2/webhooks/events CS2 webhook event types #
GET /cs2/webhooks CS2 webhook event types #
POST /cs2/webhooks How to register a CS2 webhook #
GET /cs2/search Search CS2 #
GET /cs2/autocomplete CS2 autocomplete #
GET /cs2/roster-changes/recent Recent roster changes #
GET /cs2/transfers/recent Recent transfers #
GET /cs2/transfers Transfers #
GET /cs2/live/stream Live update stream (SSE) #
GET /cs2/live/{matchId}/socket Live socket details #
GET /cs2/live/{matchId}/scoreboard Live scoreboard #
GET /cs2/live/{matchId}/rounds Live rounds #
GET /cs2/live/{matchId}/events Live events #
GET /cs2/live/{matchId}/player-stats Live player stats #
GET /cs2/live/{matchId}/maps Live maps #
GET /cs2/live/{matchId}/snapshots Live snapshots #
GET /cs2/live/{matchId}/state Live state #
GET /cs2/live/{matchId} Live match #
GET /cs2/live Live matches #
GET /cs2/matches/live Live matches #
GET /cs2/matches/today Today's matches #
GET /cs2/matches/past Past matches #
GET /cs2/matches/search Search matches #
GET /cs2/matches/upcoming Upcoming matches #
GET /cs2/matches/recent Recent results #
GET /cs2/matches/results Recent results #
GET /cs2/matches/completed Recent results #
GET /cs2/matches/{matchId}/streams Match streams #
GET /cs2/matches/{matchId}/head-to-head Match head-to-head #
GET /cs2/matches/{matchId}/demos Match demos #
GET /cs2/matches/{matchId}/maps Match maps #
GET /cs2/matches/{matchId}/games Match games #
GET /cs2/matches/{matchId}/player-stats Match player stats #
GET /cs2/matches/{matchId}/lineup-stats Match lineup stats #
GET /cs2/matches/{matchId}/players Match player stats #
GET /cs2/matches/{matchId}/stats Match player stats #
GET /cs2/matches/{matchId} Match details #
GET /cs2/matches List matches #
GET /cs2/games/{gameId}/stats Map player stats #
GET /cs2/games/{gameId}/player-stats Map player stats #
GET /cs2/games/{gameId}/rounds Map rounds #
GET /cs2/games/{gameId}/events Map events #
GET /cs2/games/{gameId} Game details #
GET /cs2/maps Map catalog #
GET /cs2/map-pool Active map pool #
GET /cs2/maps/pool Active map pool #
GET /cs2/weapons Weapon catalog #
GET /cs2/regions Regions #
GET /cs2/leagues Leagues #
GET /cs2/skins/trending Trending skins #
GET /cs2/skins/search List skins #
GET /cs2/skins/{skinIdOrSlug}/prices Skin prices #
GET /cs2/skins/{skinIdOrSlug}/order-book Skin order book #
GET /cs2/skins/{skinIdOrSlug}/history Skin price history #
GET /cs2/skins/{skinIdOrSlug} Skin details #
GET /cs2/skins List skins #
GET /cs2/maps/{mapId}/stats Map player stats #
GET /cs2/maps/{mapId}/player-stats Map player stats #
GET /cs2/maps/{mapId}/rounds Map rounds #
GET /cs2/teams/rankings Team rankings #
GET /cs2/teams/{teamIdOrSlug}/transfers Team transfers #
GET /cs2/teams/{teamIdOrSlug}/roster Team roster #
GET /cs2/teams/{teamIdOrSlug}/roster-history Team roster history #
GET /cs2/teams/{teamIdOrSlug}/players/history Team roster history #
GET /cs2/teams/{teamIdOrSlug}/matches Team matches #
GET /cs2/teams/{teamIdOrSlug}/upcoming Team upcoming matches #
GET /cs2/teams/{teamIdOrSlug}/upcoming-matches Team upcoming matches #
GET /cs2/teams/{teamIdOrSlug}/results Team results #
GET /cs2/teams/{teamIdOrSlug}/recent Team results #
GET /cs2/teams/{teamIdOrSlug}/trends Team trends #
GET /cs2/teams/{teamIdOrSlug}/stats Team stats #
GET /cs2/teams/{teamIdOrSlug}/maps Team maps #
GET /cs2/teams/{teamIdOrSlug}/map-pool Team maps #
GET /cs2/teams/{teamIdOrSlug}/form Team form #
GET /cs2/teams/{teamIdOrSlug}/map-stats Team map stats #
GET /cs2/teams/{teamIdOrSlug}/vs/{opponentIdOrSlug} Team head-to-head #
GET /cs2/teams/{teamIdOrSlug}/h2h/{opponentIdOrSlug} Team head-to-head #
GET /cs2/h2h/pairs Head-to-head pairs #
GET /cs2/teams/{teamIdOrSlug} Team details #
GET /cs2/teams List teams #
GET /cs2/players/search Search players #
GET /cs2/players/{playerIdOrSlug}/career Player career #
GET /cs2/players/{playerIdOrSlug}/seasons Player seasons #
GET /cs2/players/{playerIdOrSlug}/periods Player periods #
GET /cs2/players/{playerIdOrSlug}/tournaments Player tournaments #
GET /cs2/players/{playerIdOrSlug}/events Player tournaments #
GET /cs2/players/{playerIdOrSlug}/trends Player trends #
GET /cs2/players/{playerIdOrSlug}/transfers Player transfers #
GET /cs2/players/{playerIdOrSlug}/stats Player stats #
GET /cs2/players/{playerIdOrSlug}/clutches Player clutches #
GET /cs2/players/{playerIdOrSlug}/flash-assists Player flash assists #
GET /cs2/players/{playerIdOrSlug}/matches Player matches #
GET /cs2/players/{playerIdOrSlug}/maps Player maps #
GET /cs2/players/{playerIdOrSlug}/teams Player teams #
GET /cs2/players/{playerIdOrSlug}/teams/history Player teams #
GET /cs2/players/{playerIdOrSlug}/form Player form #
GET /cs2/players/{playerIdOrSlug}/weapons Player weapons #
GET /cs2/players/{playerIdOrSlug} Player details #
GET /cs2/players List players #
GET /cs2/tournaments/live Live events #
GET /cs2/tournaments/upcoming Upcoming events #
GET /cs2/tournaments/recent Recent events #
GET /cs2/tournaments/calendar Event calendar #
GET /cs2/tournaments/active Active events #
GET /cs2/tournaments List events #
GET /cs2/tournaments/{eventIdOrSlug}/matches Event matches #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/citoapi:cito-api-v1-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

citoapi-v1-openapi.json Raw ↑
{"openapi":"3.0.3","info":{"title":"Cito API","version":"1.0.0","description":"Utilities API — QR code generation and sports/esports data (Fortnite, CoD, LoL, Apex, Dota 2, CS2, UFC, Tennis, RAF Wrestling, BKFC).","contact":{"name":"Cito API Support","url":"https://citoapi.com"},"x-logo":{"url":"https://citoapi.com/logo.png"}},"servers":[{"url":"https://api.citoapi.com/api/v1","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your Cito API key. Get one at https://citoapi.com"}},"schemas":{"Error":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"string","example":"Validation error message"}}},"QrGenerateBody":{"type":"object","required":["data"],"properties":{"data":{"type":"string","description":"Text or URL to encode into the QR code.","example":"https://citoapi.com","maxLength":2048},"size":{"type":"integer","description":"Output image size in pixels (width = height).","default":300,"minimum":100,"maximum":2000,"example":400},"format":{"type":"string","description":"Output format.","enum":["png","svg","base64"],"default":"png"},"foreground":{"type":"string","description":"Foreground (dark module) hex color.","default":"#000000","example":"#000000"},"background":{"type":"string","description":"Background hex color.","default":"#ffffff","example":"#ffffff"},"margin":{"type":"integer","description":"Quiet zone width in modules.","default":4,"minimum":0,"maximum":10},"errorCorrection":{"type":"string","description":"Error correction level. Automatically forced to H when a logo is provided.","enum":["L","M","Q","H"],"default":"M"},"logo":{"type":"object","description":"Optional logo to overlay in the center of the QR code. Requires error correction H (set automatically).","required":["image"],"properties":{"image":{"type":"string","description":"Base64-encoded image with data URL prefix (e.g. data:image/png;base64,...).","example":"data:image/png;base64,iVBORw0KGgo..."},"sizeRatio":{"type":"number","description":"Logo size as a fraction of the QR code size. Capped at 0.35 to preserve scannability.","default":0.25,"minimum":0.1,"maximum":0.35},"padding":{"type":"integer","description":"White padding around the logo in pixels.","default":8,"minimum":0,"maximum":50}}}}},"TennisAllTimeTitleLeader":{"properties":{"player_id":{"type":"string","title":"Player Id","description":"Player ID"},"player_name":{"type":"string","title":"Player Name","description":"Player full name"},"titles":{"type":"integer","title":"Titles","description":"Titles count"}},"type":"object","required":["player_id","player_name","titles"],"title":"AllTimeTitleLeader","description":"Player with most titles at a tournament."},"TennisCalendarTournamentItem":{"properties":{"id":{"type":"string","title":"Id","description":"Tournament edition ID"},"name":{"type":"string","title":"Name","description":"Tournament name"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year","description":"Edition year; this route requires year as a query parameter and did not return it"},"tour":{"type":"string","title":"Tour","description":"ATP or WTA"},"level":{"type":"string","title":"Level","description":"Tier code"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Canonical event category: grand_slam, masters_1000, wta_1000, tour_finals, atp_tour, wta_tour, challenger, itf, davis_cup, billie_jean_king_cup, other. ATP 250 and ATP 500 both report atp_tour because the source does not separate them"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier","description":"Tier name"},"surface":{"type":"string","title":"Surface","description":"Surface"},"start_date":{"type":"string","title":"Start Date","description":"Start date (YYYY-MM-DD)"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date","description":"End date (YYYY-MM-DD)"},"draw_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Draw Size","description":"Draw size","default":32},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"Host city"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"Country code"},"is_live_shell":{"type":"boolean","title":"Is Live Shell","description":"True for a live-feed container (s365_*) or a tour_year_code alias resolving to one; the archive has not caught up to this edition yet","default":false}},"type":"object","required":["id","name","tour","level","surface","start_date"],"title":"CalendarTournamentItem","description":"Tournament calendar event item."},"TennisCareerSummary":{"properties":{"matches_played":{"type":"integer","title":"Matches Played","description":"Total official matches played"},"matches_won":{"type":"integer","title":"Matches Won","description":"Total matches won"},"matches_lost":{"type":"integer","title":"Matches Lost","description":"Total matches lost"},"win_percentage":{"type":"number","title":"Win Percentage","description":"Career win percentage (0.0 to 100.0)"},"titles_count":{"type":"integer","title":"Titles Count","description":"Singles titles won"},"grand_slam_titles":{"type":"integer","title":"Grand Slam Titles","description":"Grand Slam singles titles won","default":0},"masters_titles":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Masters Titles","description":"Masters 1000 singles titles where computed; null when not"},"finals_reached":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Finals Reached","description":"Singles finals reached where computed; null when not"},"prize_money_usd":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prize Money Usd","description":"Not held by this dataset; always null"}},"type":"object","required":["matches_played","matches_won","matches_lost","win_percentage","titles_count"],"title":"CareerSummary","description":"Aggregated career singles win-loss and title statistics."},"TennisClutchStats":{"properties":{"tiebreaks_played":{"type":"integer","title":"Tiebreaks Played","description":"Total tiebreaks played","default":0},"tiebreaks_won":{"type":"integer","title":"Tiebreaks Won","description":"Total tiebreaks won","default":0},"tiebreak_win_pct":{"type":"number","title":"Tiebreak Win Pct","description":"Tiebreak win percentage","default":0},"deciding_set_matches":{"type":"integer","title":"Deciding Set Matches","description":"Matches that went to a deciding set","default":0},"deciding_set_wins":{"type":"integer","title":"Deciding Set Wins","description":"Deciding set matches won","default":0},"deciding_set_win_pct":{"type":"number","title":"Deciding Set Win Pct","description":"Deciding set win percentage","default":0},"after_winning_first_set_win_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"After Winning First Set Win Pct","description":"Win % after winning 1st set"},"after_losing_first_set_win_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"After Losing First Set Win Pct","description":"Win % after losing 1st set"},"vs_top_10_matches":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vs Top 10 Matches","description":"Matches played against Top 10 ranked players","default":0},"vs_top_10_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vs Top 10 Wins","description":"Matches won against Top 10 ranked players","default":0},"vs_top_10_win_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vs Top 10 Win Pct","description":"Win % against Top 10 ranked players","default":0}},"type":"object","title":"ClutchStats","description":"Clutch situational and tiebreak metrics."},"TennisDrawMatch":{"properties":{"match_id":{"type":"string","title":"Match Id","description":"Match ID"},"match_num":{"type":"integer","title":"Match Num","description":"Match order number"},"player1":{"$ref":"#/components/schemas/TennisDrawPlayer","description":"Top / First player in bracket slot"},"player2":{"$ref":"#/components/schemas/TennisDrawPlayer","description":"Bottom / Second player in bracket slot"},"score":{"type":"string","title":"Score","description":"Scoreline"},"next_match_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Match Id","description":"Target match ID in subsequent round"}},"type":"object","required":["match_id","match_num","player1","player2","score"],"title":"DrawMatch","description":"Match node in tournament draw bracket."},"TennisDrawPlayer":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Player ID"},"name":{"type":"string","title":"Name","description":"Player display name"},"ioc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ioc","description":"Country IOC code, the same key the match and h2h participant objects use"},"seed":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Seeding number"},"entry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry","description":"Entry type (WC, Q, LL)"},"is_winner":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Winner","description":"Whether player advanced from this match"}},"type":"object","required":["name"],"title":"DrawPlayer","description":"Player participant node in bracket draw."},"TennisDrawRound":{"properties":{"round_code":{"type":"string","title":"Round Code","description":"Round code (e.g. F, SF, QF, R16, R32, R64, R128)"},"round_name":{"type":"string","title":"Round Name","description":"Human-readable round name"},"matches":{"items":{"$ref":"#/components/schemas/TennisDrawMatch"},"type":"array","title":"Matches","description":"Matches in this round"}},"type":"object","required":["round_code","round_name"],"title":"DrawRound","description":"Round grouping in bracket tree."},"TennisGrandSlamBreakdown":{"properties":{"australian_open":{"$ref":"#/components/schemas/TennisGrandSlamTournamentRecord"},"roland_garros":{"$ref":"#/components/schemas/TennisGrandSlamTournamentRecord"},"wimbledon":{"$ref":"#/components/schemas/TennisGrandSlamTournamentRecord"},"us_open":{"$ref":"#/components/schemas/TennisGrandSlamTournamentRecord"}},"type":"object","required":["australian_open","roland_garros","wimbledon","us_open"],"title":"GrandSlamBreakdown","description":"Career performance across the four Grand Slam majors."},"TennisGrandSlamTournamentRecord":{"properties":{"titles":{"type":"integer","title":"Titles","description":"Titles won","default":0},"finals":{"type":"integer","title":"Finals","description":"Finals reached","default":0},"win_loss":{"type":"string","title":"Win Loss","description":"Career win-loss record string","default":"0-0"},"win_pct":{"type":"number","title":"Win Pct","description":"Match win percentage","default":0}},"type":"object","title":"GrandSlamTournamentRecord","description":"Performance metrics for an individual Grand Slam tournament."},"TennisH2HDecidingSetsRecord":{"properties":{"player1_deciding_set_wins":{"type":"integer","title":"Player1 Deciding Set Wins","description":"Deciding set matches won by Player 1","default":0},"player2_deciding_set_wins":{"type":"integer","title":"Player2 Deciding Set Wins","description":"Deciding set matches won by Player 2","default":0},"total_deciding_sets":{"type":"integer","title":"Total Deciding Sets","description":"Total deciding set matches played","default":0}},"type":"object","title":"H2HDecidingSetsRecord","description":"Head-to-head deciding sets tally."},"TennisH2HFormatBreakdown":{"properties":{"best_of_3":{"$ref":"#/components/schemas/TennisH2HLevelItem"},"best_of_5":{"$ref":"#/components/schemas/TennisH2HLevelItem"}},"type":"object","title":"H2HFormatBreakdown","description":"Head-to-head breakdown by match length (best of 3 vs best of 5)."},"TennisH2HLevelBreakdown":{"properties":{"grand_slam":{"$ref":"#/components/schemas/TennisH2HLevelItem"},"masters_1000":{"$ref":"#/components/schemas/TennisH2HLevelItem"},"tour_finals":{"$ref":"#/components/schemas/TennisH2HLevelItem"},"atp_500_250":{"$ref":"#/components/schemas/TennisH2HLevelItem"},"olympics_davis_cup":{"$ref":"#/components/schemas/TennisH2HLevelItem"}},"type":"object","title":"H2HLevelBreakdown","description":"Head-to-head breakdown by tournament tier."},"TennisH2HLevelItem":{"properties":{"player1_wins":{"type":"integer","title":"Player1 Wins","description":"Wins by Player 1 at this level","default":0},"player2_wins":{"type":"integer","title":"Player2 Wins","description":"Wins by Player 2 at this level","default":0},"total":{"type":"integer","title":"Total","description":"Total matches at this level","default":0}},"type":"object","title":"H2HLevelItem","description":"Level-specific head-to-head record."},"TennisH2HMatchSummary":{"properties":{"id":{"type":"string","title":"Id","description":"Match ID"},"date":{"type":"string","title":"Date","description":"Match date"},"tournament_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Name","description":"Tournament name"},"surface":{"type":"string","title":"Surface","description":"Surface"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level","description":"Tournament tier"},"round":{"type":"string","title":"Round","description":"Round code"},"winner_id":{"type":"string","title":"Winner Id","description":"Winning player ID"},"winner_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Winner Name","description":"Winning player name"},"score":{"type":"string","title":"Score","description":"Scoreline"}},"type":"object","required":["id","date","surface","round","winner_id","score"],"title":"H2HMatchSummary","description":"Match summary in H2H chronology."},"TennisH2HPlayerSummary":{"properties":{"id":{"type":"string","title":"Id","description":"Player ID"},"name":{"type":"string","title":"Name","description":"Player full name"},"ioc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ioc","description":"Country IOC code"},"current_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Rank","description":"Current rank"},"career_high_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Career High Rank","description":"Peak career rank"},"wins":{"type":"integer","title":"Wins","description":"Total wins against opponent"}},"type":"object","required":["id","name","wins"],"title":"H2HPlayerSummary","description":"Player summary for H2H rivalry comparison."},"TennisH2HSummary":{"properties":{"total_matches":{"type":"integer","title":"Total Matches","description":"Total encounters between the two players"},"player1_wins":{"type":"integer","title":"Player1 Wins","description":"Encounters won by Player 1"},"player2_wins":{"type":"integer","title":"Player2 Wins","description":"Encounters won by Player 2"},"player1_lead":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Lead","description":"Net lead in wins by Player 1 (can be negative)"},"finals_matches":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Finals Matches","description":"Encounters in finals","default":0},"player1_finals_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Finals Wins","description":"Finals won by Player 1","default":0},"player2_finals_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player2 Finals Wins","description":"Finals won by Player 2","default":0},"grand_slam_matches":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Grand Slam Matches","description":"Encounters at Grand Slams","default":0},"player1_grand_slam_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Grand Slam Wins","description":"Grand Slam matches won by Player 1","default":0},"player2_grand_slam_wins":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player2 Grand Slam Wins","description":"Grand Slam matches won by Player 2","default":0}},"type":"object","required":["total_matches","player1_wins","player2_wins"],"title":"H2HSummary","description":"Head-to-head overall tallies."},"TennisH2HSurfaceBreakdown":{"properties":{"hard":{"$ref":"#/components/schemas/TennisH2HSurfaceItem"},"clay":{"$ref":"#/components/schemas/TennisH2HSurfaceItem"},"grass":{"$ref":"#/components/schemas/TennisH2HSurfaceItem"},"carpet":{"$ref":"#/components/schemas/TennisH2HSurfaceItem"}},"type":"object","title":"H2HSurfaceBreakdown","description":"Head-to-head surface breakdown across Hard, Clay, Grass, Carpet."},"TennisH2HSurfaceItem":{"properties":{"player1_wins":{"type":"integer","title":"Player1 Wins","description":"Wins by Player 1 on this surface","default":0},"player2_wins":{"type":"integer","title":"Player2 Wins","description":"Wins by Player 2 on this surface","default":0},"total":{"type":"integer","title":"Total","description":"Total matches on this surface","default":0}},"type":"object","title":"H2HSurfaceItem","description":"Surface-specific head-to-head record."},"TennisH2HTiebreakRecord":{"properties":{"player1_tiebreaks_won":{"type":"integer","title":"Player1 Tiebreaks Won","description":"Tiebreaks won by Player 1","default":0},"player2_tiebreaks_won":{"type":"integer","title":"Player2 Tiebreaks Won","description":"Tiebreaks won by Player 2","default":0},"total_tiebreaks":{"type":"integer","title":"Total Tiebreaks","description":"Total tiebreaks played between the two","default":0}},"type":"object","title":"H2HTiebreakRecord","description":"Head-to-head tiebreak tally."},"TennisHTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/TennisValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"TennisHeadToHeadMatrixResponse":{"properties":{"players":{"items":{"$ref":"#/components/schemas/TennisH2HPlayerSummary"},"type":"array","title":"Players","description":"List of compared players"},"matrix":{"additionalProperties":{"additionalProperties":{"type":"string"},"type":"object"},"type":"object","title":"Matrix","description":"H2H win-loss grid indexed by player ID pairs"}},"type":"object","required":["players","matrix"],"title":"HeadToHeadMatrixResponse","description":"Multi-player Head-to-Head comparison grid."},"TennisHeadToHeadResponse":{"properties":{"player1":{"$ref":"#/components/schemas/TennisH2HPlayerSummary","description":"Player 1 summary"},"player2":{"$ref":"#/components/schemas/TennisH2HPlayerSummary","description":"Player 2 summary"},"summary":{"$ref":"#/components/schemas/TennisH2HSummary","description":"Overall tally and key milestones"},"surface_breakdown":{"$ref":"#/components/schemas/TennisH2HSurfaceBreakdown","description":"Surface breakdown"},"level_breakdown":{"anyOf":[{"$ref":"#/components/schemas/TennisH2HLevelBreakdown"},{"type":"null"}],"description":"Tournament tier breakdown"},"format_breakdown":{"anyOf":[{"$ref":"#/components/schemas/TennisH2HFormatBreakdown"},{"type":"null"}],"description":"Best-of-3 / Best-of-5 breakdown"},"tiebreak_record":{"anyOf":[{"$ref":"#/components/schemas/TennisH2HTiebreakRecord"},{"type":"null"}],"description":"Tiebreak record"},"deciding_sets":{"anyOf":[{"$ref":"#/components/schemas/TennisH2HDecidingSetsRecord"},{"type":"null"}],"description":"Deciding sets record"},"matches":{"items":{"$ref":"#/components/schemas/TennisH2HMatchSummary"},"type":"array","title":"Matches","description":"Chronological match list"}},"type":"object","required":["player1","player2","summary","surface_breakdown"],"title":"HeadToHeadResponse","description":"Complete Head-to-Head rivalry dossier."},"TennisListResponse_CalendarTournamentItem_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TennisCalendarTournamentItem"},"type":"array","title":"Items","description":"The rows"},"total":{"type":"integer","title":"Total","description":"Rows matching the filter, not rows in this response"},"page":{"type":"integer","title":"Page","description":"Current page; these routes return a single page","default":1},"page_size":{"type":"integer","title":"Page Size","description":"Rows requested for this page","default":0},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages available","default":1},"has_next":{"type":"boolean","title":"Has Next","description":"Whether a subsequent page exists","default":false},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether a preceding page exists","default":false}},"type":"object","required":["items","total"],"title":"ListResponse[CalendarTournamentItem]"},"TennisListResponse_Dict_str__Any__":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items","description":"The rows"},"total":{"type":"integer","title":"Total","description":"Rows matching the filter, not rows in this response"},"page":{"type":"integer","title":"Page","description":"Current page; these routes return a single page","default":1},"page_size":{"type":"integer","title":"Page Size","description":"Rows requested for this page","default":0},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages available","default":1},"has_next":{"type":"boolean","title":"Has Next","description":"Whether a subsequent page exists","default":false},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether a preceding page exists","default":false}},"type":"object","required":["items","total"],"title":"ListResponse[Dict[str, Any]]"},"TennisListResponse_LiveMatchSummary_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TennisLiveMatchSummary"},"type":"array","title":"Items","description":"The rows"},"total":{"type":"integer","title":"Total","description":"Rows matching the filter, not rows in this response"},"page":{"type":"integer","title":"Page","description":"Current page; these routes return a single page","default":1},"page_size":{"type":"integer","title":"Page Size","description":"Rows requested for this page","default":0},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages available","default":1},"has_next":{"type":"boolean","title":"Has Next","description":"Whether a subsequent page exists","default":false},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether a preceding page exists","default":false}},"type":"object","required":["items","total"],"title":"ListResponse[LiveMatchSummary]"},"TennisListResponse_PlayerListItem_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TennisPlayerListItem"},"type":"array","title":"Items","description":"The rows"},"total":{"type":"integer","title":"Total","description":"Rows matching the filter, not rows in this response"},"page":{"type":"integer","title":"Page","description":"Current page; these routes return a single page","default":1},"page_size":{"type":"integer","title":"Page Size","description":"Rows requested for this page","default":0},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages available","default":1},"has_next":{"type":"boolean","title":"Has Next","description":"Whether a subsequent page exists","default":false},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether a preceding page exists","default":false}},"type":"object","required":["items","total"],"title":"ListResponse[PlayerListItem]"},"TennisListResponse_str_":{"properties":{"items":{"items":{"type":"string"},"type":"array","title":"Items","description":"The rows"},"total":{"type":"integer","title":"Total","description":"Rows matching the filter, not rows in this response"},"page":{"type":"integer","title":"Page","description":"Current page; these routes return a single page","default":1},"page_size":{"type":"integer","title":"Page Size","description":"Rows requested for this page","default":0},"total_pages":{"type":"integer","title":"Total Pages","description":"Total pages available","default":1},"has_next":{"type":"boolean","title":"Has Next","description":"Whether a subsequent page exists","default":false},"has_prev":{"type":"boolean","title":"Has Prev","description":"Whether a preceding page exists","default":false}},"type":"object","required":["items","total"],"title":"ListResponse[str]"},"TennisLiveMatchDetail":{"properties":{"id":{"type":"string","title":"Id","description":"Canonical match identifier (same value as match_id)"},"match_id":{"type":"string","title":"Match Id","description":"Unique live match ID"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At","description":"When the match went in-play (ISO 8601)"},"round_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Round Name","description":"Human label for the round code"},"tour":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour","description":"ATP or WTA"},"tournament_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id","description":"Tournament id once this match is reconciled to a tournament; null while it is still on the live feed"},"tournament_name":{"type":"string","title":"Tournament Name","description":"Tournament name"},"court":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Court","description":"Court name"},"best_of":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Of","description":"Best of 3 or 5","default":3},"round":{"type":"string","title":"Round","description":"Round"},"surface":{"type":"string","title":"Surface","description":"Surface","default":"Hard"},"status":{"type":"string","title":"Status","description":"Status","default":"IN_PROGRESS"},"player1":{"$ref":"#/components/schemas/TennisLivePlayerState","description":"Player 1 state"},"player2":{"$ref":"#/components/schemas/TennisLivePlayerState","description":"Player 2 state"},"winner_side":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Winner Side","description":"1 or 2 once decided; null while in progress"},"current_set":{"type":"integer","title":"Current Set","description":"Current set number","default":1},"game_score":{"type":"string","title":"Game Score","description":"Current game point score","default":"0-0"},"server":{"type":"integer","title":"Server","description":"Current server index (1 or 2)","default":1},"tiebreak_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tiebreak Score","description":"Active tiebreak score"},"sets":{"items":{"$ref":"#/components/schemas/TennisLiveSetScore"},"type":"array","title":"Sets","description":"Set scores"},"point_history":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Point History","description":"Recent point timeline"},"stats":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Stats","description":"Per-side match statistics"}},"type":"object","required":["id","match_id","tournament_name","round","player1","player2"],"title":"LiveMatchDetail","description":"Detailed live match state snapshot."},"TennisLiveMatchSummary":{"properties":{"id":{"type":"string","title":"Id","description":"Canonical match identifier (same value as match_id)"},"match_id":{"type":"string","title":"Match Id","description":"Unique live match ID"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At","description":"When the match went in-play (ISO 8601)"},"round_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Round Name","description":"Human label for the round code"},"tour":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tour","description":"ATP or WTA"},"tournament_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id","description":"Tournament id once this match is reconciled to a tournament; null while it is still on the live feed"},"tournament_name":{"type":"string","title":"Tournament Name","description":"Tournament name"},"court":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Court","description":"Court name"},"surface":{"type":"string","title":"Surface","description":"Court surface","default":"Hard"},"round":{"type":"string","title":"Round","description":"Round code"},"best_of":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Of","description":"Best of 3 or 5","default":3},"status":{"type":"string","title":"Status","description":"State: NOT_STARTED, IN_PROGRESS, FINISHED","default":"IN_PROGRESS"},"outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome","description":"Decided-match outcome (COMPLETED, RETIREMENT, ...); null while in progress (TENNIS-25 canonical-shape parity)"},"player1":{"$ref":"#/components/schemas/TennisLivePlayerState","description":"Player 1 live state"},"player2":{"$ref":"#/components/schemas/TennisLivePlayerState","description":"Player 2 live state"},"winner":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Winner","description":"Winning side once decided; null while in progress (TENNIS-25 canonical-shape parity)"},"loser":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Loser","description":"Losing side once decided; null while in progress (TENNIS-25 canonical-shape parity)"},"winner_side":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Winner Side","description":"1 or 2 once decided; null while in progress"},"current_set":{"type":"integer","title":"Current Set","description":"Current active set number","default":1},"game_score":{"type":"string","title":"Game Score","description":"Current game point score","default":"0-0"},"server":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Server","description":"Current server: 1 for Player 1, 2 for Player 2","default":1},"sets":{"items":{"$ref":"#/components/schemas/TennisLiveSetScore"},"type":"array","title":"Sets","description":"Set-by-set scores"},"stats":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Stats","description":"Per-side match statistics"},"source":{"type":"string","title":"Source","description":"Origin of this live record.","default":"simulator"}},"type":"object","required":["id","match_id","tournament_name","round","player1","player2"],"title":"LiveMatchSummary","description":"Live match summary in active feed list."},"TennisLivePlayerState":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Player ID"},"name":{"type":"string","title":"Name","description":"Player display name"},"ioc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ioc","description":"Country IOC code, the same key the match and h2h participant objects use"},"seed":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Tournament seed"},"sets_won":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sets Won","description":"Completed sets won in this match","default":0},"current_game_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Game Score","description":"Current point score (0, 15, 30, 40, AD)","default":"0"},"is_serving":{"type":"boolean","title":"Is Serving","description":"Whether this player is currently serving","default":false}},"type":"object","required":["name"],"title":"LivePlayerState","description":"Player status in an active live match."},"TennisLiveSetScore":{"properties":{"set_num":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Set Num","description":"Set number"},"set_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Set Number","description":"Canonical set number (same value as set_num)"},"score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Score","description":"Set score string"},"player1_games":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player1 Games","description":"Games won by Player 1"},"player2_games":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Player2 Games","description":"Games won by Player 2"},"tiebreak":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tiebreak","description":"Tiebreak score if applicable"},"is_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Completed","description":"Whether this set is concluded"}},"type":"object","title":"LiveSetScore","description":"Set score item in live match.\n\n``set_number`` is the canonical field name (shared with the match\narchive, which otherwise calls this ``winner_games``/``loser_games``'s\ncounterpart ``set_number``); ``set_num`` stays for back-compat."},"TennisMatchDetailResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique match identifier"},"tournament_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tournament Id","description":"Tournament ID"},"tournament":{"anyOf":[{"$ref":"#/components/schemas/TennisTournamentSummaryInfo"},{"type":"null"}],"description":"Tournament metadata"},"match_date":{"type":"string","title":"Match Date","description":"Match date (YYYY-MM-DD)"},"tour":{"anyOf":[{"type":"string"},

# --- truncated at 32 KB (703 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/citoapi/refs/heads/main/openapi/_original/citoapi-v1-openapi.json