# F1 Event Reference

### Events <a href="#ldf1eventreference-events" id="ldf1eventreference-events"></a>

An *event* is a description of a change in some state in the stage. For that reason events are only sent when the data changes. E.g. If there are no incidents during a race we will only send a BetStartEvent once during the approximately 2 hours a race type stage lasts.

Events are delivered from sensors and transponders on the F1 race tracks.

If you are wondering how you can test if a connection is working correctly you should look at the SessionTimeEvent. That contains the local time for the stage and is updated approximately once every second.

A subset of the events are referred to as 'TimelineEvent'. These events are available through the service StageInfo.GetStageTimelineEvents and are designed so that they are not 'too frequent', the number of timeline events within a full race of any event type is of the order \~300. All the timeline events have the field 'currentRaceLapOrSession'.

### Event sequence <a href="#ldf1eventreference-eventsequence" id="ldf1eventreference-eventsequence"></a>

Events are sent when the value is changed. If the value stays the same we will not send an event. eg. Session status will be set to "STARTED" when a race stage starts, and approx 2 hours later we will send a event to indicate that the session status is "FINISHED". Normally there will be no session status updates in between those two events.

<table><thead><tr><th width="262.41668701171875">Stage status</th><th width="525.814208984375">Event(s)</th><th></th></tr></thead><tbody><tr><td>Before stage starts</td><td><ol><li>StartOfStageEvent</li><li>StartingPositionEvent</li><li>&#x3C;Race|Practice|Qualifying|SprintQualifying>LeaderboardEvent</li><li>BetStartEvent</li></ol></td><td>As soon as we start sending data from the stage</td></tr><tr><td>While waiting for stage to start</td><td><ul><li>SessionTimeEvent</li><li>WeatherUpdateEvent</li><li>RaceControlEvent</li><li>LapCountEvent</li><li>TrackStatusEvent</li><li>StageStatusEvent</li></ul></td><td>These events are sent at any time, also before the race starts</td></tr><tr><td>When stage starts</td><td><ul><li>StageStatusEvent (status=STARTED)</li><li>BetStopEvent</li><li>EarlyBetStartEvent</li></ul></td><td>When stage starts we send stage status event to let you know the new status of the stage. In addition we send a BetStopEvent to indicate that you should stop all bets that needs to be placed before the stage starts. We also send an EarlyBetStartEvent. This is active during the fastest drivers first lap. As soon as the lap count changes to 2 this we will send a BetStartEvent as long as there are no conditions in place that will trigger a BetStopEvent.</td></tr><tr><td>During the stage</td><td><ul><li>&#x3C;Race|Practice|Qualifying|SprintQualifying>LeaderboardEvent</li><li>&#x3C;Race|Practice|Qualifying|SprintQualifying>TimingEvent</li><li>SessionTimeEvent</li><li>LapCountEvent</li><li>LapEvent</li><li>NewTiresEvent</li><li>DriverStatusChangedEvent</li><li>PitLaneTimeEvent</li><li>TrackStatusEvent</li><li>WeatherUpdateEvent</li><li>SectorEvent</li><li>SpeedTrapEvent</li><li>RaceControlEvent</li><li>OvertakingEvent</li><li>CatchingEvent</li><li>BetStartEvent</li><li>BetStopEvent</li><li>QualifyingPartEvent</li></ul></td><td><p>When stage status is STARTED you'll get events that describes most things that happen.</p><p>The time remaining, local time, and weather updates. Information about leaderboard changes, timing data, sectors and speed traps, pit stops and race control messages. </p><p>BetStartEvent and BetStopEvent can be sent at any time during the stage. BetStop are triggered by certain conditions that can make the stage unpredictable. As soon as these conditions are cleared we'll send a BetStartEvent.</p></td></tr><tr><td>When stage is finished</td><td><ul><li>StageStatusEvent (status=FINISHED)</li><li>ChequeredFlagEvent</li></ul></td><td><br></td></tr><tr><td>When stage is finalized</td><td><ol><li>StageStatusEvent (status=FINALIZED)</li><li>EndOfStageEvent</li></ol></td><td><br></td></tr></tbody></table>

### Common <a href="#ldf1eventreference-common" id="ldf1eventreference-common"></a>

These common protobuf messages are used in the representation of several event types.

#### EventResponse <a href="#ldf1eventreference-eventresponse" id="ldf1eventreference-eventresponse"></a>

StreamEvents and ReplayStreamEvents streams a series of EventResponse. These messages are a container for the EventWrapper that contains the event.

<table><thead><tr><th width="226.4835205078125">Property</th><th>Type</th><th>Description</th><th>Mandatory/optional (gRPC default values)</th></tr></thead><tbody><tr><td>eventWrapper</td><td>sportradar.ldi.eventwrapper.v1.EventWrapper</td><td>The event wrapper that contains the actual event</td><td>Mandatory</td></tr></tbody></table>

#### EventWrapper <a href="#ldf1eventreference-eventwrapper" id="ldf1eventreference-eventwrapper"></a>

The event wrapper is a carrier for the events and it makes it easy to handle them, extract the event id, type and similar without having to unpack the event itself.

<table><thead><tr><th width="174.45660400390625">Property</th><th width="262.63800048828125">Type</th><th>Description</th><th>Mandatory/optional (gRPC default values)</th></tr></thead><tbody><tr><td>id</td><td>int64</td><td>A sequential id for the event. Always keep a track of the id of the last id you received so that you can continue from where you left off without any data-loss should you lose connection</td><td>Mandatory</td></tr><tr><td>rawEventUuid</td><td>string</td><td>Unique identifier for the event</td><td>Optional, empty string by default</td></tr><tr><td>stageId</td><td>string</td><td>The current stage id. This should always be the same as the stage id you used to initiate the stream</td><td>Mandatory</td></tr><tr><td>loggedAt</td><td>google.protobuf.Timestamp</td><td>The timestamp when this event was created</td><td>Mandatory</td></tr><tr><td>eventType</td><td>string</td><td>A human readable name for the event to make it easy to process and handle events. E.g. "SessionTimeEvent" or "SectorEvent"</td><td>Mandatory</td></tr><tr><td>event</td><td>google.protobuf.any</td><td>The event itself. Can be any type listed in this document.</td><td>Mandatory</td></tr></tbody></table>

#### LeaderboardItem <a href="#ldf1eventreference-leaderboarditem" id="ldf1eventreference-leaderboarditem"></a>

The LeaderboardItem is used as a data type in the 3 different types of leaderboard events you can receive (Practice, Qualifying and Race).

