FootballPlayerRankingEntry
Object type
One ranked player within a leaderboard.
Fields
Section titled “Fields”| Field | Args | Type | Description |
|---|---|---|---|
rank | — | Int! required | Standard competition rank — tied players SHARE a place and the next distinct value skips to its ordinal position (1, 2, 2, 2, 5). Deliberately NOT dense ranking, which is defined by having no gaps (1, 2, 2, 2, 3), so max(rank) is NOT a count of distinct tiers. The feed carries no rank of its own and 97.5% of ranked rows tie on value early in a season, so a unique 1..N would assert an ordering Opta never published. |
player | — | Individual | The ranked player. NULLABLE BY DESIGN: a soft-deleted or merged participant degrades to a null edge while the ranked row still surfaces — matching StandingEntry.individual. Making this non-null would let one merged player collapse the whole table into an error. |
value | — | Int | The metric tally this row is ranked on. Nullable: a ranked row whose stored tally is missing or unreadable is a data-integrity problem, and null reports that honestly rather than inventing a 0 that would be indistinguishable from a real zero. |
club | — | Team | The club Opta attributed to this row in the delivery that produced it (POD-787). Read from the leaderboard’s own feed row, NOT from the player’s canonical current club. Individual.currentTeam says where they play NOW, so reading it would badge a transferred player with a club they had nothing to do with, and would degrade further the older the season is. Deliberately weaker than “the club when the tally was earned”, because the storage cannot promise that: entries are DELETEd and re-INSERTed from the arriving payload whenever the compare signature moves, so metrics is rebuilt each time and this converges on whatever club the LATEST changing delivery named. For a mid-season transfer that ends up being the new club. Closed seasons are worse still — Opta republishes only the current season, so a season that has stopped being delivered keeps whatever it last held, or null if it was never written. It is the best available attribution, and strictly better than currentTeam, but it is a point-in-time provider statement rather than a historical guarantee. Nullable, and a null does NOT mean “no club” — see clubName. The club is resolved through the crosswalk resolve-only (never minted), so an unmapped club yields a null here while the row keeps its label, and a soft-deleted club degrades the same way. A MERGED club does not degrade to null: the id was resolved at ingest time, so the alias is followed to the surviving club and that is what is returned. Returning the retired row — or a null — would misattribute a tally that the surviving club now owns. |
clubName | — | String | The club’s provider-published name, carried whenever the feed named one — independent of whether club resolved. This is the honest fallback label: a ranked row whose club could not be resolved is still known to belong to “Monterrey”, and rendering that as text is better than showing nothing. Present with club too, so a caller never has to choose between a link and a name. |
penaltyGoals | — | Int | Penalties among those goals. Present on the GOALS metric only; null elsewhere by construction. |
minutesPlayed | — | Int | Minutes played, where the feed carried it, ROUNDED to whole minutes — some provider formats express this fractionally, and rounding is preferred to rejecting the value. |