Skip to content

Horse

Object type

Implements: Entity

FieldArgsTypeDescription
idID! required
nameString! required
displayNameString
countryOfBirthString! required
sexHorseSex
colourHorseColour
yearBornInt
sireHorseRefSire reference — canonical horse when linked (REQ-025), else name-only.
damHorseRefDam reference — canonical horse when linked (REQ-025), else name-only.
damSireHorseRefDam-sire reference — canonical horse when linked (REQ-025), else name-only.
progeny[Horse!]! requiredProgeny — 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).
bredString
officialRatingInt
rprRatingInt
topspeedRatingInt
retiredBoolean! required
deceasedBoolean! required
breederBreeder
versionInt! requiredOptimistic-locking version (participants.version) — pass as expectedVersion on updateHorse.
sportIdID! required
createdAtDateTime! requiredWhen the participant row was first inserted (participants.created_at).
aliases[ParticipantAlias!]! requiredRecords merged into this canonical via the M22 merge flow (REQ-009).
disciplineRatings[DisciplineRating!]! requiredMost-recent official rating per discipline (Turf-Flat / Jump / All-Weather), derived from run history.
careerWinnings[MonetaryAmount!]! requiredTotal 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.
silkHistorylimit: Int[HorseSilkHistoryEntry!]! requiredSilks this horse has worn across its career, most recent first (POD-83). Mirrors the top-level horseSilkHistory query.
trainerTrainerCurrent 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!]! requiredCurrent 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.
upcomingEntryCountexcludeRaceId: IDInt! requiredCount 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.