<table><thead><tr><th width="172.85931396484375">Property</th><th width="266.25958251953125">Type</th><th>Description</th><th>Mandatory/optional (gRPC default values)</th></tr></thead><tbody><tr><td>position</td><td>int32</td><td>Position of the driver in the current classification</td><td>Mandatory</td></tr><tr><td>driverData</td><td>DriverData</td><td>The driver data that describes a drivers position on the leader board</td><td>Mandatory</td></tr></tbody></table>

#### DriverPosition <a href="#ldf1eventreference-driverposition" id="ldf1eventreference-driverposition"></a>

Denotes a position change for a driver. Note that the position is newUnofficialPosition, meaning it has not been confirmed in TimingData.<br>

| Property              | Type   | Description                                          | Mandatory/optional (gRPC default values) |
| --------------------- | ------ | ---------------------------------------------------- | ---------------------------------------- |
| driverId              | string | The drivers Sportradar id                            | Mandatory                                |
| newUnofficialPosition | int32  | Position of the driver in the current classification | Mandatory                                |

#### DriverData <a href="#ldf1eventreference-driverdata" id="ldf1eventreference-driverdata"></a>

DriverData contains values that can be associated with the driver.

<table><thead><tr><th width="238.90093994140625">Property</th><th width="115.9556884765625">Type</th><th width="686.935791015625">Description</th><th>Mandatory/optional (gRPC default values)</th></tr></thead><tbody><tr><td>driverId</td><td>string</td><td>The Sportradar id for the driver</td><td>Mandatory</td></tr><tr><td>racingNumber</td><td>int32</td><td>The drivers racing number</td><td>Mandatory</td></tr><tr><td>numberOfTyres</td><td>int32</td><td>The amount of tire changes the driver has had in this stage</td><td>Mandatory</td></tr><tr><td>position</td><td>int32</td><td>Position of the driver in the current classification</td><td>Mandatory</td></tr><tr><td>lastLapTime</td><td>string</td><td>The drivers last lap time in this stage</td><td>Optional, empty string if missing</td></tr><tr><td>personalBestLapTime</td><td>string</td><td>The drivers personal best lap time in this stage</td><td>Optional, empty string if missing</td></tr><tr><td>personalBestLapNumber</td><td>string</td><td>The drivers personal best (fastest) lap number in this stage</td><td>Optional, empty string if missing</td></tr><tr><td>pitStops</td><td>int32</td><td>The number of pit stops for the driver in this stage</td><td>Mandatory</td></tr><tr><td>lapsCompleted</td><td>int32</td><td>The number of laps the driver has completed in this stage</td><td>Mandatory</td></tr><tr><td>tyre</td><td>string</td><td>The drivers current tyre compound</td><td>Optional, empty string if missing</td></tr><tr><td>isActive</td><td>bool</td><td>True if the driver is active in the stage; not stopped, on track, not in the pitlane.</td><td>Mandatory</td></tr></tbody></table>

| Lewis Hamilton     | 7135   | Mercedes          |
| ------------------ | ------ | ----------------- |
| Valtteri Bottas    | 41600  | Mercedes          |
| Carlos Sainz JR    | 189029 | Ferrari           |
| Charles Leclerc    | 269471 | Ferrari           |
| Sergio Perez       | 46337  | Red Bull Racing   |
| Max Verstappen     | 178318 | Red Bull Racing   |
| Lando Norris       | 495898 | McLaren           |
| Daniel Ricciardo   | 41603  | McLaren           |
| Fernando Alonso    | 4521   | Alpine            |
| Esteban Ocon       | 184751 | Alpine            |
| Pierre Gasly       | 381362 | AlphaTauri        |
| Yuki Tsunoda       | 764646 | AlphaTauri        |
| Sebastian Vettel   | 7610   | Aston Martin      |
| Lance Stroll       | 302866 | Aston Martin      |
| Kimi Raikkonen     | 4538   | Alfa Romeo Racing |
| Antonio Giovinazzi | 222584 | Alfa Romeo Racing |
| Mick Schumacher    | 568799 | Haas F1 Team      |
| Nikita Mazepin     | 764216 | Haas F1 Team      |
| George Russell     | 391432 | Williams          |
| Nicholas Latifi    | 447677 | Williams          |

### StartOfStageEvent <a href="#ldf1eventreference-startofstageevent" id="ldf1eventreference-startofstageevent"></a>

StartOfStageEvent is the very first event that is sent when the data-stream from a live stage starts. This indicates that the stage is ready and that you should expect events for this stage. You will normally receive this event 10-15minutes before the start time of a stage.

| Property | Type   | Description                                                                                               | Mandatory/optional (gRPC default values) |
| -------- | ------ | --------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| stageId  | string | The id of the stage. This will be the same stageId as you sent when you started the stream for this stage | Mandatory                                |

### EndOfStageEvent <a href="#ldf1eventreference-endofstageevent" id="ldf1eventreference-endofstageevent"></a>

EndOfStageEvent is the very last event that is sent in the data-stream for a stage. This indicates that there will be no more events for this stage. After a given duration (normally 5 minutes) after you receive this event the stream will be closed on server side. We strongly recommend that you close the stream from client side when this event is received. When the server closes the stream it will return an ABORTED error.

| Property       | Type                     | Description                                                                      | Mandatory/optional (gRPC default values) |
| -------------- | ------------------------ | -------------------------------------------------------------------------------- | ---------------------------------------- |
| streamClosesIn | google.protobuf.Duration | A duration that indicates when this stream will be closed. Normally 300 seconds. | Mandatory                                |

### EarlyBetStartEvent <a href="#ldf1eventreference-earlybetstartevent" id="ldf1eventreference-earlybetstartevent"></a>

EarlyBetStartEvent is sent when we recommend that you should be cautious about opening for live bets. The reason for this is that during this bet state there is a high chance for incidents and bet stops. This is during the first lap for Race stages in addition to when the track status is 2 (yellow flag), 4 (safety car) or 6 (virtual safety car) are shown. EarlyBetStartEvent will be sent if the following conditions are met:

* Stage status is STARTED
* AND one of these conditions are met
  * Current lap is 1 and track status is 1 (TRACK\_CLEAR) and stage type is STAGE\_TYPE\_RACE
  * Track status is 2 (YELLOW\_FLAGS)
  * Track status is 4 (SAFETY\_CAR)
  * Track status is 6 (VIRTUAL\_SAFETY\_CAR)

| Property | Type   | Description                                                      | Mandatory/optional (gRPC default values) |
| -------- | ------ | ---------------------------------------------------------------- | ---------------------------------------- |
| reason   | string | An optional text field to explain the reason for this bet status | Optional - defaults to ""                |

### BetStartEvent <a href="#ldf1eventreference-betstartevent" id="ldf1eventreference-betstartevent"></a>

BetStartEvent is sent when we recommend that you should open for live bets. In this bet state the stage is in a fairly predictable state. The stage will be in this state before the race starts. When the race starts you will get a BetStopEvent immediately followed by an EarlyBetStartEvent that is kept throughout the leading drivers first lap unless you get a BetStopEvent. From lap 2 and onward bet start status with as long as the following conditions are met:

