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 — so a venue is sport-scoped via courses.sport_id (football stadiums,
basketball arenas, …). 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 | — |
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. |