Skip to content

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

FieldArgsTypeDescription
id—ID! required—
sport—Sport! required—
competition—Competition! requiredThe championship, e.g. Formula 1.
season—CompetitionSeason! required—
stage—CompetitionStage! requiredThe Grand Prix this session belongs to (the race weekend, projected as a stage).
venue—CourseThe circuit (resolved from the race weekend, not the session).
scheduledTime—DateTimeWhen 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—IntRace distance in laps, where the provider publishes it (metadata). Null for feed rows without it — never inferred.
currentLap—IntThe lap currently being run (live progress, e.g. 28 of 70), where published (metadata). Null when not live or not fed.
qualifyingSegment—IntThe qualifying segment currently underway (1 = Q1/SQ1, 2 = Q2/SQ2, 3 = Q3/SQ3), where published (metadata). Null when not live / not fed.
trackStatus—MotorsportTrackStatusRace-control / flag state during a live session (safety car, yellow, red …), where published (metadata). Null when the feed carries no race-control signal.
offTime—DateTimeWall-clock “off” (lights-out / session-start) time, where published (metadata). Drives the live elapsed timer; null until fed.
name—String! requiredRaw provider session name, e.g. “1st Practice”, “Qualification”, “Race”.
sessionType—MotorsportSessionType! requiredDerived session kind; UNKNOWN when the stored value does not fold to a known kind.
classification—[ClassificationEntry!]! requiredSession classification (finishing order), where published. Empty for feed rows in M14 (dormant).
createdAt—DateTime! required—
updatedAt—DateTime! required—
version—Int! required—