Runner
Object type
Fields
Section titled “Fields”| Field | Args | Type | Description |
|---|---|---|---|
id | — | ID! required | — |
status | — | RunnerStatus! required | — |
cloth | — | Int | — |
reservePosition | — | Int | Reserve-runner ordering within the race (R1, R2, …). Non-null only when status is RESERVE; the entries_reserve_position_only_when_reserve check constraint enforces the invariant at the database level. Sourced from the IHRB reserve="y" attribute at ingest, or set by operators when manually marking a runner as a reserve. |
stall | — | Int | — |
race | — | Race | The parent race this runner is entered into. Useful for entry-list views (e.g. a horse’s form table) where each row needs its own race context. Nullable: races are soft-deleted (deleted_at IS NOT NULL) but entry rows may still reference them; the loader returns null for those, and we’d rather surface that than nullify the entire Runner via a non-null violation. Form-history queries already filter out soft-deleted races. |
horse | — | Horse | — |
jockey | — | Jockey | — |
trainer | — | Trainer | — |
ownership | — | [Ownership!] | — |
silk | — | Silk | — |
weight | — | Weight! required | — |
officialRating | — | Int | — |
adjustedRating | — | Int | — |
overweight | — | Int | Overweight carried (lb) — jockey could not make the allocated weight. |
allowance | — | Int | Apprentice/conditional jockey claim/allowance (lb). |
penalty | — | Int | Penalty weight (lb) for a race won after declaration (operator-entered). |
outOfHandicap | — | Int | Out-of-handicap weight (lb): surplus carried when rated below the race minimum. |
recentForm | — | String | — |
startingPrice | — | Price | — |
equipment | — | [EquipmentItem!] | — |
medication | — | [MedicationType!] | Operator-editable medication (POD-574). WIND_OPERATION is also written by the Weatherbys OD feed (POD-686). |
lastRunDays | — | Int | — |
courseWinner | — | Boolean | — |
distanceWinner | — | Boolean | — |
beatenFavorite | — | Boolean | — |
casualtyReason | — | CasualtyReason | — |
withdrawnReason | — | String | — |
withdrawnAt | — | DateTime | — |
result | — | RunnerResult | — |
winnings | — | MonetaryAmount | Prize money this runner earned in the race (POD-539). Derived at read time from the finishing position against the race’s per-position prize breakdown (Race.prizeMoney.places) — there is no per-entry winnings column. Null (never 0) when the runner did not earn: a non-finisher (no finishing position), an unplaced runner (finished outside the paid places), or a race that carries no prize breakdown. A genuine unpaid finish and a race with no breakdown are indistinguishable here — both surface as null. Dead heats share the pooled prize for the tied placings equally (racing convention). Disqualified / amended results earn against the revised finishing position, matching how placings are officially settled. |
source | — | String! required | Origin of the runner row. 'manual' for runners added via createRunner; 'ingested' (or a provider tag) for runners written by ingestion pipelines. Drives destructive-action gating in the UI: “Delete from race” is offered when the parent race is manual or this runner was added manually. |
version | — | Int! required | — |
createdAt | — | DateTime! required | — |
updatedAt | — | DateTime! required | — |