* Stage status is STARTED and
  * Track status is 1 (TRACK\_CLEAR) or 7 (VIRTUAL\_SAFETY\_CAR\_END)
  * Current lap is greater than 1 OR stage type is STAGE\_TYPE\_PRACTICE OR stage type is STAGE\_TYPE\_QUALIFYING
* Stage status is INACTIVE (before stage starts)

| Property | Type   | Description                                                      | Mandatory/optional (gRPC default values) |
| -------- | ------ | ---------------------------------------------------------------- | ---------------------------------------- |
| reason   | string | An optional text field to explain the reason for this bet status | Optional - defaults to ""                |

### BetStopEvent <a href="#ldf1eventreference-betstopevent" id="ldf1eventreference-betstopevent"></a>

BetStopEvent is sent when we recommend that you should close live bets. This bet status is triggered by incidents that make it difficult to predict the outcome. This can be a crash, sensor malfunction, issues with the data-stream and similar. It is also sent when the bet state switches between EarlyBetStartEvent and BetStartEvent. We will send BetStopEvent when following conditions are met:&#x20;

Qualifying parts

Between qualifying parts Q1, Q2 and Q3 you will get a ChequeredFlagEvent and a StageStatusEvent with status FINISHED. You will not get a BetStopEvent triggered by these events, for Qualifying stages we send BetStopEvent when the all parts of the stage is Finalised.

<br>

* Stage type is STAGE\_TYPE\_RACE or STAGE\_TYPE\_PRACTICE and stage status is FINISHED
* Stage type is STAGE\_TYPE\_QUALIFYING and stage status is FINALISED&#x20;
* Stage status is ABORTED&#x20;
* Track status is 5 (RED\_FLAG)

| Property | Type   | Description                                                      | Mandatory/optional (gRPC default values) |
| -------- | ------ | ---------------------------------------------------------------- | ---------------------------------------- |
| reason   | string | An optional text field to explain the reason for this bet status | Optional - defaults to ""                |

### StartingPositionEvent <a href="#ldf1eventreference-startingpositionevent" id="ldf1eventreference-startingpositionevent"></a>

StartingPositionEvent contains the lineup for the stage. This is the order the drivers start in. This is sent once, right after StartOfStageEvent is sent. This data is also accessible in the stage snapshot.

The events contains a list of leader board items. See the description for LeaderboardItem.

| Property | Type                     | Description                                                                                                                                                                     | Mandatory/optional (gRPC default values) |
| -------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| items    | repeated LeaderboardItem | A list of leaderboard items containing the lineup for the stage. This list contains driver ids and their position. For a race type stage this will normally contain 20 drivers. | Mandatory                                |

### Leaderboards <a href="#ldf1eventreference-leaderboards" id="ldf1eventreference-leaderboards"></a>

Formula 1 has 3 different types of stages; Practice, Qualifying and Race. There are a few differences to the leader board for these types and for that reason there are 3 different types of leader board events depending on the stage type.

Leaderboards are sent every time a driver completes a sector in race type stages, and on every lap completion for practice type stages. We send partial leader board updates every time a driver completes a sector and full leader boards approximately every 20 seconds.

#### PracticeLeaderboardEvent <a href="#ldf1eventreference-practiceleaderboardevent" id="ldf1eventreference-practiceleaderboardevent"></a>

The PracticeLeaderboardEvent is sent during practice stages (Practice 1, Practice 2 and Practice 3). Be aware that practice sessions are chaotic in nature and that it's normal with many pit stops and that few or no drivers might be active in the stage. In practice sessions the leaderboard is normally updated just once per lap.

Practice leaderboard

In practice sessions drivers are not competing for first place. They are practicing. For that reason it's unpredictable and we do not recommend using the practice leader board for any markets.

| Property        | Type                     | Description                                                                                                                 | Mandatory/optional (gRPC default values) |
| --------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| stageId         | string                   | The id of the stage                                                                                                         | Mandatory                                |
| isPartialUpdate | bool                     | False if it contains all drivers and True if it contains fewer than all drivers                                             | Mandatory                                |
| idealLapTime    | string                   | The ideal lap time for the current session. The ideal lap time is the sum of the best sector times for the current session. | Optional, empty string if missing        |
| items           | repeated LeaderboardItem | A list of leaderboard items                                                                                                 | Mandatory                                |

#### QualifyingLeaderboardEvent <a href="#ldf1eventreference-qualifyingleaderboardevent" id="ldf1eventreference-qualifyingleaderboardevent"></a>

Qualifying

F1 Qualifying is the part done before a race, to determine the starting positions of the cars in the race. Qualifying is done in three sessions, where the first session is used to single out the 5 slowest cars, which in turn gets starting position 20 - 16 in the main event. These cars can not participate in session 2 and 3. The second session is once again used to single out the 5 slowest cars of the remaining cars. These cars gets starting position 15 - 11 in the race, and can not participate in session 3. For the third session of qualifying only the remaining 10 cars can participate. The driver with the fastest lap time gets starting position 1. The second fastest gets starting position 2 and so on.

In some rare cases a car that is to slow compared to the fastest car can fail to qualify altogether. In this case you can end up with less than 20 cars on the starting grid.

| Property         | Type                     | Description                                                                                                                 | Mandatory/optional (gRPC default values) |
| ---------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| stageId          | string                   | The id of the stage                                                                                                         | Mandatory                                |
| isPartialUpdate  | bool                     | False if it contains all drivers and True if it contains fewer than all drivers                                             | Mandatory                                |
| idealLapTime     | string                   | The ideal lap time for the current session. The ideal lap time is the sum of the best sector times for the current session. | Optional, empty string if missing        |
| cutOffTime       | string                   | The value of the cut off time for the current qualifying session                                                            | Optional, empty string if missing        |
| cutOffPercentage | int32                    | Percentage of the fastest lap time set in qualifying (part 1), used to calculate the cut off time                           | Optional, 0 if missing (not set yet)     |
| numEntriesQ1     | int32                    | The number of entries in qualifying part 1                                                                                  | Optional, 0 if missing (not set yet)     |
| numEntriesQ2     | int32                    | The number of entries in qualifying part 2                                                                                  | Optional, 0 if missing (not set yet)     |
| numEntriesQ3     | int32                    | The number of entries in qualifying part 3                                                                                  | Optional, 0 if missing (not set yet)     |
| sessionPart      | int32                    | The current qualifying session part                                                                                         | Optional, 0 if missing (not set yet)     |
| items            | repeated LeaderboardItem | A list of leaderboard items                                                                                                 | Mandatory                                |

