Horse
Object type
Implements: Entity
Fields
Section titled “Fields”| Field | Args | Type | Description |
|---|---|---|---|
id | — | ID! required | — |
name | — | String! required | — |
displayName | — | String | — |
countryOfBirth | — | String! required | — |
sex | — | HorseSex | Sex under the racing-age convention (POD-988). The stored value is what the provider supplied — Weatherbys and IHRB send the birth vocabulary for life — so this field derives the exposed value: FILLY reads as MARE and COLT as HORSE once the horse has reached the racing jurisdiction’s threshold age (5 in GB, IE, FR, AE, QA, SA, BH, ZA, US, JP; 4 in AU, NZ, BR, CL, UY, PE, KR, DE; 3 in AR) on its official birthday (1 January, or 1 August for horses bred in AU, NZ, ZA, BR, CL, UY, PE or AR; any other countryOfBirth takes 1 January). Through Runner.horse and CloseUpComment.horse the jurisdiction is the race’s course country and the age is reckoned at the meeting date; elsewhere it is reckoned today (UTC) under the horse’s countryOfBirth. GELDING, RIG, MARE and HORSE pass through unchanged, as does a horse with no plausible yearBorn. updateHorse(sex:) edits the stored value, which this field may still age up. Rule: packages/types/src/racing-sex.ts. |
colour | — | HorseColour | — |
yearBorn | — | Int | — |
sire | — | HorseRef | Sire reference — canonical horse when linked (REQ-025), else name-only. |
dam | — | HorseRef | Dam reference — canonical horse when linked (REQ-025), else name-only. |
damSire | — | HorseRef | Dam-sire reference — canonical horse when linked (REQ-025), else name-only. |
progeny | — | [Horse!]! required | Progeny — this horse’s IMMEDIATE offspring: canonical horses whose sire OR dam resolves to this horse (POD-355, REQ-027). Does NOT include the dam-sire (maternal grandsire) edge — those are a further generation, not direct offspring. Derived read-only from the breeding graph; each entry is a full canonical Horse so the Relatives surface can reuse the registry’s horse table columns (name / country / year-born / sex / sire / dam) and click through to each offspring’s profile. Empty when this horse has no recorded offspring. Bounded by name to a sensible cap (damline / full pedigree traversal are a later refinement, OQ-A12). Merge-aware (RAC-9872): a foal whose sire or dam FK points at a horse since merged into this one counts as this horse’s progeny; a foal that has itself been merged away is listed once, as its surviving record; and no member of this horse’s merge cluster is ever listed as its own progeny. |
bred | — | String | — |
officialRating | — | Int | — |
rprRating | — | Int | — |
topspeedRating | — | Int | — |
retired | — | Boolean! required | — |
deceased | — | Boolean! required | — |
breeder | — | Breeder | — |
version | — | Int! required | Optimistic-locking version (participants.version) — pass as expectedVersion on updateHorse. |
sportId | — | ID! required | — |
createdAt | — | DateTime! required | When the participant row was first inserted (participants.created_at). |
aliases | — | [ParticipantAlias!]! required | Records merged into this canonical via the M22 merge flow (REQ-009). |
disciplineRatings | — | [DisciplineRating!]! required | Most-recent official rating per discipline (Turf-Flat / Jump / All-Weather), derived from run history. |
careerWinnings | — | [MonetaryAmount!]! required | Total prize money this horse has earned across its career (POD-539), one entry per currency. Summed from the same per-run derivation as Runner.winnings, so the total always equals the sum of the per-run figures. Prize breakdowns mix currencies across territories and no FX conversion is applied, so amounts are reported per currency and never combined into one figure. An absolute career figure — only runs that actually earned contribute, so it does not move with the history-list status filter. Empty when the horse has no recorded winnings. Ordered by raw amount descending purely for stable display; because no FX is applied, the order is not meaningful across currencies (a larger raw number in one currency is not “more” than a smaller one in another). Do not infer relative value from position. Alias-aware (RAC-9858): runs recorded under a horse since merged into this one count too. |
silkHistory | limit: Int | [HorseSilkHistoryEntry!]! required | Silks this horse has worn across its career, most recent first (POD-83). Mirrors the top-level horseSilkHistory query. |
trainer | — | Trainer | Current trainer (POD-615) — the open horse_trainer_history period (ended_on IS NULL). A horse has at most one current trainer; null when none is recorded. Distinct from the per-race snapshot exposed on Runner.trainer. |
ownership | — | [Ownership!]! required | Current owners (POD-615) — all open horse_ownership_history periods (ended_on IS NULL). Owners may be concurrent (a syndicate), so this is a list; empty when none is recorded. Distinct from the per-race snapshot on Runner.ownership. |
upcomingEntryCount | excludeRaceId: ID | Int! required | Count of this horse’s active future entries in the next 7 days (“runs again”) — excludes finished races and inactive entries. Batched per request, so a race card can show the indicator for every runner in one round trip. > 0 means the horse is declared to run again soon; use entriesForParticipant(futureOnly) for the detail list. Pass excludeRaceId (the race being viewed) so an upcoming race doesn’t count its own entry — keeping the count aligned with the detail list. |