Skip to content

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.

FieldArgsTypeDescription
idID!Stable Podium identifier (UUID).
raceNumberInt!1-indexed position of the race on the meeting card.
scheduledTimeDateTime!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.
offTimeDateTimeActual time the race went off. Populated post-race; null until then.
statusRaceStatus!
titleStringRace 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.
titleAbbreviatedStringShort title for compact displays (mobile, navigation). Null if the source did not provide one.
headerStringConditions-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.
raceTypeRaceType!
surfaceSurfaceTypeRacing surface for this race. Null until a surface-bearing feed lands.
distanceDistanceRace distance. Null until a distance-bearing feed lands.
classStringBHA race class ('1''7') for non-pattern races. Null when a pattern designation applies instead — use pattern.
patternPatternTypePattern/Grade designation for prestige races (Group 1–3, Listed, Grade 1–3). Null for non-pattern races — use class instead.
handicapBoolean!True when weights are assigned by official rating rather than race conditions.
eligibilityRaceEligibility
goingOfficialGoingTypeRace-level going override. When null, the race inherits meeting.conditions.going.official.
prizeMoneyPrizeMoney
declarationStageDeclarationStage!
sourceDeclarationTypeStringProvider-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.
televisedBoolean!True when the race is scheduled to be televised.
maxRunnersIntSafety 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.
activeRunnerCountInt!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.
winningTimeSecondsFloatWinning time in seconds. Populated once the race result has been settled.
stewardsInquiryStringStatus of any stewards’ inquiry (NO_INQUIRY, STEWARDS_MAY_AFFECT, STEWARDS_NOT_AFFECT). Null when no inquiry has been called.
stewardsObjectionStringStatus of any objection raised. Null when no objection has been lodged.
stewardsResolutionStringResolution of an inquiry or objection (RESULT_STANDS, AMENDED_RESULT). Null until the matter is resolved.
legacyIdsLegacyIds
jockeyConditionJockeyConditionJockey-condition component of the race header (e.g. LADIES, APPRENTICE). Derived by auto-classification, editor-reviewable.
experienceConditionExperienceConditionExperience-condition component of the race header (NOVICE, MAIDEN).
commerceConditionCommerceConditionCommerce-condition component of the race header (SELLER, CLAIMER, AUCTION).
handicapOptionHandicapOptionGranular handicap classification that supplements the boolean handicap field — distinguishes handicaps, conditional handicaps, conditions races, and stakes races.
headerConfidenceHeaderConfidenceAuto-classification confidence (HIGH, MEDIUM, LOW, MANUAL). MANUAL indicates an editor set the classification directly.
headerStatusHeaderStatusEditorial workflow status for the header classification (auto-classified, editor-confirmed, editor-corrected, pending review).
headerClassifiedAtDateTimeWhen the auto-classification pipeline last ran for this race.
headerReviewedByStringEditor who confirmed or corrected the classification, if any.
headerReviewedAtDateTimeWhen the editor review took place.
headerClassificationDetailHeaderClassificationDetailPer-field provenance and plausibility-rule diagnostics for the classification. Drives UI cues for uncertain fields.
abandonedReasonStringReason if the race has been abandoned (e.g. 'Course inspection failed'). Null otherwise.
abandonedAtDateTimeTimestamp the race was abandoned. Null otherwise.
meetingMeeting!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.
sourceString!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.
versionInt!Optimistic-locking version counter — increments on every write.
createdAtDateTime!
updatedAtDateTime!