#### RaceLeaderboardEvent/SprintQualifyingLeaderBoardEvent <a href="#ldf1eventreference-raceleaderboardevent-sprintqualifyingleaderboardevent" id="ldf1eventreference-raceleaderboardevent-sprintqualifyingleaderboardevent"></a>

The RaceLeaderboardEvent/SprintQualifyingLeaderboardEvent is sent during race/sprint qualifying stages. Full updates for RaceLeaderboardEvent/SprintQualifyingLeaderboardEvent is sent approximately every 20 seconds. Partial updates is sent every time a driver completes a sector.

| Property        | Type                     | Description                                                                                                                 | Mandatory/optional (gRPC default values) |
| --------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| stageId         | string                   | The id of the stage                                                                                                         | Mandatory                                |
| isPartialUpdate | bool                     | False if it contains all drivers and True if it contains fewer than all drivers                                             | Mandatory                                |
| idealLapTime    | string                   | The ideal lap time for the current session. The ideal lap time is the sum of the best sector times for the current session. | Optional, empty string if missing        |
| items           | repeated LeaderboardItem | A list of leaderboard items                                                                                                 | Mandatory                                |

### Timing Events <a href="#ldf1eventreference-timingevents" id="ldf1eventreference-timingevents"></a>

Timing events contains the timing data for each driver. This is updated every time a driver passes a timing loop. There are approximately 20 timing loops around the track.

Unofficial position

Official positions in the stage is verified by FIA certified timing controllers. This is done for every sector completion for race type stages. The timing data is updated more frequently, every timing loop. It also contains a position, in addition to timing data. Since this data is updated so frequently it's not verified by timing officials.

#### PracticeDriverTimingEvent <a href="#ldf1eventreference-practicedrivertimingevent" id="ldf1eventreference-practicedrivertimingevent"></a>

The PracticeDriverTimingEvent is sent during practice stages. The event is sent when the driver passes a timing loop.&#x20;

| Property                | Type   | Description                                                                                                                                 | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                | string | The drivers Sportradar id                                                                                                                   | Mandatory                                |
| intervalToPositionAhead | string | A duration to the position ahead. Shown as "\<n> LAP" if the driver is more than one lap behind. Time format DURATION                       | Optional, empty string if missing        |
| gapToLeader             | string | A duration to the leader. Shown as "\<n> LAP" if the driver is more than one lap behind. Time format DURATION                               | Optional, empty string if missing        |
| raceTime                | string | The duration of time between the race start time, and the last passing of the control line for this entry. H:MM:SS:THT (e.g. "1:02:03:045") | Optional, empty string if missing        |

#### QualifyingDriverTimingEvent <a href="#ldf1eventreference-qualifyingdrivertimingevent" id="ldf1eventreference-qualifyingdrivertimingevent"></a>

The QualifyingDriverTimingEvent is sent during qualifying stages. It contains timing data from qualifying sessions and is updated every time a driver passes a timing loop.

Qualifying

F1 Qualifying is the part done before a race, to determine the starting positions of the cars in the race. Qualifying is done in three sessions, where the first session is used to single out the 5 slowest cars, which in turn gets starting position 20 - 16 in the main event. These cars can not participate in session 2 and 3. The second session is once again used to single out the 5 slowest cars of the remaining cars. These cars gets starting position 15 - 11 in the race, and can not participate in session 3. For the third session of qualifying only the remaining 10 cars can participate. The driver with the fastest lap time gets starting position 1. The second fastest gets starting position 2 and so on.

| Property                  | Type   | Description                                                                                                                                 | Mandatory/optional (gRPC default values) |
| ------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                  | string | The drivers Sportradar id                                                                                                                   | Mandatory                                |
| raceTime                  | string | The duration of time between the race start time, and the last passing of the control line for this entry. H:MM:SS:THT (e.g. "1:02:03:045") | Optional, empty string if missing        |
| timeDiffToFastestQ1       | string | The time difference between this entry and the entry in position 1 (the quickest driver in the Q1 part of qualifying). Time format DURATION | Optional, empty string if missing        |
| timeDiffToPositionAheadQ1 | string | The time difference between this entry and the entry in the position ahead during Q1 part of qualifying. Time format DURATION               | Optional, empty string if missing        |
| timeDiffToFastestQ2       | string | The time difference between this entry and the entry in position 1 (the quickest driver in the Q2 part of qualifying). Time format DURATION | Optional, empty string if missing        |
| timeDiffToPositionAheadQ2 | string | The time difference between this entry and the entry in the position ahead during Q2 part of qualifying. Time format DURATION               | Optional, empty string if missing        |
| timeDiffToFastestQ3       | string | The time difference between this entry and the entry in position 1 (the quickest driver in the Q3 part of qualifying). Time format DURATION | Optional, empty string if missing        |
| timeDiffToPositionAheadQ3 | string | The time difference between this entry and the entry in the position ahead during Q3 part of qualifying. Time format DURATION               | Optional, empty string if missing        |
| knockOut                  | bool   | Indicates if the entry has been knocked out during a qualifying part                                                                        | Mandatory                                |
| cutOff                    | bool   | Indicates if the entry has been cut off during a qualifying part                                                                            | Mandatory                                |

#### RaceDriverTimingEvent/SprintQualifyingDriverTimingEvent <a href="#ldf1eventreference-racedrivertimingevent-sprintqualifyingdrivertimingevent" id="ldf1eventreference-racedrivertimingevent-sprintqualifyingdrivertimingevent"></a>

The RaceDriverTimingEvent/SprintQualifyingDriverTimingEvent is sent during race/sprint qualifying stages. This event is sent every time a driver passes a new timing loop.

| Property                | Type   | Description                                                                                                                                 | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                | string | The drivers Sportradar id                                                                                                                   | Mandatory                                |
| intervalToPositionAhead | string | A duration to the position ahead. Shown as "\<n> LAP" if the driver is more than one lap behind. Time format DURATION                       | Optional, empty string if missing        |
| gapToLeader             | string | A duration to the leader. Shown as "\<n> LAP" if the driver is more than one lap behind. Time format DURATION                               | Optional, empty string if missing        |
| raceTime                | string | The duration of time between the race start time, and the last passing of the control line for this entry. H:MM:SS:THT (e.g. "1:02:03:045") | Optional, empty string if missing        |
| newUnofficialPosition   | int32  | The new UNOFFICIAL position for the driver. This position is not verified and should only be used as a guideline.                           | Mandatory                                |

### LapEvent <a href="#ldf1eventreference-lapevent" id="ldf1eventreference-lapevent"></a>

Lap event is sent every time a driver completes a lap. It contains the updated driver data, including position.

Lap count

