Race
A single race within a meeting. Child of Meeting; parent container for
Runner. Carries the race’s classification (type, surface, distance,
class/pattern, handicap), eligibility, prize money, conditions overrides,
and full lifecycle status. The auto-classified header-decomposition fields
(jockeyCondition, experienceCondition, etc.) summarise the race’s
conditions of entry in a queryable form.
Fields
Section titled “Fields”| Field | Args | Type | Description |
|---|---|---|---|
id | — | ID! | Stable Podium identifier (UUID). |
raceNumber | — | Int! | 1-indexed position of the race on the meeting card. |
scheduledTime | — | DateTime! | Advertised off-time (with timezone). May change pre-race-day if the card is reshuffled; on race day this value is fixed even if the race starts late — the actual start time is captured on offTime. |
offTime | — | DateTime | Actual time the race went off. Populated post-race; null until then. |
status | — | RaceStatus! | — |
title | — | String | Race title from a titled feed (ED/OD/PD/IHRB/Calendar XML/RP-Calendar). Null until one lands — clients should render Race ${raceNumber} as the placeholder. |
titleAbbreviated | — | String | Short title for compact displays (mobile, navigation). Null if the source did not provide one. |
header | — | String | Conditions-of-race header — the structured eligibility/penalty text that governs the race (distinct from title). Operationally important: gets decomposed into the jockeyCondition / experienceCondition / commerceCondition / handicapOption fields by the auto-classifier. |
raceType | — | RaceType! | — |
surface | — | SurfaceType | Racing surface for this race. Null until a surface-bearing feed lands. |
distance | — | Distance | Race distance. Null until a distance-bearing feed lands. |
class | — | String | BHA race class ('1'–'7') for non-pattern races. Null when a pattern designation applies instead — use pattern. |
pattern | — | PatternType | Pattern/Grade designation for prestige races (Group 1–3, Listed, Grade 1–3). Null for non-pattern races — use class instead. |
handicap | — | Boolean! | True when weights are assigned by official rating rather than race conditions. |
eligibility | — | RaceEligibility | — |
goingOfficial | — | GoingType | Race-level going override. When null, the race inherits meeting.conditions.going.official. |
prizeMoney | — | PrizeMoney | — |
declarationStage | — | DeclarationStage! | — |
sourceDeclarationType | — | String | Provider-specific declaration file type that produced the current declarationStage (e.g. WEATHERBYS_OD, IHRB_OVERNIGHT). Use for traceability back to the upstream feed; for lifecycle logic prefer the canonical declarationStage enum. |
televised | — | Boolean! | True when the race is scheduled to be televised. |
maxRunners | — | Int | Safety factor — the maximum declared runners the course/feed allows for this race. Sourced from Weatherbys RP-Calendar or the XML calendar feed; null until either lands. Use as the denominator for “active / max” displays. |
activeRunnerCount | — | Int! | Active declared runner count — excludes NON_DECLARED, NON_RUNNER, WITHDRAWN, and DISQUALIFIED entries. Use as a cheap “active runners” badge on race lists / tables where the full runners[] array would be over-fetch. |
winningTimeSeconds | — | Float | Winning time in seconds. Populated once the race result has been settled. |
stewardsInquiry | — | String | Status of any stewards’ inquiry (NO_INQUIRY, STEWARDS_MAY_AFFECT, STEWARDS_NOT_AFFECT). Null when no inquiry has been called. |
stewardsObjection | — | String | Status of any objection raised. Null when no objection has been lodged. |
stewardsResolution | — | String | Resolution of an inquiry or objection (RESULT_STANDS, AMENDED_RESULT). Null until the matter is resolved. |
legacyIds | — | LegacyIds | — |
jockeyCondition | — | JockeyCondition | Jockey-condition component of the race header (e.g. LADIES, APPRENTICE). Derived by auto-classification, editor-reviewable. |
experienceCondition | — | ExperienceCondition | Experience-condition component of the race header (NOVICE, MAIDEN). |
commerceCondition | — | CommerceCondition | Commerce-condition component of the race header (SELLER, CLAIMER, AUCTION). |
handicapOption | — | HandicapOption | Granular handicap classification that supplements the boolean handicap field — distinguishes handicaps, conditional handicaps, conditions races, and stakes races. |
headerConfidence | — | HeaderConfidence | Auto-classification confidence (HIGH, MEDIUM, LOW, MANUAL). MANUAL indicates an editor set the classification directly. |
headerStatus | — | HeaderStatus | Editorial workflow status for the header classification (auto-classified, editor-confirmed, editor-corrected, pending review). |
headerClassifiedAt | — | DateTime | When the auto-classification pipeline last ran for this race. |
headerReviewedBy | — | String | Editor who confirmed or corrected the classification, if any. |
headerReviewedAt | — | DateTime | When the editor review took place. |
headerClassificationDetail | — | HeaderClassificationDetail | Per-field provenance and plausibility-rule diagnostics for the classification. Drives UI cues for uncertain fields. |
abandonedReason | — | String | Reason if the race has been abandoned (e.g. 'Course inspection failed'). Null otherwise. |
abandonedAt | — | DateTime | Timestamp the race was abandoned. Null otherwise. |
meeting | — | Meeting! | The parent meeting this race belongs to. |
runners | — | [Runner!]! | All runner entries for this race — declared, reserve, non-runner, and withdrawn alike. Filter on Runner.status for the active field. |
pendingNonRunners | — | [PendingNonRunner!]! | Entries held in PENDING_NON_RUNNER awaiting BHA verification. Empty when none are pending. |
source | — | String! | Origin of the race row. 'manual' for races created via createRace; otherwise the ingestion provider tag (commonly 'ingested'). Drives destructive-action gating: only source = 'manual' races may be deleted; ingested races use abandonRace. |
version | — | Int! | Optimistic-locking version counter — increments on every write. |
createdAt | — | DateTime! | — |
updatedAt | — | DateTime! | — |