Venue
Object type
A venue / stadium / arena surfaced as a registry entity (POD-455). Backed by
the shared courses table — the same rows that Course exposes on the racing
side. A venue is sport-scoped via the course_sports join (POD-718), because a
real place can host several sports (an arena holding both basketball games and
an F1 weekend) and must be findable under every one of them. Edit-only in v1:
operators correct provider-seeded fields but do not manually mint venues, and
there is no merge flow, so aliases is always empty.
Implements: Entity
Fields
Section titled “Fields”| Field | Args | Type | Description |
|---|---|---|---|
id | — | ID! required | — |
name | — | String! required | — |
displayName | — | String | Operator-curated display name (courses.display_name) — editable via updateVenue. |
shortName | — | String | — |
tla | — | String | Three-letter abbreviation. Often null for non-racing venues (courses.tla is nullable since migration 134). Read-only — part of the (tla, country) uniqueness key. |
countryCode | — | String! required | ISO 3166-1 alpha-2 country code (courses.country_code). |
region | — | String | — |
city | — | String | — |
timeZone | — | String! required | IANA time-zone identifier (e.g. Europe/London). |
capacity | — | Int | Spectator capacity (courses.capacity). Null where unknown. |
openedYear | — | Int | Year the venue opened (courses.opened_year). Null where unknown. |
version | — | Int! required | Optimistic-locking version (courses.version) — pass as expectedVersion on updateVenue. |
sportId | — | ID! required | The ORIGINATING sport — the sport of the event that first minted this venue (courses.sport_id, written once). NOT the full set: a venue may host several, and this field names only the first one seen. Use sportIds for what is actually played here. |
sportIds | — | [ID!]! required | Every sport played at this venue (course_sports, POD-718). Always contains at least sportId. This is what the sport-scoped venue search matches on, so a cross-sport venue is discoverable under each of these. |
createdAt | — | DateTime! required | When the venue row was first inserted (courses.created_at). |
aliases | — | [ParticipantAlias!]! required | Empty — venues are not part of the M22 participant merge flow, but Entity requires the field. |