Race : The length of a F1 race is the smallest number of laps that exceeds 305 km. The Monaco Grand Prix is an exception with 78 laps, which is 260,5 km. Under special circumstances the number of laps can be changed. A race can never last longer than 2 hours. If this limit is reached the race will end at the of the next full lap

Qualifying : No maximum number of laps is set for qualifying. The first session lasts 18 minutes. The second lasts 15 minutes. The third session lasts 12 minutes.

Practice : No maximum number of laps is set for Practice.&#x20;

| Property   | Type       | Description                                                           | Mandatory/optional (gRPC default values) |
| ---------- | ---------- | --------------------------------------------------------------------- | ---------------------------------------- |
| driverInfo | DriverData | A DriverData message that describes the drivers standing in the stage | Mandatory                                |

### OvertakingEvent <a href="#ldf1eventreference-overtakingevent" id="ldf1eventreference-overtakingevent"></a>

Overtaking event is sent every time there is a change in drivers position detected after a driver crosses a timing loop. Right after an overtake event is sent with overtakeState OVERTAKEN or OVERTOOK we send an OvertakingEvent with overtakeState MAINTAINED to indicate that the driver is currently maintaining the new position. Be aware that the official position in the race is updated every time a driver completes a sector. This position is delivered in the leaderboard event.

**OvertakeStake:**

| Name       | Value | Description                                                                                    |
| ---------- | ----- | ---------------------------------------------------------------------------------------------- |
| UNKNOWN    | 0     | The overtake state is unknown                                                                  |
| OVERTAKEN  | 1     | The driver has been overtaken by the driver behind.                                            |
| MAINTAINED | 2     | The driver has maintained it's position. Sent to clear state right after OVERTAKEN or OVERTOOK |
| OVERTOOK   | 3     | The driver overtook the driver in front.                                                       |

**OvertakingEvent**:

| Property              | Type          | Description                                                                                                                                                             | Mandatory/optional (gRPC default values) |
| --------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId              | string        | The drivers Sportradar id                                                                                                                                               | Mandatory                                |
| overtakeState         | OvertakeState | The drivers overtakestate                                                                                                                                               | Mandatory                                |
| newUnofficialPosition | int32         | The drivers new unofficial position. NOTE: this position is not confirmed by timing officials until the driver completes a sector and a new leader board event is sent. | Mandatory                                |

### CatchingEvent <a href="#ldf1eventreference-catchingevent" id="ldf1eventreference-catchingevent"></a>

The CatchingEvent is sent if the gap between a driver and the driver in front is less than one second and the gap is decreasing or increasing rapidly.

**CatchingState:**

| Name          | Value | Description                                                      |
| ------------- | ----- | ---------------------------------------------------------------- |
| UNKNOWN       | 0     | The overtake state is unknown                                    |
| FALLING\_BACK | 1     | The gap between the driver and the driver in front is increasing |
| MAINTAINED    | 2     | The gap between the driver and the driver in front is steady     |
| CATCHING      | 3     | The gap between the driver and the driver in front is decreasing |

**CatchingEvent:**

| Property      | Type          | Description                | Mandatory/optional (gRPC default values) |
| ------------- | ------------- | -------------------------- | ---------------------------------------- |
| driverId      | string        | The drivers Sportradar id  | Mandatory                                |
| catchingState | CatchingState | The drivers catching state | Mandatory                                |

### DriverStatusChangedEvent <a href="#ldf1eventreference-driverstatuschangedevent" id="ldf1eventreference-driverstatuschangedevent"></a>

DriverStatusChangedEvent is sent every time a drivers status changes. This happens when a driver is in the pit, on it's way out of the pit or if the driver has stopped or retired.&#x20;

**DriverStatus:**

| Property | Type | Description                                                                                            | Mandatory/optional (gRPC default values) |
| -------- | ---- | ------------------------------------------------------------------------------------------------------ | ---------------------------------------- |
| retired  | bool | Set to true if the driver is retired                                                                   | Mandatory                                |
| inPit    | bool | Set to true when the driver enter the pit lane and to false when the driver exits the pit              | Mandatory                                |
| pitOut   | bool | Set to true when the driver exits the pit lane and to false once the driver completes the first sector | Mandatory                                |
| stopped  | bool | Set to true if the driver stops on track                                                               | Mandatory                                |

**DriverStatusChangedEvent:**

| Property     | Type         | Description               | Mandatory/optional (gRPC default values) |
| ------------ | ------------ | ------------------------- | ---------------------------------------- |
| driverId     | string       | The drivers Sportradar id | Mandatory                                |
| driverStatus | DriverStatus | The drivers status        | Mandatory                                |

### NewTiresEvent <a href="#ldf1eventreference-newtiresevent" id="ldf1eventreference-newtiresevent"></a>

We send NewTiresEvent after every time a driver has had a pit stop. After driver status changes to pitOut=true, this event follows. It describes what happened in the previous stint. If you want to know the current tire compound for a live stage you can check the tyre property on the DriverData message (sent in leader board updates). That contains the current tire compound. Full information about a tire is not available until after the driver has a new pit stop.

Stint

A stint is the period between two pitstops. The first stint is the period between the start of the stage and the first pitstop. Tires are not always changed, so check that tires are changed in the stint if that is what you are looking for.

**Stint:**

| Property     | Type   | Description                                                                                                                                  | Mandatory/optional (gRPC default values) |
| ------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| startLaps    | int32  | The amount of laps this tire has been used before it was placed on the car this stint                                                        | Mandatory                                |
| totalLaps    | int32  | The total amount of laps on this tire.                                                                                                       | Mandatory                                |
| new          | bool   | True if this is a new tire, false if it has been used before                                                                                 | Mandatory                                |
| tyresChanged | bool   | True if tires where changed in this stint, false if they where not changed (e.g. if the driver has a pit stop to replace a broken nose-cone) | Mandatory                                |
| compound     | string | The tyres compond. E.g. HARD, SOFT, WET                                                                                                      | Mandatory                                |

**NewTiresEvent**

| Property | Type           | Description                                                                                                                | Mandatory/optional (gRPC default values) |
| -------- | -------------- | -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId | string         | The drivers Sportradar id                                                                                                  | Mandatory                                |
| strint   | repeated Stint | A list of the drivers stints in this stage. The first stint at position 0 in the list, the second at position 1 and so on. | Mandatory                                |

### PitLaneTimeEvent <a href="#ldf1eventreference-pitlanetimeevent" id="ldf1eventreference-pitlanetimeevent"></a>

The PitLaneTimeEvent is sent after the driver exits the pit lane. This time is from the driver enters the pit lane until the drivers exits the pit lane.

PitLaneTimeEvent is a timeline event.

