Data reference
What a given sport can actually return: which statuses its matches move through, which result ids carry the score, which statistics and incidents exist. All of it comes fromGET /v2/sports/{id}, so these tables cannot drift from the API - they can only be stale, and the build refreshes them.
| Sport | id | Statuses | Results | Incidents | Statistics | Details | Clock |
|---|---|---|---|---|---|---|---|
| Alpine skiing | 20 | 9 | 2 | 50 | 10 | 2 | no |
| Am. football | 8 | 30 | 16 | 113 | 121 | 18 | yes |
| Athletics | 53 | 1 | 2 | 42 | 0 | 0 | no |
| Badminton | 29 | 26 | 17 | 83 | 20 | 9 | no |
| Baseball | 7 | 60 | 27 | 146 | 88 | 30 | no |
| Basketball | 1 | 30 | 16 | 103 | 152 | 21 | yes |
| Basketball 3x3 | 80 | 13 | 5 | 84 | 46 | 9 | yes |
| Beach volleyball | 19 | 17 | 11 | 65 | 39 | 5 | no |
| Biathlon | 12 | 9 | 2 | 50 | 24 | 2 | no |
| Bobsleigh | 25 | 7 | 2 | 42 | 22 | 2 | no |
| Bowls | 47 | 22 | 17 | 112 | 2 | 9 | no |
| Boxing | 43 | 40 | 5 | 85 | 72 | 6 | no |
| Cricket | 27 | 24 | 14 | 96 | 64 | 16 | no |
| Cross country | 24 | 9 | 2 | 50 | 6 | 2 | no |
| Curling | 28 | 7 | 2 | 42 | 12 | 1 | no |
| Cycling | 13 | 10 | 0 | 50 | 11 | 7 | no |
| Darts | 17 | 36 | 39 | 137 | 6 | 17 | no |
| Figure Skating | 52 | 7 | 2 | 42 | 8 | 2 | no |
| Formula 1 | 36 | 18 | 2 | 99 | 44 | 20 | no |
| Freestyle skiing | 49 | 7 | 2 | 42 | 22 | 2 | no |
| Futsal | 16 | 22 | 10 | 109 | 62 | 16 | yes |
| Golf | 32 | 17 | 12 | 57 | 218 | 26 | no |
| Handball | 6 | 26 | 12 | 104 | 185 | 17 | yes |
| Ice Hockey | 3 | 25 | 13 | 95 | 137 | 17 | yes |
| Luge | 23 | 7 | 2 | 42 | 22 | 2 | no |
| Moto GP | 38 | 8 | 2 | 50 | 21 | 10 | no |
| Multisport | 255 | 0 | 0 | 42 | 0 | 0 | no |
| Nascar | 37 | 6 | 2 | 42 | 0 | 4 | no |
| Nordic combined | 22 | 8 | 2 | 42 | 14 | 2 | no |
| Padel | 81 | 20 | 15 | 76 | 0 | 10 | no |
| Roller hockey | 83 | 18 | 8 | 42 | 0 | 3 | no |
| Rugby | 15 | 21 | 10 | 99 | 54 | 14 | yes |
| Rugby League | 79 | 20 | 10 | 97 | 41 | 13 | yes |
| Short Track | 50 | 7 | 2 | 42 | 4 | 2 | no |
| Skeleton | 51 | 7 | 2 | 42 | 22 | 2 | no |
| Ski jumping | 11 | 18 | 2 | 82 | 52 | 15 | no |
| Ski Mountaineering | 82 | 7 | 2 | 42 | 6 | 2 | no |
| Snooker | 14 | 81 | 38 | 126 | 34 | 40 | no |
| Snowboarding | 31 | 7 | 2 | 42 | 20 | 2 | no |
| Soccer | 5 | 21 | 10 | 125 | 465 | 23 | yes |
| Speed skating | 21 | 8 | 2 | 42 | 7 | 2 | no |
| Speedway | 26 | 65 | 45 | 130 | 29 | 7 | no |
| Table tennis | 46 | 28 | 21 | 82 | 14 | 11 | no |
| Tennis | 4 | 20 | 21 | 108 | 56 | 13 | no |
| Volleyball | 2 | 20 | 15 | 91 | 79 | 14 | no |
| Waterpolo | 33 | 19 | 9 | 63 | 0 | 12 | yes |
Why this is generated and not written
In the Confluence space the same content is five pages per sport times sixteen sports - about eighty tables kept by hand. Every one of them is derivable from a single endpoint, so keeping them by hand only creates drift that nobody notices. Here the data is the source and the pages are output.
Two things the API does not carry, and which stay hand-written: the prose explainingwhy a field behaves the way it does (see the recipes) and the per-incident notes from support. Those live in the content layer, attached to generated rows.