Skip to content

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

FieldArgsTypeDescription
id—ID! required—
name—String! required—
displayName—StringOperator-curated display name (courses.display_name) — editable via updateVenue.
shortName—String—
tla—StringThree-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! requiredISO 3166-1 alpha-2 country code (courses.country_code).
region—String—
city—String—
timeZone—String! requiredIANA time-zone identifier (e.g. Europe/London).
capacity—IntSpectator capacity (courses.capacity). Null where unknown.
openedYear—IntYear the venue opened (courses.opened_year). Null where unknown.
version—Int! requiredOptimistic-locking version (courses.version) — pass as expectedVersion on updateVenue.
sportId—ID! requiredThe 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!]! requiredEvery 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! requiredWhen the venue row was first inserted (courses.created_at).
aliases—[ParticipantAlias!]! requiredEmpty — venues are not part of the M22 participant merge flow, but Entity requires the field.