| Property                | Type   | Description                                                                                               | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | --------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                | string | The drivers Sportradar id                                                                                 | Mandatory                                |
| lapNumber               | int32  | The number of laps completed by the driver.                                                               | Mandatory                                |
| duration                | double | The calculated delta from crossing the pit entry to crossing the pit exit. Duration in seconds, e.g. 21.8 | Mandatory                                |
| currentRaceLapOrSession | int32  | Current race lap during race, qualifying part during qualifying, 0 during practice                        | Mandatory                                |

### SpeedTrapEvent <a href="#ldf1eventreference-speedtrapevent" id="ldf1eventreference-speedtrapevent"></a>

The SpeedTrapEvent is sent every time a driver passes through a speed trap.

Speed Trap

Every formula 1 Grand Prix has 3 speed traps placed around the track. These are used to measure the speed of every car as it passes through. As a result one can see who has the highest speed at that exact part of the lap.

**Speed**:

| Property        | Type   | Description                                                                                                                                                           | Mandatory/optional (gRPC default values) |
| --------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| id              | string | <p>The speed trap id, alphanumeric</p><ul><li>I1 - Intermediate 1</li><li>I2 - Intermediate 2</li><li>FL - Finish line</li><li>ST - Speed trap (standalone)</li></ul> | Mandatory                                |
| value           | string | Speed in km/h for this sector                                                                                                                                         | Optional, empty string if missing        |
| personalFastest | bool   | True if this is the fastest speed for this entry in this sector during this stage                                                                                     | Mandatory                                |
| overallFastest  | bool   | True if this is the fastest speed for any entry in this sector during this stage                                                                                      | Mandatory                                |
| difference      | string | The difference between the sector speed for this lap and the previous lap                                                                                             | Optional, empty string if missing        |

**SpeedTrapEvent**:

| Property | Type   | Description                | Mandatory/optional (gRPC default values) |
| -------- | ------ | -------------------------- | ---------------------------------------- |
| driverId | string | The drivers Sportradar id  | Mandatory                                |
| speed    | Speed  | The drivers catching state | Mandatory                                |

### SectorEvent <a href="#ldf1eventreference-sectorevent" id="ldf1eventreference-sectorevent"></a>

SectorEvent is sent every time a driver completes a sector.

Sector

A sector in a F1 race is a section of the course roughly one third the length of the course. For every sector each car reports how long it took to complete the sector&#x20;

**Sector**:

| Property        | Type   | Description                                                             | Mandatory/optional (gRPC default values) |
| --------------- | ------ | ----------------------------------------------------------------------- | ---------------------------------------- |
| id              | int32  | The sector id, numeric value from 1 to 3                                | <p><br></p>                              |
| overallFastest  | bool   | True if the time for this sector is the overall fastest for all entries | <p><br></p>                              |
| value           | string | Current time for this sector. Time format DURATION                      | <p><br></p>                              |
| personalFastest | bool   | True if the time for this sector is the personal fastest for this entry | <p><br></p>                              |
| stopped         | bool   | True if this entry has stopped in this sector                           | <p><br></p>                              |
| difference      | string | Difference between the sector time for this lap and the previous lap    | <p><br></p>                              |

**SectorEvent**:

| Property | Type   | Description                            | Mandatory/optional (gRPC default values) |
| -------- | ------ | -------------------------------------- | ---------------------------------------- |
| driverId | string | The drivers Sportradar id              | Mandatory                                |
| sector   | Sector | The data for the last completed sector | Mandatory                                |

### StageStatusEvent <a href="#ldf1eventreference-stagestatusevent" id="ldf1eventreference-stagestatusevent"></a>

The StageStatusEvent is sent every time the stage status changes. Before the stage starts the status will be INACTIVE and when it starts it will be STARTED. Normally the stage status does not change while a race is ongoing, so you'll receive one StageStatusEvent when the race starts and one 2 hours later when the stage is FINISHED.

StageStatusEvent is a timeline event.

**SessionState**:

| Name      | Value | Description                                                                                                                                                                                                                      |
| --------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| UNKNOWN   | 0     | The stage state is unknown                                                                                                                                                                                                       |
| INACTIVE  | 1     | The stage status is inactive. This is the normal state before the stage starts                                                                                                                                                   |
| STARTED   | 2     | The stage has started. This is the normal state during a race, practice or qualifying session.                                                                                                                                   |
| FINISHED  | 3     | This is the state that will be shown when the first driver has completed the race. There will still be cars on the track competing for a position.                                                                               |
| ABORTED   | 4     | If the stage is aborted for some reason this state will be shown.                                                                                                                                                                |
| FINALISED | 5     | Approx 15-20 minutes after the stage is FINISHED F1 changes the state to FINALISED. This means that there will be no more events. After this is sent we will send the EndOfStageEvent and you should disconnect from the stream. |

**StageStatusEvent**:

| Property                | Type         | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ------------ | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| state                   | SessionState | The current session state                                                          | Mandatory                                |
| currentRaceLapOrSession | int32        | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

### TrackStatusEvent <a href="#ldf1eventreference-trackstatusevent" id="ldf1eventreference-trackstatusevent"></a>

The TrackStatusEvent is sent every time an incident occur that leads to a change in the status of the track.&#x20;

TrackStatusEvent is a timeline event.

**OvertakeState**:

| Name                      | Value | Description                                                              |
| ------------------------- | ----- | ------------------------------------------------------------------------ |
| UNKNOWN                   | 0     | The track status is unknown                                              |
| TRACK\_CLEAR              | 1     | Track is clear                                                           |
| YELLOW\_FLAGS             | 2     | Yellow flags are being shown at one or more locations on track           |
| NO\_USED\_NO\_MEANING     | 3     | No longer used, no relevant meaning.                                     |
| SAFETY\_CAR               | 4     | Safety car has been and still is deployed                                |
| RED\_FLAG                 | 5     | A Red Flag has been shown, and the session has been aborted or suspended |
| VIRTUAL\_SAFETY\_CAR      | 6     | Virtual safety car has been deployed                                     |
| VIRTUAL\_SAFETY\_CAR\_END | 7     | Virtual safety car ending notification                                   |

**TrackStatusEvent**:

| Property                | Type        | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ----------- | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| trackStatus             | TrackStatus | The current track status                                                           | Mandatory                                |
| message                 | string      | String representation of the track status. E.g. "VSCDeployed"                      | Mandatory                                |
| currentRaceLapOrSession | int32       | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

### LapCountEvent <a href="#ldf1eventreference-lapcountevent" id="ldf1eventreference-lapcountevent"></a>

The LapCountEvent contains information about the expected number of laps, the current lap and the laps remaining. It is sent every time one of these values changes; Minimum every new lap.

Lap count

Race : The length of a F1 race is the smallest number of laps that exceeds 305 km. The Monaco Grand Prix is an exception with 78 laps, which is 260,5 km. Under special circumstances the number of laps can be changed. A race can never last longer than 2 hours. If this limit is reached the race will end at the of the next full lap

