{"openapi":"3.0.3","info":{"title":"FFHL Stats API","version":"1.0.0","description":"Fantasy hockey league stats API. All data endpoints require an API key\npassed as the `x-api-key` request header.\n"},"servers":[{"url":"https://ffhl-stats-api.vercel.app","description":"Production"},{"url":"http://localhost:3000","description":"Local development"}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"parameters":{"reportType":{"name":"reportType","in":"path","required":true,"description":"Report dataset. `regular` and `playoffs` return the corresponding\ndataset. `both` merges regular + playoffs stats then calculates scores.\n","schema":{"type":"string","enum":["regular","playoffs","both"]}},"season":{"name":"season","in":"path","required":true,"description":"Starting year of the season in YYYY format (e.g. `2023` for 2023-2024).","schema":{"type":"integer","example":2023}},"teamId":{"name":"teamId","in":"query","description":"Team identifier. Defaults to `1` (repo maintainer's team). IDs are defined in `constants.ts`.","schema":{"type":"string","example":"1"}},"startFrom":{"name":"startFrom","in":"query","description":"Filter results to start from this season (inclusive). Starting year in YYYY format.\nWorks with `/seasons`, `/players/combined/*`, and `/goalies/combined/*`.\n","schema":{"type":"integer","example":2020}},"skip":{"name":"skip","in":"query","description":"Number of rows to skip from the start of the sorted highlight list. Defaults to `0`.","schema":{"type":"integer","minimum":0,"example":0}},"take":{"name":"take","in":"query","description":"Number of rows to return from the sorted highlight list. Defaults to `10`. Maximum `100`.","schema":{"type":"integer","minimum":0,"maximum":100,"example":10}},"careerId":{"name":"id","in":"path","required":true,"description":"Fantrax player or goalie identifier.","schema":{"type":"string","example":"p001"}}},"schemas":{"Team":{"type":"object","required":["id","name","presentName","teamAbbr"],"properties":{"id":{"type":"string","example":"1"},"name":{"type":"string","example":"colorado"},"presentName":{"type":"string","example":"Colorado Avalanche"},"teamAbbr":{"type":"string","example":"COL"},"nameAliases":{"type":"array","items":{"type":"string"}},"firstSeason":{"type":"integer","description":"First season year (YYYY) for expansion/relocated teams.","example":2017}}},"DraftTeamRef":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string","example":"12"},"name":{"type":"string","example":"Anaheim Ducks"}}},"DraftPick":{"type":"object","required":["round","pickNumber","draftedPlayer","playedInLeague","playedForDraftingTeam","originalOwner"],"properties":{"round":{"type":"integer","example":1},"pickNumber":{"type":"integer","example":1},"draftedPlayer":{"type":"string","nullable":true,"example":"Connor McDavid"},"playedInLeague":{"type":"boolean","description":"True when the linked Fantrax entity has at least one games-played row in `players` or `goalies` for any fantasy team.","example":true},"playedForDraftingTeam":{"type":"boolean","description":"True when the linked Fantrax entity has at least one games-played row for the same fantasy team that drafted them.","example":false},"originalOwner":{"$ref":"#/components/schemas/DraftTeamRef"}}},"OpeningDraftPick":{"type":"object","required":["round","pickNumber","draftedPlayer","originalOwner"],"properties":{"round":{"type":"integer","example":1},"pickNumber":{"type":"integer","example":1},"draftedPlayer":{"type":"string","example":"Sidney Crosby"},"originalOwner":{"$ref":"#/components/schemas/DraftTeamRef"}}},"OpeningDraftTeamGroup":{"type":"object","required":["team","picks"],"properties":{"team":{"$ref":"#/components/schemas/DraftTeamRef"},"picks":{"type":"array","items":{"$ref":"#/components/schemas/OpeningDraftPick"}}}},"EntryDraftSeasonGroup":{"type":"object","required":["season","picks"],"properties":{"season":{"type":"integer","example":2025},"picks":{"type":"array","items":{"$ref":"#/components/schemas/DraftPick"}}}},"EntryDraftHighestPickItem":{"type":"object","required":["season","round","draftedPlayer"],"properties":{"season":{"type":"integer","example":2025},"round":{"type":"integer","example":1},"draftedPlayer":{"type":"string","example":"Connor McDavid"}}},"EntryDraftHighestPick":{"type":"object","required":["pickNumber","items"],"properties":{"pickNumber":{"type":"integer","example":15},"items":{"type":"array","items":{"$ref":"#/components/schemas/EntryDraftHighestPickItem"}}}},"EntryDraftAmountsSummary":{"type":"object","required":["total","ownPicks","tradedPicks","playersPerDraftAverage","playedInLeague","playedInLeaguePercent","playedForDraftingTeam","playedForDraftingTeamPercent"],"properties":{"total":{"type":"integer","example":40},"ownPicks":{"type":"integer","example":32},"tradedPicks":{"type":"integer","example":8},"playersPerDraftAverage":{"type":"number","description":"Average drafted players per entry draft season rounded to two decimals.","example":5.71},"playedInLeague":{"type":"integer","description":"Drafted players with at least one games-played row in `players` or `goalies` for any fantasy team.","example":28},"playedInLeaguePercent":{"type":"number","description":"Fraction of drafted players who appeared in league games for any fantasy team, rounded to three decimals.","example":0.7},"playedForDraftingTeam":{"type":"integer","description":"Drafted players with at least one games-played row for the same fantasy team that drafted them.","example":14},"playedForDraftingTeamPercent":{"type":"number","description":"Fraction of drafted players who appeared in league games for the fantasy team that drafted them, rounded to three decimals.","example":0.35}}},"EntryDraftRoundsSummary":{"type":"object","required":["first","second","third","fourth","fifth"],"properties":{"first":{"type":"integer","example":12},"second":{"type":"integer","example":8},"third":{"type":"integer","example":6},"fourth":{"type":"integer","example":3},"fifth":{"type":"integer","example":1}}},"EntryDraftTeamSummary":{"type":"object","required":["highestPick","averageDraftPosition","amounts","rounds"],"properties":{"highestPick":{"allOf":[{"$ref":"#/components/schemas/EntryDraftHighestPick"}],"nullable":true},"averageDraftPosition":{"type":"number","nullable":true,"description":"Average overall draft position across drafted players only, rounded to two decimals.","example":54.23},"amounts":{"$ref":"#/components/schemas/EntryDraftAmountsSummary"},"rounds":{"$ref":"#/components/schemas/EntryDraftRoundsSummary"}}},"EntryDraftTeamGroup":{"type":"object","required":["team","summary","seasons"],"properties":{"team":{"$ref":"#/components/schemas/DraftTeamRef"},"summary":{"$ref":"#/components/schemas/EntryDraftTeamSummary"},"seasons":{"type":"array","items":{"$ref":"#/components/schemas/EntryDraftSeasonGroup"}}}},"Season":{"type":"object","required":["season","text"],"properties":{"season":{"type":"integer","example":2023},"text":{"type":"string","example":"2023-2024"}}},"CountSplit":{"type":"object","required":["owned","played"],"properties":{"owned":{"type":"integer"},"played":{"type":"integer"}}},"CareerSummaryTeam":{"type":"object","required":["teamId","teamName","seasonCount","firstSeason","lastSeason"],"properties":{"teamId":{"type":"string"},"teamName":{"type":"string"},"seasonCount":{"$ref":"#/components/schemas/CountSplit"},"firstSeason":{"type":"integer"},"lastSeason":{"type":"integer"}}},"CareerSummary":{"type":"object","required":["firstSeason","lastSeason","seasonCount","teamCount","teams"],"properties":{"firstSeason":{"type":"integer"},"lastSeason":{"type":"integer"},"seasonCount":{"$ref":"#/components/schemas/CountSplit"},"teamCount":{"$ref":"#/components/schemas/CountSplit"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/CareerSummaryTeam"}}}},"CareerPlayerStatsLine":{"type":"object","required":["games","goals","assists","points","plusMinus","penalties","shots","ppp","shp","hits","blocks"],"properties":{"games":{"type":"number"},"goals":{"type":"number"},"assists":{"type":"number"},"points":{"type":"number"},"plusMinus":{"type":"number"},"penalties":{"type":"number"},"shots":{"type":"number"},"ppp":{"type":"number"},"shp":{"type":"number"},"hits":{"type":"number"},"blocks":{"type":"number"}}},"CareerGoalieStatsLine":{"type":"object","required":["games","wins","saves","shutouts","goals","assists","points","penalties","ppp","shp"],"properties":{"games":{"type":"number"},"wins":{"type":"number"},"saves":{"type":"number"},"shutouts":{"type":"number"},"goals":{"type":"number"},"assists":{"type":"number"},"points":{"type":"number"},"penalties":{"type":"number"},"ppp":{"type":"number"},"shp":{"type":"number"}}},"CareerPlayerTeamTotals":{"allOf":[{"$ref":"#/components/schemas/CareerPlayerStatsLine"},{"type":"object","required":["teamId","teamName","seasonCount"],"properties":{"teamId":{"type":"string"},"teamName":{"type":"string"},"seasonCount":{"$ref":"#/components/schemas/CountSplit"}}}]},"CareerGoalieTeamTotals":{"allOf":[{"$ref":"#/components/schemas/CareerGoalieStatsLine"},{"type":"object","required":["teamId","teamName","seasonCount"],"properties":{"teamId":{"type":"string"},"teamName":{"type":"string"},"seasonCount":{"$ref":"#/components/schemas/CountSplit"}}}]},"CareerPlayerTotals":{"allOf":[{"$ref":"#/components/schemas/CareerPlayerStatsLine"},{"type":"object","required":["seasonCount","teamCount","teams"],"properties":{"seasonCount":{"$ref":"#/components/schemas/CountSplit"},"teamCount":{"$ref":"#/components/schemas/CountSplit"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/CareerPlayerTeamTotals"}}}}]},"CareerGoalieTotals":{"allOf":[{"$ref":"#/components/schemas/CareerGoalieStatsLine"},{"type":"object","required":["seasonCount","teamCount","teams"],"properties":{"seasonCount":{"$ref":"#/components/schemas/CountSplit"},"teamCount":{"$ref":"#/components/schemas/CountSplit"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/CareerGoalieTeamTotals"}}}}]},"CareerPlayerSeason":{"allOf":[{"$ref":"#/components/schemas/CareerPlayerStatsLine"},{"type":"object","required":["season","reportType","teamId","teamName","position"],"properties":{"season":{"type":"integer"},"reportType":{"type":"string","enum":["regular","playoffs"]},"teamId":{"type":"string"},"teamName":{"type":"string"},"position":{"type":"string"}}}]},"CareerGoalieSeason":{"allOf":[{"$ref":"#/components/schemas/CareerGoalieStatsLine"},{"type":"object","required":["season","reportType","teamId","teamName"],"properties":{"season":{"type":"integer"},"reportType":{"type":"string","enum":["regular","playoffs"]},"teamId":{"type":"string"},"teamName":{"type":"string"},"gaa":{"type":"string","description":"Goals against average formatted with two decimals. Played zero values are returned as `0.00`; omitted only when source data only contains a non-played zero placeholder."},"savePercent":{"type":"string","description":"Save percentage formatted with three decimals. Played zero values are returned as `0.000`; omitted only when source data only contains a non-played zero placeholder."}}}]},"CareerPlayer":{"type":"object","required":["id","name","position","summary","totals","seasons"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"string"},"summary":{"$ref":"#/components/schemas/CareerSummary"},"totals":{"type":"object","required":["career","regular","playoffs"],"properties":{"career":{"$ref":"#/components/schemas/CareerPlayerTotals"},"regular":{"$ref":"#/components/schemas/CareerPlayerTotals"},"playoffs":{"$ref":"#/components/schemas/CareerPlayerTotals"}}},"seasons":{"type":"array","items":{"$ref":"#/components/schemas/CareerPlayerSeason"}}}},"CareerPlayerListItem":{"type":"object","required":["id","name","position","firstSeason","lastSeason","seasonsOwned","seasonsPlayedRegular","seasonsPlayedPlayoffs","teamsOwned","teamsPlayedRegular","teamsPlayedPlayoffs","regularGames","playoffGames"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"string"},"firstSeason":{"type":"integer"},"lastSeason":{"type":"integer"},"seasonsOwned":{"type":"integer"},"seasonsPlayedRegular":{"type":"integer"},"seasonsPlayedPlayoffs":{"type":"integer"},"teamsOwned":{"type":"integer"},"teamsPlayedRegular":{"type":"integer"},"teamsPlayedPlayoffs":{"type":"integer"},"regularGames":{"type":"integer"},"playoffGames":{"type":"integer"}}},"CareerGoalieListItem":{"type":"object","required":["id","name","firstSeason","lastSeason","seasonsOwned","seasonsPlayedRegular","seasonsPlayedPlayoffs","teamsOwned","teamsPlayedRegular","teamsPlayedPlayoffs","regularGames","playoffGames"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"firstSeason":{"type":"integer"},"lastSeason":{"type":"integer"},"seasonsOwned":{"type":"integer"},"seasonsPlayedRegular":{"type":"integer"},"seasonsPlayedPlayoffs":{"type":"integer"},"teamsOwned":{"type":"integer"},"teamsPlayedRegular":{"type":"integer"},"teamsPlayedPlayoffs":{"type":"integer"},"regularGames":{"type":"integer"},"playoffGames":{"type":"integer"}}},"CareerHighlightType":{"type":"string","enum":["most-teams-played","most-teams-owned","same-team-seasons-played","same-team-seasons-owned","most-stanley-cups","reunion-king","stash-king","regular-grinder-without-playoffs","most-trades","most-claims","most-drops"]},"CareerHighlightTeam":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}},"CareerTeamCountHighlightItem":{"type":"object","required":["id","name","position","teamCount","teams"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"string"},"teamCount":{"type":"integer"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/CareerHighlightTeam"}}}},"CareerSameTeamHighlightItem":{"type":"object","required":["id","name","position","seasonCount","team"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"string"},"seasonCount":{"type":"integer"},"team":{"$ref":"#/components/schemas/CareerHighlightTeam"}}},"CareerStanleyCupHighlightCup":{"type":"object","required":["season","team"],"properties":{"season":{"type":"integer"},"team":{"$ref":"#/components/schemas/CareerHighlightTeam"}}},"CareerStanleyCupHighlightItem":{"type":"object","required":["id","name","position","cupCount","cups"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"string"},"cupCount":{"type":"integer"},"cups":{"type":"array","items":{"$ref":"#/components/schemas/CareerStanleyCupHighlightCup"}}}},"CareerReunionHighlightItem":{"type":"object","required":["id","name","position","reunionCount","team","reunions"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"string"},"reunionCount":{"type":"integer"},"team":{"$ref":"#/components/schemas/CareerHighlightTeam"},"reunions":{"type":"array","items":{"$ref":"#/components/schemas/CareerReunionHighlightReunion"}}}},"CareerReunionHighlightReunion":{"type":"object","required":["date","type"],"properties":{"date":{"type":"string"},"type":{"type":"string","enum":["claim","trade"]}}},"CareerStashHighlightItem":{"type":"object","required":["id","name","position","seasonCount","team"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"string"},"seasonCount":{"type":"integer"},"team":{"$ref":"#/components/schemas/CareerHighlightTeam"}}},"CareerRegularGrinderHighlightItem":{"type":"object","required":["id","name","position","regularGames","teams"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"string"},"regularGames":{"type":"integer"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/CareerHighlightTeam"}}}},"CareerTransactionHighlightTeam":{"type":"object","required":["id","name","count"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"count":{"type":"integer"}}},"CareerTransactionHighlightItem":{"type":"object","required":["id","name","position","transactionCount","teams"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"position":{"type":"string"},"transactionCount":{"type":"integer"},"teams":{"type":"array","items":{"$ref":"#/components/schemas/CareerTransactionHighlightTeam"}}}},"CareerTeamCountHighlightPage":{"type":"object","required":["type","minAllowed","skip","take","total","items"],"properties":{"type":{"type":"string","enum":["most-teams-played","most-teams-owned"]},"minAllowed":{"type":"integer"},"skip":{"type":"integer"},"take":{"type":"integer"},"total":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CareerTeamCountHighlightItem"}}}},"CareerSameTeamHighlightPage":{"type":"object","required":["type","minAllowed","skip","take","total","items"],"properties":{"type":{"type":"string","enum":["same-team-seasons-played","same-team-seasons-owned"]},"minAllowed":{"type":"integer"},"skip":{"type":"integer"},"take":{"type":"integer"},"total":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CareerSameTeamHighlightItem"}}}},"CareerStanleyCupHighlightPage":{"type":"object","required":["type","minAllowed","skip","take","total","items"],"properties":{"type":{"type":"string","enum":["most-stanley-cups"]},"minAllowed":{"type":"integer"},"skip":{"type":"integer"},"take":{"type":"integer"},"total":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CareerStanleyCupHighlightItem"}}}},"CareerReunionHighlightPage":{"type":"object","required":["type","minAllowed","skip","take","total","items"],"properties":{"type":{"type":"string","enum":["reunion-king"]},"minAllowed":{"type":"integer"},"skip":{"type":"integer"},"take":{"type":"integer"},"total":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CareerReunionHighlightItem"}}}},"CareerStashHighlightPage":{"type":"object","required":["type","minAllowed","skip","take","total","items"],"properties":{"type":{"type":"string","enum":["stash-king"]},"minAllowed":{"type":"integer"},"skip":{"type":"integer"},"take":{"type":"integer"},"total":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CareerStashHighlightItem"}}}},"CareerRegularGrinderHighlightPage":{"type":"object","required":["type","minAllowed","skip","take","total","items"],"properties":{"type":{"type":"string","enum":["regular-grinder-without-playoffs"]},"minAllowed":{"type":"integer"},"skip":{"type":"integer"},"take":{"type":"integer"},"total":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CareerRegularGrinderHighlightItem"}}}},"CareerTransactionHighlightPage":{"type":"object","required":["type","minAllowed","skip","take","total","items"],"properties":{"type":{"type":"string","enum":["most-trades","most-claims","most-drops"]},"minAllowed":{"type":"integer"},"skip":{"type":"integer"},"take":{"type":"integer"},"total":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CareerTransactionHighlightItem"}}}},"CareerGoalie":{"type":"object","required":["id","name","summary","totals","seasons"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"summary":{"$ref":"#/components/schemas/CareerSummary"},"totals":{"type":"object","required":["career","regular","playoffs"],"properties":{"career":{"$ref":"#/components/schemas/CareerGoalieTotals"},"regular":{"$ref":"#/components/schemas/CareerGoalieTotals"},"playoffs":{"$ref":"#/components/schemas/CareerGoalieTotals"}}},"seasons":{"type":"array","items":{"$ref":"#/components/schemas/CareerGoalieSeason"}}}},"Player":{"type":"object","required":["id","name","games","goals","assists","points","plusMinus","penalties","shots","ppp","shp","hits","blocks","score","scoreAdjustedByGames"],"properties":{"name":{"type":"string"},"id":{"type":"string","description":"Fantrax player identifier extracted from `*id*` in CSV name field."},"position":{"type":"string"},"games":{"type":"number"},"goals":{"type":"number"},"assists":{"type":"number"},"points":{"type":"number"},"plusMinus":{"type":"number"},"penalties":{"type":"number"},"shots":{"type":"number"},"ppp":{"type":"number"},"shp":{"type":"number"},"hits":{"type":"number"},"blocks":{"type":"number"},"score":{"type":"number","description":"Composite score (0-100 range)."},"scoreAdjustedByGames":{"type":"number","description":"Stabilized per-game pace score."},"scores":{"type":"object","additionalProperties":{"type":"number"},"description":"Per-stat score breakdown."},"scoreByPosition":{"type":"number"},"scoreByPositionAdjustedByGames":{"type":"number","description":"Stabilized per-game pace score compared to the same position only."},"scoresByPosition":{"type":"object","additionalProperties":{"type":"number"}}}},"Goalie":{"type":"object","required":["id","name","games","goals","assists","points","penalties","ppp","shp","wins","saves","shutouts","score","scoreAdjustedByGames"],"properties":{"name":{"type":"string"},"id":{"type":"string","description":"Fantrax goalie identifier extracted from `*id*` in CSV name field."},"position":{"type":"string"},"games":{"type":"number"},"goals":{"type":"number"},"assists":{"type":"number"},"points":{"type":"number"},"penalties":{"type":"number"},"ppp":{"type":"number"},"shp":{"type":"number"},"wins":{"type":"number"},"saves":{"type":"number"},"shutouts":{"type":"number"},"gaa":{"type":"string","description":"Goals against average formatted with two decimals. Played zero values are returned as `0.00`; omitted for `reportType=both` or when source data only contains a non-played zero placeholder."},"savePercent":{"type":"string","description":"Save percentage formatted with three decimals. Played zero values are returned as `0.000`; omitted for `reportType=both` or when source data only contains a non-played zero placeholder."},"score":{"type":"number"},"scoreAdjustedByGames":{"type":"number","description":"Stabilized per-game pace score."},"scores":{"type":"object","additionalProperties":{"type":"number"}},"scoreByPosition":{"type":"number"},"scoreByPositionAdjustedByGames":{"type":"number","description":"Stabilized per-game pace score compared to the same position only."},"scoresByPosition":{"type":"object","additionalProperties":{"type":"number"}}}},"PlayerSeasonData":{"type":"object","description":"Per-season row nested under `CombinedPlayer.seasons`. Omits `name` because the combined root object already includes it.","required":["season","id","games","goals","assists","points","plusMinus","penalties","shots","ppp","shp","hits","blocks","score","scoreAdjustedByGames"],"properties":{"season":{"type":"integer"},"id":{"type":"string","description":"Fantrax player identifier extracted from `*id*` in CSV name field."},"position":{"type":"string"},"games":{"type":"number"},"goals":{"type":"number"},"assists":{"type":"number"},"points":{"type":"number"},"plusMinus":{"type":"number"},"penalties":{"type":"number"},"shots":{"type":"number"},"ppp":{"type":"number"},"shp":{"type":"number"},"hits":{"type":"number"},"blocks":{"type":"number"},"score":{"type":"number"},"scoreAdjustedByGames":{"type":"number","description":"Stabilized per-game pace score."},"scores":{"type":"object","additionalProperties":{"type":"number"},"description":"Per-stat score breakdown."},"scoreByPosition":{"type":"number"},"scoreByPositionAdjustedByGames":{"type":"number","description":"Stabilized per-game pace score compared to the same position only."},"scoresByPosition":{"type":"object","additionalProperties":{"type":"number"}}}},"GoalieSeasonData":{"type":"object","description":"Per-season row nested under `CombinedGoalie.seasons`. Omits `name` because the combined root object already includes it.","required":["season","id","games","goals","assists","points","penalties","ppp","shp","wins","saves","shutouts","score","scoreAdjustedByGames"],"properties":{"season":{"type":"integer"},"id":{"type":"string","description":"Fantrax goalie identifier extracted from `*id*` in CSV name field."},"position":{"type":"string"},"games":{"type":"number"},"goals":{"type":"number"},"assists":{"type":"number"},"points":{"type":"number"},"penalties":{"type":"number"},"ppp":{"type":"number"},"shp":{"type":"number"},"wins":{"type":"number"},"saves":{"type":"number"},"shutouts":{"type":"number"},"gaa":{"type":"string","description":"Goals against average formatted with two decimals. Played zero values are returned as `0.00`; omitted for `reportType=both` or when source data only contains a non-played zero placeholder."},"savePercent":{"type":"string","description":"Save percentage formatted with three decimals. Played zero values are returned as `0.000`; omitted for `reportType=both` or when source data only contains a non-played zero placeholder."},"score":{"type":"number"},"scoreAdjustedByGames":{"type":"number","description":"Stabilized per-game pace score."},"scores":{"type":"object","additionalProperties":{"type":"number"}},"scoreByPosition":{"type":"number"},"scoreByPositionAdjustedByGames":{"type":"number","description":"Stabilized per-game pace score compared to the same position only."},"scoresByPosition":{"type":"object","additionalProperties":{"type":"number"}}}},"CombinedPlayer":{"allOf":[{"$ref":"#/components/schemas/Player"},{"type":"object","required":["seasons"],"properties":{"seasons":{"type":"array","items":{"$ref":"#/components/schemas/PlayerSeasonData"}}}}]},"CombinedGoalie":{"allOf":[{"$ref":"#/components/schemas/Goalie"},{"type":"object","required":["seasons"],"properties":{"seasons":{"type":"array","items":{"$ref":"#/components/schemas/GoalieSeasonData"}}}}]},"PlayoffLeaderboardEntry":{"type":"object","required":["teamId","teamName","appearances","championships","finals","conferenceFinals","secondRound","firstRound","seasons","tieRank"],"properties":{"teamId":{"type":"string"},"teamName":{"type":"string"},"appearances":{"type":"integer","description":"Total playoff appearances (sum of championships, finals, conferenceFinals, secondRound, and firstRound)."},"championships":{"type":"integer"},"finals":{"type":"integer"},"conferenceFinals":{"type":"integer"},"secondRound":{"type":"integer"},"firstRound":{"type":"integer"},"seasons":{"type":"array","items":{"$ref":"#/components/schemas/PlayoffLeaderboardSeason"}},"tieRank":{"type":"boolean","description":"True when this entry's record matches the previous entry's record."}}},"PlayoffLeaderboardSeason":{"type":"object","required":["season","round","key"],"properties":{"season":{"type":"integer"},"round":{"type":"integer","description":"Playoff round reached: 0=not qualified, 1-4=round reached, 5=championship."},"key":{"type":"string","enum":["championship","final","conferenceFinal","secondRound","firstRound","notQualified"]}}},"RegularLeaderboardEntry":{"type":"object","required":["teamId","teamName","seasons","wins","losses","ties","points","divWins","divLosses","divTies","winPercent","divWinPercent","pointsPercent","regularTrophies","tieRank"],"properties":{"teamId":{"type":"string"},"teamName":{"type":"string"},"seasons":{"type":"array","items":{"$ref":"#/components/schemas/RegularLeaderboardSeason"}},"wins":{"type":"integer"},"losses":{"type":"integer"},"ties":{"type":"integer"},"points":{"type":"integer"},"divWins":{"type":"integer"},"divLosses":{"type":"integer"},"divTies":{"type":"integer"},"winPercent":{"type":"number"},"divWinPercent":{"type":"number"},"pointsPercent":{"type":"number","description":"Achieved points as a fraction of the maximum possible points (wins×2 + ties) / (games×2)."},"regularTrophies":{"type":"integer","description":"Number of seasons the team finished rank 1 in regular standings."},"tieRank":{"type":"boolean","description":"True when this entry's record matches the previous entry's record."}}},"RegularLeaderboardSeason":{"type":"object","required":["season","regularTrophy","wins","losses","ties","points","divWins","divLosses","divTies","winPercent","divWinPercent","pointsPercent"],"properties":{"season":{"type":"integer"},"regularTrophy":{"type":"boolean"},"wins":{"type":"integer"},"losses":{"type":"integer"},"ties":{"type":"integer"},"points":{"type":"integer"},"divWins":{"type":"integer"},"divLosses":{"type":"integer"},"divTies":{"type":"integer"},"winPercent":{"type":"number"},"divWinPercent":{"type":"number"},"pointsPercent":{"type":"number"}}},"TransactionLeaderboardEntry":{"type":"object","required":["teamId","teamName","claims","drops","trades","players","goalies","seasons","tieRank"],"properties":{"teamId":{"type":"string"},"teamName":{"type":"string"},"claims":{"type":"integer"},"drops":{"type":"integer"},"trades":{"type":"integer","description":"Count of distinct trade participations by `season + occurred_at`."},"players":{"type":"integer","description":"Count of distinct skater Fantrax entity IDs the team has rostered."},"goalies":{"type":"integer","description":"Count of distinct goalie Fantrax entity IDs the team has rostered."},"seasons":{"type":"array","items":{"$ref":"#/components/schemas/TransactionLeaderboardSeason"}},"tieRank":{"type":"boolean","description":"True when this entry's record matches the previous entry's record."}}},"TransactionLeaderboardSeason":{"type":"object","required":["season","claims","drops","trades","players","goalies"],"properties":{"season":{"type":"integer"},"claims":{"type":"integer"},"drops":{"type":"integer"},"trades":{"type":"integer","description":"Count of distinct trade participations by `season + occurred_at`."},"players":{"type":"integer","description":"Count of distinct skater Fantrax entity IDs the team rostered that season."},"goalies":{"type":"integer","description":"Count of distinct goalie Fantrax entity IDs the team rostered that season."}}},"FinalsLeaderboardEntry":{"type":"object","required":["season","wonOnHomeTiebreak","winnerTeamId","winnerTeamName","awayTeam","homeTeam","categories","rates","factors"],"properties":{"season":{"type":"integer"},"wonOnHomeTiebreak":{"type":"boolean"},"winnerTeamId":{"type":"string"},"winnerTeamName":{"type":"string"},"awayTeam":{"$ref":"#/components/schemas/FinalsLeaderboardTeam"},"homeTeam":{"$ref":"#/components/schemas/FinalsLeaderboardTeam"},"categories":{"type":"array","items":{"$ref":"#/components/schemas/FinalsLeaderboardCategory"}},"rates":{"$ref":"#/components/schemas/FinalsLeaderboardRates"},"factors":{"$ref":"#/components/schemas/FinalsLeaderboardFactors"}}},"FinalsLeaderboardTeam":{"type":"object","required":["teamId","teamName","teamAbbr","score","playedGames","totals"],"properties":{"teamId":{"type":"string"},"teamName":{"type":"string"},"teamAbbr":{"type":"string"},"score":{"$ref":"#/components/schemas/FinalsLeaderboardScore"},"playedGames":{"$ref":"#/components/schemas/FinalsLeaderboardPlayedGames"},"totals":{"$ref":"#/components/schemas/FinalsLeaderboardTeamTotals"}}},"FinalsLeaderboardScore":{"type":"object","required":["matchPoints","categoriesWon","categoriesLost","categoriesTied"],"properties":{"matchPoints":{"type":"number"},"categoriesWon":{"type":"integer"},"categoriesLost":{"type":"integer"},"categoriesTied":{"type":"integer"}}},"FinalsLeaderboardPlayedGames":{"type":"object","required":["total","skaters","goalies"],"properties":{"total":{"type":"integer"},"skaters":{"type":"integer"},"goalies":{"type":"integer"}}},"FinalsLeaderboardTeamTotals":{"type":"object","required":["goals","assists","points","plusMinus","penalties","shots","ppp","shp","hits","blocks","wins","gaa","saves","savePercent","shutouts"],"properties":{"goals":{"type":"integer"},"assists":{"type":"integer"},"points":{"type":"integer"},"plusMinus":{"type":"integer"},"penalties":{"type":"integer"},"shots":{"type":"integer"},"ppp":{"type":"integer"},"shp":{"type":"integer"},"hits":{"type":"integer"},"blocks":{"type":"integer"},"wins":{"type":"integer"},"gaa":{"type":"number","nullable":true},"saves":{"type":"integer"},"savePercent":{"type":"number","nullable":true},"shutouts":{"type":"integer"}}},"FinalsStatKey":{"type":"string","enum":["goals","assists","points","plusMinus","penalties","shots","ppp","shp","hits","blocks","wins","gaa","saves","savePercent","shutouts"]},"FinalsLeaderboardCategory":{"type":"object","required":["statKey","awayValue","homeValue","winnerTeamId"],"properties":{"statKey":{"$ref":"#/components/schemas/FinalsStatKey"},"awayValue":{"type":"number","nullable":true},"homeValue":{"type":"number","nullable":true},"winnerTeamId":{"type":"string","nullable":true}}},"FinalsLeaderboardRates":{"type":"object","required":["winRate","deservedToWinRate"],"properties":{"winRate":{"type":"number","description":"The actual finals scoreboard share for the champion as a fraction between 0 and 1, rounded to three decimals. Example: `0.567` means `56.7%`."},"deservedToWinRate":{"type":"number","description":"A weighted, games-adjusted finals strength model returned as a fraction between 0 and 1, rounded to three decimals."}}},"FinalsLeaderboardFactors":{"type":"object","required":["awayTeam","homeTeam"],"properties":{"awayTeam":{"$ref":"#/components/schemas/FinalsLeaderboardFactorSet"},"homeTeam":{"$ref":"#/components/schemas/FinalsLeaderboardFactorSet"}}},"FinalsLeaderboardFactorSet":{"type":"object","required":["offence","physical","goalies"],"properties":{"offence":{"type":"number","description":"Share of combined offensive category production (`goals`, `assists`, `shots`, `ppp`, `shp`) as a fraction between 0 and 1, rounded to three decimals."},"physical":{"type":"number","description":"Share of combined physical category production (`hits`, `blocks`, `penalties`) as a fraction between 0 and 1, rounded to three decimals."},"goalies":{"type":"number","description":"Hybrid goalie matchup share returned as a fraction between 0 and 1, rounded to three decimals. Blends count-stat volume (`wins`, `saves`, `shutouts`) with goalie-rate efficiency (`gaa`, `savePercent`)."}}}}},"security":[{"apiKey":[]}],"paths":{"/":{"get":{"summary":"Service info","description":"Returns a plain-text message confirming the service is running.","security":[],"responses":{"200":{"description":"Service is running.","content":{"text/plain":{"schema":{"type":"string","example":"Hello there! The FFHL Stats Service is running."}}}}}}},"/health":{"get":{"summary":"Health check","security":[],"responses":{"200":{"description":"Service is healthy.","content":{"application/json":{"schema":{"type":"object","required":["status","uptimeSeconds","timestamp"],"properties":{"status":{"type":"string","example":"ok"},"uptimeSeconds":{"type":"number"},"timestamp":{"type":"string","format":"date-time"}}}}}}}}},"/healthcheck":{"get":{"summary":"Health check (alias for /health)","security":[],"responses":{"200":{"description":"Service is healthy.","content":{"application/json":{"schema":{"type":"object","required":["status","uptimeSeconds","timestamp"],"properties":{"status":{"type":"string","example":"ok"},"uptimeSeconds":{"type":"number"},"timestamp":{"type":"string","format":"date-time"}}}}}}}}},"/openapi.json":{"get":{"summary":"OpenAPI spec (JSON)","security":[],"responses":{"200":{"description":"OpenAPI 3.0.3 spec as JSON.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api-docs":{"get":{"summary":"Interactive API documentation (Swagger UI)","security":[],"responses":{"200":{"description":"Swagger UI HTML page.","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/last-modified":{"get":{"summary":"Last data import timestamp","parameters":[{"$ref":"#/components/parameters/teamId"}],"responses":{"200":{"description":"Timestamp of the most recent data import.","content":{"application/json":{"schema":{"type":"object","properties":{"lastModified":{"type":"string","format":"date-time","nullable":true,"description":"ISO 8601 timestamp, or null if no import has run."}}}}}},"401":{"description":"Missing or invalid API key."}}}},"/teams":{"get":{"summary":"Available teams","responses":{"200":{"description":"List of all teams.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Team"}}}}},"401":{"description":"Missing or invalid API key."}}}},"/draft/entry":{"get":{"summary":"Entry draft history grouped by drafted team and season","description":"Returns the imported FFHL entry draft history from `entry_draft_picks`.\nTeams are grouped alphabetically by current fantasy-team name.\nEach team's `seasons` array is sorted newest-first, and picks within one season\nare sorted by draft order.\nTeam roots also include a `summary` object with highest-pick, average-position,\npick-count aggregates, played counts, played percentages, and a fixed round\nbreakdown calculated from the grouped data.\nEach pick also includes `playedInLeague` and `playedForDraftingTeam` flags based\non whether the linked Fantrax entity has games-played rows in `players` or\n`goalies`.\nPicks with `draftedPlayer: null` stay in the season pick lists but are excluded from\nall summary calculations.\n","responses":{"200":{"description":"Entry draft picks grouped by drafted fantasy team and season.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntryDraftTeamGroup"}}}}},"401":{"description":"Missing or invalid API key."}}}},"/draft/original":{"get":{"summary":"Opening draft history grouped by drafted team","description":"Returns the imported FFHL opening draft history from `opening_draft_picks`.\nTeams are grouped alphabetically by current fantasy-team name and each group's\npicks are sorted by draft order.\n","responses":{"200":{"description":"Opening draft picks grouped by drafted fantasy team.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OpeningDraftTeamGroup"}}}}},"401":{"description":"Missing or invalid API key."}}}},"/seasons":{"get":{"summary":"Available seasons (defaults to regular)","parameters":[{"$ref":"#/components/parameters/teamId"},{"$ref":"#/components/parameters/startFrom"}],"responses":{"200":{"description":"List of seasons that have data.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Season"}}}}},"400":{"description":"Invalid report type."},"401":{"description":"Missing or invalid API key."}}}},"/seasons/{reportType}":{"get":{"summary":"Available seasons for a report type","parameters":[{"$ref":"#/components/parameters/reportType"},{"$ref":"#/components/parameters/teamId"},{"$ref":"#/components/parameters/startFrom"}],"responses":{"200":{"description":"List of seasons that have data for the given report type.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Season"}}}}},"400":{"description":"Invalid report type."},"401":{"description":"Missing or invalid API key."}}}},"/players/season/{reportType}":{"get":{"summary":"Player stats for the latest available season","parameters":[{"$ref":"#/components/parameters/reportType"},{"$ref":"#/components/parameters/teamId"}],"responses":{"200":{"description":"Player stats array.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Player"}}}}},"400":{"description":"Invalid report type or season not available."},"401":{"description":"Missing or invalid API key."}}}},"/players/season/{reportType}/{season}":{"get":{"summary":"Player stats for a specific season","parameters":[{"$ref":"#/components/parameters/reportType"},{"$ref":"#/components/parameters/season"},{"$ref":"#/components/parameters/teamId"}],"responses":{"200":{"description":"Player stats array.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Player"}}}}},"400":{"description":"Invalid report type or season not available."},"401":{"description":"Missing or invalid API key."}}}},"/players/combined/{reportType}":{"get":{"summary":"Player stats combined across all seasons","description":"Returns each player's stats aggregated across all seasons (from 2012-2013 onwards).\nEach entry includes a `seasons` array with per-season stats and scores.\n","parameters":[{"$ref":"#/components/parameters/reportType"},{"$ref":"#/components/parameters/teamId"},{"$ref":"#/components/parameters/startFrom"}],"responses":{"200":{"description":"Combined player stats array.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CombinedPlayer"}}}}},"400":{"description":"Invalid report type."},"401":{"description":"Missing or invalid API key."}}}},"/goalies/season/{reportType}":{"get":{"summary":"Goalie stats for the latest available season","parameters":[{"$ref":"#/components/parameters/reportType"},{"$ref":"#/components/parameters/teamId"}],"responses":{"200":{"description":"Goalie stats array.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Goalie"}}}}},"400":{"description":"Invalid report type or season not available."},"401":{"description":"Missing or invalid API key."}}}},"/goalies/season/{reportType}/{season}":{"get":{"summary":"Goalie stats for a specific season","parameters":[{"$ref":"#/components/parameters/reportType"},{"$ref":"#/components/parameters/season"},{"$ref":"#/components/parameters/teamId"}],"responses":{"200":{"description":"Goalie stats array.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Goalie"}}}}},"400":{"description":"Invalid report type or season not available."},"401":{"description":"Missing or invalid API key."}}}},"/goalies/combined/{reportType}":{"get":{"summary":"Goalie stats combined across all seasons","description":"Returns each goalie's stats aggregated across all seasons (from 2012-2013 onwards).\n`gaa` and `savePercent` are omitted when `reportType=both` (cannot be combined reliably).\nEach entry includes a `seasons` array with per-season stats.\n","parameters":[{"$ref":"#/components/parameters/reportType"},{"$ref":"#/components/parameters/teamId"},{"$ref":"#/components/parameters/startFrom"}],"responses":{"200":{"description":"Combined goalie stats array.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CombinedGoalie"}}}}},"400":{"description":"Invalid report type."},"401":{"description":"Missing or invalid API key."}}}},"/career/player/{id}":{"get":{"summary":"Career stats for one player","description":"Returns all imported career records for a single Fantrax player ID across all fantasy teams.\nZero-game rows are included and count toward `owned` totals but not `played` totals.\n","parameters":[{"$ref":"#/components/parameters/careerId"}],"responses":{"200":{"description":"Career stats document for one player.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CareerPlayer"}}}},"401":{"description":"Missing or invalid API key."},"404":{"description":"Player not found."}}}},"/career/players":{"get":{"summary":"Career player list","description":"Returns one summary row per player across all fantasy teams.\nZero-game rows count toward owned seasons and teams, but not played counts.\n","responses":{"200":{"description":"Career player list entries.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CareerPlayerListItem"}}}}},"401":{"description":"Missing or invalid API key."}}}},"/career/goalie/{id}":{"get":{"summary":"Career stats for one goalie","description":"Returns all imported career records for a single Fantrax goalie ID across all fantasy teams.\nZero-game rows are included and count toward `owned` totals but not `played` totals.\n","parameters":[{"$ref":"#/components/parameters/careerId"}],"responses":{"200":{"description":"Career stats document for one goalie.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CareerGoalie"}}}},"401":{"description":"Missing or invalid API key."},"404":{"description":"Goalie not found."}}}},"/career/goalies":{"get":{"summary":"Career goalie list","description":"Returns one summary row per goalie across all fantasy teams.\nZero-game rows count toward owned seasons and teams, but not played counts.\n","responses":{"200":{"description":"Career goalie list entries.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CareerGoalieListItem"}}}}},"401":{"description":"Missing or invalid API key."}}}},"/career/highlights/{type}":{"get":{"summary":"Career highlights leaderboard","description":"Returns a paged mixed skater + goalie career highlights leaderboard.\nEach page includes `minAllowed`, the active backend threshold for that highlight type.\n`most-teams-played` and `most-teams-owned` return team-count rows.\n`same-team-seasons-played` and `same-team-seasons-owned` return one row per top team, so the same person can appear multiple times on tied same-team results.\n`most-stanley-cups` returns one row per player/goalie with cup seasons and fantasy teams.\n`reunion-king` returns one row per top reunion team, so the same person can appear multiple\ntimes on tied reunion results, and includes reunion transactions with ISO dates plus whether\nthe player returned by claim or trade.\n`stash-king` returns the top same-team zero-game season counts, similar to\n`same-team-seasons-owned` but counting only team seasons where both regular and playoff\ngames stayed at zero.\n`regular-grinder-without-playoffs` returns total regular-season games plus the played fantasy teams\nfor players/goalies who never recorded a playoff appearance.\n`most-trades`, `most-claims`, and `most-drops` return total matched player/goalie transaction counts\nplus per-team breakdowns sorted by descending transaction count. Trade counts use the fantasy team that\ntraded the player away.\nMinimum cutoffs are 4 teams for `most-teams-played`, 5 teams for `most-teams-owned`,\n8 same-team seasons for `same-team-seasons-played`, 10 same-team seasons for\n`same-team-seasons-owned`, 2 cups for `most-stanley-cups`, 2 reunions for\n`reunion-king`, 10 stash counts for `stash-king`, 60 games for\n`regular-grinder-without-playoffs`, 4 trades for `most-trades`, and 3 claims/drops for\n`most-claims` / `most-drops`.\n","parameters":[{"name":"type","in":"path","required":true,"description":"Career highlight leaderboard type.","schema":{"$ref":"#/components/schemas/CareerHighlightType"}},{"$ref":"#/components/parameters/skip"},{"$ref":"#/components/parameters/take"}],"responses":{"200":{"description":"Paged career highlight results.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/CareerTeamCountHighlightPage"},{"$ref":"#/components/schemas/CareerSameTeamHighlightPage"},{"$ref":"#/components/schemas/CareerStanleyCupHighlightPage"},{"$ref":"#/components/schemas/CareerReunionHighlightPage"},{"$ref":"#/components/schemas/CareerStashHighlightPage"},{"$ref":"#/components/schemas/CareerRegularGrinderHighlightPage"},{"$ref":"#/components/schemas/CareerTransactionHighlightPage"}]}}}},"400":{"description":"Invalid highlight type or paging params."},"401":{"description":"Missing or invalid API key."}}}},"/leaderboard/playoffs":{"get":{"summary":"All-time playoff leaderboard","description":"Returns each team's all-time playoff record sorted by best result.\nIncludes `tieRank: true` when the entry's record matches the previous entry.\n","responses":{"200":{"description":"Playoff leaderboard entries.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlayoffLeaderboardEntry"}}}}},"401":{"description":"Missing or invalid API key."}}}},"/leaderboard/regular":{"get":{"summary":"All-time regular season leaderboard","description":"Returns each team's all-time regular season record aggregated across all seasons,\nsorted by total points then total wins.\nIncludes `tieRank: true` when the entry's record matches the previous entry.\n","responses":{"200":{"description":"Regular season leaderboard entries.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RegularLeaderboardEntry"}}}}},"401":{"description":"Missing or invalid API key."}}}},"/leaderboard/transactions":{"get":{"summary":"All-time transaction leaderboard","description":"Returns each team's total claim, drop, and trade counts plus distinct skater/goalie\nFantrax entity totals with a per-season breakdown.\nTrade totals count distinct team participations by `season + occurred_at`.\nPlayer and goalie totals count unique Fantrax entity IDs across roster history.\n","responses":{"200":{"description":"Transaction leaderboard entries.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransactionLeaderboardEntry"}}}}},"401":{"description":"Missing or invalid API key."}}}},"/leaderboard/finals":{"get":{"summary":"Finals matchup leaderboard","description":"Returns one finals matchup summary per imported season, including away/home team details,\ncategory results, a `rates` object with both the actual win share and a modeled\ndeserved-to-win percentage, plus `factors` that split matchup influence into offence,\nphysical play, and goaltending.\n","responses":{"200":{"description":"Finals matchup summaries.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FinalsLeaderboardEntry"}}}}},"401":{"description":"Missing or invalid API key."}}}}}}