MotorsportSession
Object type
A motorsport session — one Practice / Qualifying / Sprint / Race within a Grand Prix. The Grand Prix
IS a CompetitionStage (D4 — projected from a motorsport_race_weekends row; there is no separate
weekend type), so stage is the GP. Structurally unlike the head-to-head sports: N competitors
classified together, no sides, no single score — the outcome is classification (finishing order).
Championship tables hang off the season/stage (standingsForSeason), not the session.
DORMANT classification (data-model §4 / FOLLOW-UPS): for feed-ingested rows every classification
outcome (position, grid, points, status, constructor) is null — the projection ships now and fills
once a PROD F1 payload is captured. classification therefore returns [] for feed rows in M14.
Implements: SportEvent
Fields
Section titled “Fields”| Field | Args | Type | Description |
|---|---|---|---|
id | — | ID! required | — |
sport | — | Sport! required | — |
competition | — | Competition! required | The championship, e.g. Formula 1. |
season | — | CompetitionSeason! required | — |
stage | — | CompetitionStage! required | The Grand Prix this session belongs to (the race weekend, projected as a stage). |
venue | — | Course | The circuit (resolved from the race weekend, not the session). |
scheduledTime | — | DateTime | When the session is scheduled to start, or null when the provider has not published a time (POD-845). Nullable unlike the other sports, honestly: motorsport_sessions.scheduled_time is nullable and ingest writes NULL rather than inventing a value, whereas tennis and basketball have NOT NULL columns. This field previously reported the row’s INGEST timestamp in that case, which fabricated a start time and mis-ordered a weekend’s sessions. Render “unknown” — do not substitute. |
lifecycle | — | EventLifecycle! required | — |
status | — | MultisportEventStatus! required | — |
statusDetail | — | String | — |
laps | — | Int | Race distance in laps, where the provider publishes it (metadata). Null for feed rows without it — never inferred. |
currentLap | — | Int | The lap currently being run (live progress, e.g. 28 of 70), where published (metadata). Null when not live or not fed. |
qualifyingSegment | — | Int | The qualifying segment currently underway (1 = Q1/SQ1, 2 = Q2/SQ2, 3 = Q3/SQ3), where published (metadata). Null when not live / not fed. |
trackStatus | — | MotorsportTrackStatus | Race-control / flag state during a live session (safety car, yellow, red …), where published (metadata). Null when the feed carries no race-control signal. |
offTime | — | DateTime | Wall-clock “off” (lights-out / session-start) time, where published (metadata). Drives the live elapsed timer; null until fed. |
name | — | String! required | Raw provider session name, e.g. “1st Practice”, “Qualification”, “Race”. |
sessionType | — | MotorsportSessionType! required | Derived session kind; UNKNOWN when the stored value does not fold to a known kind. |
classification | — | [ClassificationEntry!]! required | Session classification (finishing order), where published. Empty for feed rows in M14 (dormant). |
createdAt | — | DateTime! required | — |
updatedAt | — | DateTime! required | — |
version | — | Int! required | — |