Qualifying : No maximum number of laps is set for qualifying. The first session lasts 18 minutes. The second lasts 15 minutes. The third session lasts 12 minutes.

Practice : No maximum number of laps is set for Practice.&#x20;

| Property          | Type  | Description                                                                                                                                                 | Mandatory/optional (gRPC default values) |
| ----------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| totalRaceLaps     | int32 | The currently expected number of race laps after which the race will be completed should this number of laps be completed within the prescribed time limit. | Mandatory                                |
| currentRaceLap    | int32 | The lap number the leader of the race is currently on                                                                                                       | Mandatory                                |
| raceLapsRemaining | int32 | The number of laps remaining in the race at the last time the race leader crossed the finish line.                                                          | Mandatory                                |

### RaceControlEvent <a href="#ldf1eventreference-racecontrolevent" id="ldf1eventreference-racecontrolevent"></a>

RaceControlEvents are transmitted live at various times throughout the stage. It contains a description of relevant events in the race such as information about incidents.

RaceControlEvent is a timeline events.

| Property                | Type   | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| value                   | string | The message that occured                                                           | Mandatory                                |
| tlaEnrichedValue        | string | The message enriched with a drivers TLA if a driver is mentioned in the message    | Mandatory                                |
| nameEnrichedValue       | string | The message enriched with a drivers Name if a driver is mentioned in the message   | Mandatory                                |
| currentRaceLapOrSession | int32  | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

### WeatherUpdateEvent <a href="#ldf1eventreference-weatherupdateevent" id="ldf1eventreference-weatherupdateevent"></a>

WeatherUpdateEvent describes the weather conditions at the track. It is sent every time one of the values changes.

| Property      | Type   | Description                                                                                                                                           | Mandatory/optional (gRPC default values) |
| ------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| humidity      | double | The current relative humidity, expressed as percentage                                                                                                | Mandatory                                |
| rainfall      | bool   | Rainfall indicator. True if it's raining.                                                                                                             | Mandatory                                |
| airTemp       | double | Current air temperature measured in degrees Celsius                                                                                                   | Mandatory                                |
| pressure      | double | The current atmospheric pressure measured in mBars                                                                                                    | Mandatory                                |
| trackTemp     | double | Current track temperature measured in degrees Celsius                                                                                                 | <p><br></p>                              |
| windDirection | int32  | The current wind course, in degrees, measured in a clockwise direction with 0 representing north. Wind course indicates where the wind is blowing to. | <p><br></p>                              |
| windSpeed     | double | The current wind speed, measured in meters per second.                                                                                                | <p><br></p>                              |

### SessionTimeEvent <a href="#ldf1eventreference-sessiontimeevent" id="ldf1eventreference-sessiontimeevent"></a>

SessionTimeEvent is sent every second and gives you the local time from where the race is in addition to remaining time for the stage. Note that the remaining time is the target time for the race. The race might be completed with time remaining if the target amount of laps is reached before.

| Property       | Type                      | Description                                                        | Mandatory/optional (gRPC default values) |
| -------------- | ------------------------- | ------------------------------------------------------------------ | ---------------------------------------- |
| timeRemaining  | google.protobuf.Duration  | Remaining time of the session in seconds and nanos                 | Mandatory                                |
| localTimeOfDay | google.protobuf.Timestamp | The local time of the day. Seconds and nanos since unix epoch UTC. | Mandatory                                |

<br>

### ChequeredFlagEvent <a href="#ldf1eventreference-chequeredflagevent" id="ldf1eventreference-chequeredflagevent"></a>

Chequered flag event is sent when the chequered flag is show on the track. Other incident.related flags are sent in TrackStatusEvent. ChequeredFlagEvent is sent without properties.

### QualifyingPartEvent <a href="#ldf1eventreference-qualifyingpartevent" id="ldf1eventreference-qualifyingpartevent"></a>

QualifyingPartEvent is only sent during qualifying stages. Once part one of qualifying is done and preparation for Q2 is done this event is sent. Similarly QualifyingPartEvent is sent after Q2 is done and preparations for Q3 is done. Once you receive this event you know that the indicated stage part will start soon.&#x20;

Note that the QualifyingLeaderboardEvent contains the sessionPart property. This is an integer showing the session part the data belongs to. For Q1 the sessionPart property will have a value of 1, for Q2 a value of 2 and for Q3 a value of 3.

| Property     | Type                                                      | Description                                                                                     | Mandatory/optional (gRPC default values) |
| ------------ | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------- |
| preparedPart | <p>enum PreparedPart {<br>  Q2 = 0;<br>  Q3 = 1;<br>}</p> | A value describing the prepared session part. This is only sent for qualifying parts Q2 and Q3. | Mandatory                                |

### DRSEvent <a href="#ldf1eventreference-drsevent" id="ldf1eventreference-drsevent"></a>

DRSEvent is sent every time there is a change in the DRS status for the stage or for one or more drivers. It's an event that sends updates for some or all drivers.

**DriverDRSStatus**:&#x20;

| Property             | Type   | Description                                                                                         | Mandatory/optional (gRPC default values) |
| -------------------- | ------ | --------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId             | string | The drivers sportradar id.                                                                          | Mandatory                                |
| drsActivationEnabled | bool   | Driver meets criteria for drs activation.                                                           | Mandatory                                |
| drsButtonPressed     | bool   | Driver is pressing drs activation button.                                                           | Mandatory                                |
| wingActive           | bool   | Wing is active.                                                                                     | Mandatory                                |
| drsAllowed           | bool   | drs is allowed in this state of the stage (disabled during safety car, in the first two laps, etc). | Mandatory                                |

**DRSEvent**:  &#x20;

| Property  | Type                      | Description                                                                        | Mandatory/optional (gRPC default values) |
| --------- | ------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| isPartial | bool                      | If partial = true, drivers only contains data for drivers whose DRSStatus changed. | Mandatory                                |
| drivers   | repeated  DriverDRSStatus | List of DriverDRSStatus                                                            | Mandatory                                |

### FeedQualityEvent <a href="#ldf1eventreference-feedqualityevent" id="ldf1eventreference-feedqualityevent"></a>

Indicates changes on the quality of the feed.&#x20;

**FeedQualityEvent**: &#x20;

| Property        | Type | Description                                                                                 | Mandatory/optional (gRPC default values) |
| --------------- | ---- | ------------------------------------------------------------------------------------------- | ---------------------------------------- |
| carDataReceived | bool | Indicates whether or not we are receiving car data. If false we will not produce DRSEvents. | Mandatory                                |

### FastestLapAchievedEvent <a href="#ldf1eventreference-fastestlapachievedevent" id="ldf1eventreference-fastestlapachievedevent"></a>

Triggered when a driver achieves an (overall) fastest lap.

FastestLapAchievedEvent is a timeline event.

| Property                | Type   | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                | string | The drivers sportradar id.                                                         | Mandatory                                |
| fastestLapTime          | string | Time achieved                                                                      | Mandatory                                |
| currentRaceLapOrSession | int32  | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

<br>

### FastestSpeedAchievedEvent <a href="#ldf1eventreference-fastestspeedachievedevent" id="ldf1eventreference-fastestspeedachievedevent"></a>

Triggered when a driver achieves a fastest speed for a given speed trap.

FastestSpeedAchievedEvent is a timeline event.

| Property                | Type   | Description                                                                                                                                                           | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                | string | The drivers sportradar id.                                                                                                                                            | Mandatory                                |
| id                      | string | <p>The speed trap id, alphanumeric</p><ul><li>I1 - Intermediate 1</li><li>I2 - Intermediate 2</li><li>FL - Finish line</li><li>ST - Speed trap (standalone)</li></ul> | Mandatory                                |
| value                   | string | Speed achieved in km/h                                                                                                                                                | Mandatory                                |
| overallFastest          | bool   | True if this speed was the fastest over all speed traps                                                                                                               | Mandatory                                |
| currentRaceLapOrSession | int32  | Current race lap during race, qualifying part during qualifying, 0 during practice                                                                                    | Mandatory                                |

<br>

### FastestSectorTimeAchievedEvent <a href="#ldf1eventreference-fastestsectortimeachievedevent" id="ldf1eventreference-fastestsectortimeachievedevent"></a>

Triggered when a driver achieves a fastest sector.

FastestSectorTimeAchievedEvent is a timeline event.

| Property                | Type   | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                | string | The drivers sportradar id.                                                         | Mandatory                                |
| id                      | int32  | The sector id, numeric value from 1 to 3                                           | <p><br></p>                              |
| value                   | string | Time achieved                                                                      | Mandatory                                |
| currentRaceLapOrSession | int32  | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

### DriverOutEvent <a href="#ldf1eventreference-driveroutevent" id="ldf1eventreference-driveroutevent"></a>

Triggered when DriverStatus.retired changes to true

DriverOutEvent is a timeline event.

| Property                | Type   | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                | string | The drivers sportradar id.                                                         | Mandatory                                |
| currentRaceLapOrSession | int32  | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

### DriverStoppedEvent <a href="#ldf1eventreference-driverstoppedevent" id="ldf1eventreference-driverstoppedevent"></a>

Triggered when DriverStatus.stopped changes to true

DriverStoppedEvent is a timeline event.

| Property                | Type   | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                | string | The drivers sportradar id.                                                         | Mandatory                                |
| currentRaceLapOrSession | int32  | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

### DriverPitStopEvent <a href="#ldf1eventreference-driverpitstopevent" id="ldf1eventreference-driverpitstopevent"></a>

Triggered when DriverStatus.inPit changes to true

DriverPitStopEvent is a timeline event.

| Property                | Type   | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                | string | The drivers sportradar id.                                                         | Mandatory                                |
| currentRaceLapOrSession | int32  | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

### Top3DriversEvent <a href="#ldf1eventreference-top3driversevent" id="ldf1eventreference-top3driversevent"></a>

Triggered in race session when a top3 drivers finishes.

Top3DriversEvent is a timeline event.

| Property                | Type   | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ------ | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| driverId                | string | The drivers sportradar id.                                                         | Mandatory                                |
| position                | int32  | Driver position                                                                    | Mandatory                                |
| currentRaceLapOrSession | int32  | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

### OvertakeEvent <a href="#ldf1eventreference-overtakeevent" id="ldf1eventreference-overtakeevent"></a>

Triggered when a driver overtakes.

OvertakeEvent is a timeline event.

| Property                | Type                    | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ----------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| fasterDriver            | DriverPosition          | Driver that performs the overtake                                                  | Mandatory                                |
| overtakenDriver         | repeated DriverPosition | Overtaken drivers                                                                  | Mandatory                                |
| currentRaceLapOrSession | int32                   | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

### StartedRainingEvent <a href="#ldf1eventreference-startedrainingevent" id="ldf1eventreference-startedrainingevent"></a>

Triggered when WeatherUpdateEvent.rainfall changes to true

StartedRainingEvent is a timeline event.

| Property                | Type  | Description                                                                        | Mandatory/optional (gRPC default values) |
| ----------------------- | ----- | ---------------------------------------------------------------------------------- | ---------------------------------------- |
| currentRaceLapOrSession | int32 | Current race lap during race, qualifying part during qualifying, 0 during practice | Mandatory                                |

### DriverCarPosition <a href="#ldf1eventreference-drivercarposition" id="ldf1eventreference-drivercarposition"></a>

Position data for a single driver.

Coordinates are based on ENU coordinate system and should be referred to the track model or the relevant circuit. The track file has a coordinate labelled as POINT\_ORIGIN:

1. For all points in the track model, subtract the x and y coordinates of POINT\_ORIGIN (z value is absolute and not relative to the origin). This forms the local ENU coordinate system that we use in the positioning feed.
2. For the points in the feed, divide the coordinates by 100 to be in meters.
3. If you will display this, swap the X and Y coordinates.

| Property      | Type   | Description                                | Mandatory/optional (gRPC default values) |
| ------------- | ------ | ------------------------------------------ | ---------------------------------------- |
| driverId      | string | The drivers sportradar id.                 | Mandatory                                |
| posX          | int32  | <p><br></p>                                | Mandatory                                |
| posY          | int32  | <p><br></p>                                | Mandatory                                |
| posZ          | int32  | <p><br></p>                                | Mandatory                                |
| speed         | int32  | car speed in km/h                          | Mandatory                                |
| direction     | int32  | 0 to 359 deg                               | Mandatory                                |
| attitudeYaw   | int32  | <p><br></p>                                | Mandatory                                |
| attitudePitch | int32  | <p><br></p>                                | Mandatory                                |
| attitudeRoll  | int32  | <p><br></p>                                | Mandatory                                |
| progression   | int32  | 0 – 10000 (5000 being half way into a lap) | Mandatory                                |

### CarPositionEvent <a href="#ldf1eventreference-carpositionevent" id="ldf1eventreference-carpositionevent"></a>

Contains DriverCarPosition for all drivers. This event is not available through the stream EventStream.StreamEvents, instead it is available in EventStream.StreamCarPositionEvents.

**Top3DriversEvent**:

| Property  | Type                       | Description | Mandatory/optional (gRPC default values) |
| --------- | -------------------------- | ----------- | ---------------------------------------- |
| positions | repeated DriverCarPosition | <p><br></p> | Mandatory                                |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sportradar.com/live-data/introduction/information-per-sport/f1/f1-event-reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
