# Response Model

After the websockets connection has been made and the connection authorised, you will receive the packets (assuming you haven’t specified a start position).

Note that packets are checked for timeliness and in the event that data from the supplier is delayed, an extra field: *delayStatus* will be added to the packets below. If the field is present then the packets should be considered as not live.

The delayStatus field will typically take one of two values:

**● DELAYED** - [click here for more information on delayed packets](https://img-arena.gitbook.io/tennis/-M-nnUijRFbIhBBjSfUz/delayed-packets)

**● RECONSTRUCTED** - [click here for more information about Alarms and Reconstructions](https://img-arena.gitbook.io/tennis/-M-nnUijRFbIhBBjSfUz/event-disconnections)

## Match Status Update

| Field Name          | Type   | Description                                                                                                                                                                                                           |
| ------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| matchState          | object | The match state object                                                                                                                                                                                                |
| teamAPlayer1        | string | The name of the first player in team A                                                                                                                                                                                |
| teamBPlayer1        | string | The name of the first player in team B                                                                                                                                                                                |
| teamAPlayer2        | string | (Doubles only) The name of the second player in team A                                                                                                                                                                |
| teamBPlayer2        | string | (Doubles only) The name of the second player in team B                                                                                                                                                                |
| teamAPlayersDetails | object | The players details (e.g. ID and IOC country code) for team A                                                                                                                                                         |
| teamBPlayersDetails | object | The players details (e.g. ID and IOC country code) for team B                                                                                                                                                         |
| umpire              | string | The name of the umpire                                                                                                                                                                                                |
| umpireCode          | string | The code for the umpire                                                                                                                                                                                               |
| umpireCountry       | string | The country of the umpire                                                                                                                                                                                             |
| scoringType         | string | The scoring type being used for the match: Standard, StandardWithNoAdv, ShortSets, ProSet, MatchTieBreak, SuddenDeath, ModernSetShort, ModernSetLong, ModernSetWithNoAdv, Unknown, LastSetTiebreak12,ATPShortSetNoAdv |
| numSets             | int    | How many sets the match may involve                                                                                                                                                                                   |
| firstServer         | string | The team who is serving first in the match                                                                                                                                                                            |
| courtNum            | string | The court the match is being played on                                                                                                                                                                                |
| tieBreakType        | string | The type of tie breaks being used in the match - possible values are “TieBreakInFinalSet” and “NoTieBreakInFinalSet”                                                                                                  |
| tossWinner          | string | Player who won the toss                                                                                                                                                                                               |
| tossChooser         | string | What the player who won the toss elected to do - possible values are “Serve”, “Ends”, “GaveChoiceToOpponent”                                                                                                          |
| delayStatus         | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED                                                                                             |
| matchTime           | string | The match time of this packet                                                                                                                                                                                         |

## TeamAPlayer Details

| Field Name     | Type   | Description                                                    |
| -------------- | ------ | -------------------------------------------------------------- |
| player1Id      | string | The player Id of the first player in team A                    |
| player2Id      | string | (Doubles only) The player Id of the second player in team A    |
| player1Country | string | The country code of the first player in team A                 |
| player2Country | string | (Doubles only) The country code of the second player in team A |

## TeamBPlayer Details

| Field Name     | Type   | Description                                                    |
| -------------- | ------ | -------------------------------------------------------------- |
| player1Id      | string | The player Id of the first player in team A                    |
| player2Id      | string | (Doubles only) The player Id of the second player in team A    |
| player1Country | string | The country code of the first player in team A                 |
| player2Country | string | (Doubles only) The country code of the second player in team A |

## Match State

| Field Name          | Type      | Description                                                                                                                                                                                                                                                                                                            |
| ------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| state               | string    | The state of the match can be one of: NotStarted, UmpireOnCourt, PlayersArriveOnCourt, Warmup, InProgress, Suspended, Unsuspended, Complete, ToiletBreak, MedicalTimeout, MedicalTreatment, ChallengeInProgress, BallMarkInspection, CorrectionMode, PostSuspensionWarmup, PostSuspensionMatchRestart, Default, Retire |
| locationTimestamp\* | string    | (\*) This is an optional field for all match state changes                                                                                                                                                                                                                                                             |
| suspensionType\*    | string    | <p>(\*) This is an optional field for a Suspended/Unsuspended match state only:<br>Rain, Heat, Darkness, Pause, TenMinuteHeatBreak, Other, Unknown</p>                                                                                                                                                                 |
| suspensionEnded\*   | timestamp | (\*) This is an optional field for a Suspended/Unsuspended match state only                                                                                                                                                                                                                                            |
| team\*              | string    | (\*) This is an optional field for a ChallengeInProgress, ToiletBreak, MedicalTreatment or Default/Retire match states only, meaning who called the challenge or who has decided to retire from the match.                                                                                                             |
| playerId\*          | int       | (\*) This is an optional field for MedicalTreatment match state only indicating which player is being treated                                                                                                                                                                                                          |
| won\*               | string    | (\*) This is an optional field for a ChallengeInProgress match state only, meaning who won the challenge.                                                                                                                                                                                                              |
| challengeEnded\*    | timestamp | (\*) This is an optional field for a ChallengeInProgress match state only, meaning when the challenge has ended.                                                                                                                                                                                                       |
| reason\*            | string    | (\*) This is an optional field for a Default/Retire match states only, meaning the retirement reason: Illness, Injury, Walkover, Other, Unknown, Unspecified, UnreasonableDelay ,AudibleObscenity, VisibleObscenity, BallAbuse, RacquetAbuse, VerbalAbuse, PhysicalAbuse,Coaching, UnsportsmanlikeConduct              |
| evaluationStarted\* | timestamp | (\*) This is an optional field for a MedicalTreatment match state only indicating when the physio started evaluating the player                                                                                                                                                                                        |
| treatmentStarted\*  | timestamp | (\*) This is an optional field for a MedicalTreatment match state only indicating when the physio started treating the player                                                                                                                                                                                          |
| treatmentLocation\* | string    | (\*) This is an optional field for a MedicalTreatment match state only indicating where the physio is treating the player. Either “OnCourt”, “OffCourt” or “Unknown”                                                                                                                                                   |
| treatmentEnded\*    | timestamp | (\*) This is an optional field for a MedicalTreatment match state only indicating when the physio stopped treating the player                                                                                                                                                                                          |
| toletBreakEnded\*\* | timestamp | (\*\*) This will be within the second toiletBreak packet.                                                                                                                                                                                                                                                              |

When there is a declined TenMinuteHeatbreak, we will return a Unsuspended packet (without a proceeding Suspended packet) with the suspensionType set as TenMinuteHeatBreak and suspensionEnded.

ToiletBreak consists of two consecutive packets - the first is the start, the second is the end of the break. The game will recommence properly with the InProgress packet that will follow shortly afterwards.

| **Field Name**       | **Type**  | **Description**                                                                                                                                                                                                                                                                                                        |
| -------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| state                | string    | The state of the match can be one of: NotStarted, UmpireOnCourt, PlayersArriveOnCourt, Warmup, InProgress, Suspended, Unsuspended, Complete, ToiletBreak, MedicalTimeout, MedicalTreatment, ChallengeInProgress, BallMarkInspection, CorrectionMode, PostSuspensionWarmup, PostSuspensionMatchRestart, Default, Retire |
| locationTimestamp\*  | string    | (\*) This is an optional field for all match state changes                                                                                                                                                                                                                                                             |
| suspensionType\*     | string    | (\*) This is an optional field for a Suspended/Unsuspended match state only: Rain, Heat, Darkness, Pause, TenMinuteHeatBreak, Other, Unknown                                                                                                                                                                           |
| suspensionEnded\*    | timestamp | (\*) This is an optional field for a Suspended/Unsuspended match state only                                                                                                                                                                                                                                            |
| team\*               | string    | (\*) This is an optional field for a ChallengeInProgress, ToiletBreak, MedicalTreatment or Default/Retire match states only, meaning who called the challenge or who has decided to retire from the match.                                                                                                             |
| playerId\*           | int       | (\*) This is an optional field for MedicalTreatment match state only indicating which player is being treated                                                                                                                                                                                                          |
| won\*                | string    | (\*) This is an optional field for a ChallengeInProgress match state only, meaning who won the challenge.                                                                                                                                                                                                              |
| challengeEnded\*     | timestamp | (\*) This is an optional field for a ChallengeInProgress match state only, meaning when the challenge has ended.                                                                                                                                                                                                       |
| reason\*             | string    | (\*) This is an optional field for a Default/Retire match states only, meaning the retirement reason: Illness, Injury, Walkover, Other, Unknown, Unspecified, UnreasonableDelay ,AudibleObscenity, VisibleObscenity, BallAbuse, RacquetAbuse, VerbalAbuse, PhysicalAbuse,Coaching, UnsportsmanlikeConduct              |
| evaluationStarted\*  | timestamp | (\*) This is an optional field for a MedicalTreatment match state only indicating when the physio started evaluating the player                                                                                                                                                                                        |
| treatmentStarted\*   | timestamp | (\*) This is an optional field for a MedicalTreatment match state only indicating when the physio started treating the player                                                                                                                                                                                          |
| treatmentLocation\*  | string    | (\*) This is an optional field for a MedicalTreatment match state only indicating where the physio is treating the player. Either “OnCourt”, “OffCourt” or “Unknown”                                                                                                                                                   |
| treatmentEnded\*     | timestamp | (\*) This is an optional field for a MedicalTreatment match state only indicating when the physio stopped treating the player                                                                                                                                                                                          |
| tolietBreakEnded\*\* | timestamp | (\*\*) This will be within the second toiletBreak packet.                                                                                                                                                                                                                                                              |

## Server

| **Field Name** | **Type** | **Description**                       |
| -------------- | -------- | ------------------------------------- |
| team           | string   | Which team is serving: TeamA or TeamB |
| member         | int      | Which member of the team is serving   |

| Field Name | Type   | Description                           |
| ---------- | ------ | ------------------------------------- |
| team       | string | Which team is serving: TeamA or TeamB |
| member     | int    | Which member of the team is serving   |

## Point Scored Packet

| Field Name       | Type      | Description                                                                                                                                            |
| ---------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| seqNum           | int       | Sequence number of the packet                                                                                                                          |
| timestamp        | timestamp | Timestamp of this packet                                                                                                                               |
| eventElementType | string    | The event element type                                                                                                                                 |
| matchTime        | string    | The match time of this packet                                                                                                                          |
| server           | object    | The server of this point                                                                                                                               |
| nextServer       | object    | The next team to serve                                                                                                                                 |
| score            | object    | The match score                                                                                                                                        |
| details          | object    | Additional details about the how the point was scored: Ace, Double Fault                                                                               |
| delayStatus      | string    | Optional field, if present this packet should be considered delayed. Can take one of three values: DELAYED, RECONSTRUCTED or RECONSTRUCTED\_INACCURATE |

| **Field Name**   | **Type**  | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ---------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int       | Sequence number of the packet                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| timestamp        | timestamp | Timestamp of this packet                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| eventElementType | string    | The event element type                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| matchTime        | string    | The match time of this packet                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| server           | object    | The server of this point                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| nextServer       | object    | The next team to serve                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| score            | object    | The match score                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| details          | object    | Additional details about the how the point was scored: Ace, Double Fault                                                                                                                                                                                                                                                                                                                                                                                              |
| delayStatus      | string    | Optional field, if present this packet should be considered delayed. Can take one of three values: DELAYED, RECONSTRUCTED or RECONSTRUCTED\_INACCURATE RECONSTRUCTED\_INACCURATE is very rare and is used in the extreme edge case where the reconstructed scoring packets add up to a score that does not equal the current match score sent in the latest upstream packet. This would be applied to all reconstructed packets that are sent in the catch-up stream. |

## Score

| **Field Name**    | **Type** | **Description**                    |
| ----------------- | -------- | ---------------------------------- |
| currentGameScore  | object   | Current game score                 |
| currentSetScore   | object   | Current Set score                  |
| previousSetsScore | object   | Array of previous Set scores       |
| overallSetScore   | object   | The overall set score in the match |

| Field Name        | Type   | Description                        |
| ----------------- | ------ | ---------------------------------- |
| currentGameScore  | object | Current game score                 |
| currentSetScore   | object | Current Set score                  |
| previousSetsScore | object | Array of previous Set scores       |
| overallSetScore   | object | The overall set score in the match |

## Current Game Score

| **Field Name** | **Type** | **Description**                                            |
| -------------- | -------- | ---------------------------------------------------------- |
| gameType       | string   | The type of the game (e.g. “TieBreaker” or “StandardGame”) |
| pointsA        | string   | Points scored by TeamA                                     |
| pointsB        | string   | Points scored by TeamB                                     |

| Field Name | Type   | Description                                                |
| ---------- | ------ | ---------------------------------------------------------- |
| gameType   | string | The type of the game (e.g. “TieBreaker” or “StandardGame”) |
| pointsA    | string | Points scored by TeamA                                     |
| pointsB    | string | Points scored by TeamB                                     |

## Current Set Score

| **Field Name** | **Type** | **Description**              |
| -------------- | -------- | ---------------------------- |
| gamesA         | int      | Number of games won by TeamA |
| gamesB         | int      | Number of games won by TeamB |

| Field Name | Type | Description                  |
| ---------- | ---- | ---------------------------- |
| gamesA     | int  | Number of games won by TeamA |
| gamesB     | int  | Number of games won by TeamB |

## Previous Set Score

| Field Name    | Type   | Description                  |
| ------------- | ------ | ---------------------------- |
| gamesA        | int    | Number of games won by TeamA |
| gamesB        | int    | Number of games won by TeamB |
| tieBreakScore | object | Tie-break score for the Set  |

| **Type**      | **Description** |                              |
| ------------- | --------------- | ---------------------------- |
| gamesA        | int             | Number of games won by TeamA |
| gamesB        | int             | Number of games won by TeamB |
| tieBreakScore | object          | Tie-break score for the Set  |

## Tie Break Score

| Field Name | Type | Description            |
| ---------- | ---- | ---------------------- |
| pointsA    | int  | Points scored by TeamA |
| pointsB    | int  | Points scored by TeamB |

| **Field Name** | **Type** | **Description**        |
| -------------- | -------- | ---------------------- |
| pointsA        | int      | Points scored by TeamA |
| pointsB        | int      | Points scored by TeamB |

## Point Score Details

| Field Name | Type   | Description                                                |
| ---------- | ------ | ---------------------------------------------------------- |
| scoredBy   | string | The team who has scored the point                          |
| pointType  | string | The type of the point: Standard, DoubleFault, Ace, Unknown |

| **Field Name** | **Type** | **Description**                                            |
| -------------- | -------- | ---------------------------------------------------------- |
| scoredBy       | string   | The team who has scored the point                          |
| pointType      | string   | The type of the point: Standard, DoubleFault, Ace, Unknown |

## Overall Set Score Details

| Field Name | Type | Description               |
| ---------- | ---- | ------------------------- |
| setsA      | int  | Number of sets for Team A |
| setsB      | int  | Number of sets for Team b |

| **Field Name** | **Type** | **Description**           |
| -------------- | -------- | ------------------------- |
| setsA          | int      | Number of sets for Team A |
| setsB          | int      | Number of sets for Team b |

## Point Started Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| nextServer       | object | The next player/team to server                                                                                            |
| server           | object | The server of this point (same as nextServer for this packet)                                                             |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| nextServer       | object   | The next player/team to server                                                                                            |
| server           | object   | The server of this point (same as nextServer for this packet)                                                             |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

The PointStarted packet is used to signify the start of a point. Point Started can be used to close markets for the next available point e.g.

* Point Started JSON

```
{
  "eventElementType": "PointStarted",
  "matchTime": "00:00:00",
  "nextServer": {
    "member": 1,
    "team": "TeamB"
  },
  "seqNum": 7,
  "server": {
    "member": 1,
    "team": "TeamB"
  },
  "timestamp": "2024-05-20T09:48:04.047Z"
}
```

Can be used to close markets on the next available point in this game/match.

## Point Fault Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| nextServer       | object | The next player/team to server                                                                                            |
| server           | object | The server of this point (same as nextServer for this packet)                                                             |
| faultType        | string | The type of the fault:“Fault”, “FootFault”                                                                                |
| matchId          | string | The match id                                                                                                              |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| nextServer       | object   | The next player/team to server                                                                                            |
| server           | object   | The server of this point (same as nextServer for this packet)                                                             |
| faultType        | string   | The type of the fault:“Fault”, “FootFault”                                                                                |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Point Replayed Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| nextServer       | object | The next player/team to server                                                                                            |
| server           | object | The server of this point (same as nextServer for this packet)                                                             |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| nextServer       | object   | The next player/team to server                                                                                            |
| server           | object   | The server of this point (same as nextServer for this packet)                                                             |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Point Let Packet

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| nextServer       | object   | The next player/team to server                                                                                            |
| server           | object   | The server of this point (same as nextServer for this packet)                                                             |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

The point must be replayed. The umpire indicates this type of let by announcing "Let. First serve," or "Let. Second serve." Lets typically occur when an otherwise-valid serve makes contact with the net before hitting the ground. Theoretically, a player could serve an infinite number of otherwise-valid let serves, but a serve that touches the net and then lands out of bounds counts as one of the two allowed serves (fault). A let can also be called during play when there is some distraction to either player not caused by the players themselves, such as a ball boy moving behind a receiver, debris flying across the court in windy conditions, or a ball accidentally falling out of a player's pocket or entering from a neighbouring court. The call is made by the chair umpire when one is assigned to the match

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| nextServer       | object | The next player/team to server                                                                                            |
| server           | object | The server of this point (same as nextServer for this packet)                                                             |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Code Penalty Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| server           | object | The server for this point                                                                                                 |
| nextServer       | object | The next player/team to server                                                                                            |
| team             | string | The name of the team penalised (e.g. “TeamA” or “TeamB”)                                                                  |
| score            | object | The match score after the penalty has been applied                                                                        |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| server           | object   | The server for this point                                                                                                 |
| nextServer       | object   | The next player/team to server                                                                                            |
| team             | string   | The name of the team penalised (e.g. “TeamA” or “TeamB”)                                                                  |
| score            | object   | The match score after the penalty has been applied                                                                        |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Time Penalty Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| server           | object | The server for this point                                                                                                 |
| nextServer       | object | The next player/team to server                                                                                            |
| team             | string | The name of the team penalised(e.g. “TeamA” or “TeamB”)                                                                   |
| score            | object | The match score after the penalty has been applied                                                                        |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| server           | object   | The server for this point                                                                                                 |
| nextServer       | object   | The next player/team to server                                                                                            |
| team             | string   | The name of the team penalised(e.g. “TeamA” or “TeamB”)                                                                   |
| score            | object   | The match score after the penalty has been applied                                                                        |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Game Penalty Packet

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| server           | object   | The server for this point                                                                                                 |
| nextServer       | object   | The next player/team to server                                                                                            |
| team             | string   | The name of the team penalised(e.g. “TeamA” or “TeamB”)                                                                   |
| score            | object   | The match score after the penalty has been applied                                                                        |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

N.B - The game penalty packets will be delivered sequentially until a full game has been awarded to the opposing team (e.g. if a game penalty is triggered at 15-0 by the receiver, you will receive three packets sequentially to complete the game)

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| server           | object | The server for this point                                                                                                 |
| nextServer       | object | The next player/team to server                                                                                            |
| team             | string | The name of the team penalised(e.g. “TeamA” or “TeamB”)                                                                   |
| score            | object | The match score after the penalty has been applied                                                                        |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Undo Packet

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| nextServer       | object   | The next player/team to server                                                                                            |
| score            | object   | The current score of the match                                                                                            |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

N.B - that the undo packet only occurs when the match state has been changed to correction mode. A number of undo packets may be received which indicates that the umpire is correcting information that has previously been entered.

Once the umpire comes out of correction mode (match state would typically move back to inProgress) they will reissue the correct score as a point scored packet, as the definitive confirmation of the current match score.

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| nextServer       | object | The next player/team to server                                                                                            |
| score            | object | The current score of the match                                                                                            |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Overrule Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| nextServer       | object | The next player/team to server                                                                                            |
| score            | object | The current score of the match                                                                                            |
| numOverrules     | int    | Total number of overrules in the match                                                                                    |
| server           | object | The server of this point                                                                                                  |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| nextServer       | object   | The next player/team to server                                                                                            |
| score            | object   | The current score of the match                                                                                            |
| numOverrules     | int      | Total number of overrules in the match                                                                                    |
| server           | object   | The server of this point                                                                                                  |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Code Violation Packet

| Field Name       | Type   | Description                                                                                                                                                                                                                                                                                        |
| ---------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                                                                                                                                                                                         |
| timestamp        | string | Timestamp of this packet                                                                                                                                                                                                                                                                           |
| eventElementType | string | The event element type                                                                                                                                                                                                                                                                             |
| matchTime        | string | The current match time                                                                                                                                                                                                                                                                             |
| team             | string | The name of the team (e.g. “TeamA” or “TeamB”)                                                                                                                                                                                                                                                     |
| playerId         | int    | The identifier of the player on the team: 0 (= whole team if doubles), 1 or 2                                                                                                                                                                                                                      |
| reason           | string | <p>The reason of the code violation:</p><ul><li>Unspecified</li><li>UnreasonableDelay</li><li>AudibleObscenity</li><li>VisibleObscenity</li><li>BallAbuse</li><li>RacquetAbuse</li><li>VerbalAbuse</li><li>PhysicalAbuse</li><li>Coaching</li><li>UnsportsmanlikeConduct</li><li>Unknown</li></ul> |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED                                                                                                                                                                          |

| **Field Name**   | **Type** | **Description**                                                                                                                                                                                     |
| ---------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                                                                                          |
| timestamp        | string   | Timestamp of this packet                                                                                                                                                                            |
| eventElementType | string   | The event element type                                                                                                                                                                              |
| matchTime        | string   | The current match time                                                                                                                                                                              |
| team             | string   | The name of the team (e.g. “TeamA” or “TeamB”)                                                                                                                                                      |
| playerId         | int      | The identifier of the player on the team: 0 (= whole team if doubles), 1 or 2                                                                                                                       |
| reason           | string   | The reason of the code violation:Unspecified, UnreasonableDelay, AudibleObscenity, VisibleObscenity, BallAbuse, RacquetAbuse, VerbalAbuse, PhysicalAbuse, Coaching, UnsportsmanlikeConduct, Unknown |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED                                                                           |

## Time Violation Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The ATP packet sequence number                                                                                            |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| team             | string | The name of the team (e.g. “TeamA” or “TeamB”)                                                                            |
| playerId         | int    | The identifier of the player on the team: 0 (= whole team if doubles), 1 or 2                                             |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The ATP packet sequence number                                                                                            |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| team             | string   | The name of the team (e.g. “TeamA” or “TeamB”)                                                                            |
| playerId         | int      | The identifier of the player on the team: 0 (= whole team if doubles), 1 or 2                                             |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Physio Called Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| team             | string | The team which asked for the physio to be called                                                                          |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| team             | string   | The team which asked for the physio to be called                                                                          |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Physio Cancelled Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| team             | string | The team which asked for the physio to be called                                                                          |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The ATP packet sequence number                                                                                            |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| team             | string   | The team which asked for the physio to be called                                                                          |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Swap Server Packet (Doubles Only)

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| nextServer       | object | The next player/team to server                                                                                            |
| server           | object | The server of this point                                                                                                  |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| nextServer       | object   | The next player/team to server                                                                                            |
| server           | object   | The server of this point                                                                                                  |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Swap Receiver Packet (Doubles Only)

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| nextServer       | object | The next player/team to server                                                                                            |
| server           | object | The server of this point                                                                                                  |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The ATP packet sequence number                                                                                            |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| nextServer       | object   | The next player/team to server                                                                                            |
| server           | object   | The server of this point                                                                                                  |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Receiver Server Packet (Doubles Only)

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| nextServer       | object | The next team serving                                                                                                     |
| server           | object | The server of this point (same as nextServer for this packet)                                                             |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| nextServer       | object   | The next team serving                                                                                                     |
| server           | object   | The server of this point (same as nextServer for this packet)                                                             |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## On Court Coaching Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| team             | string | The team name (“TeamA” or “TeamB”)                                                                                        |
| status           | string | The status of coaching on court: “Started”, “Finished”, “Unknown”                                                         |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| team             | string   | The team name (“TeamA” or “TeamB”)                                                                                        |
| status           | string   | The status of coaching on court: “Started”, “Finished”, “Unknown”                                                         |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Time Announcement Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| time             | string | The local time of the match                                                                                               |
| matchTime        | string | The match time of this packet                                                                                             |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| time             | string   | The local time of the match                                                                                               |
| matchTime        | string   | The match time of this packet                                                                                             |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Move Umpires Chair Packet

| Field Name       | Type   | Description                                                                                                               |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int    | The packet sequence number                                                                                                |
| timestamp        | string | Timestamp of this packet                                                                                                  |
| eventElementType | string | The event element type                                                                                                    |
| matchTime        | string | The current match time                                                                                                    |
| delayStatus      | string | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

| **Field Name**   | **Type** | **Description**                                                                                                           |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                  |
| eventElementType | string   | The event element type                                                                                                    |
| matchTime        | string   | The current match time                                                                                                    |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED |

## Match Finished Packet

| **Field Name**   | **Type** | **Description**                                                                                                                                           |
| ---------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| seqNum           | int      | The packet sequence number                                                                                                                                |
| timestamp        | string   | Timestamp of this packet                                                                                                                                  |
| eventElementType | string   | The event element type                                                                                                                                    |
| matchTime        | string   | The current match time                                                                                                                                    |
| won              | string   | The team name who has won the match                                                                                                                       |
| reason           | string   | <p>The reason of winning - one of: - “Normally”</p><ul><li>“Retirement”</li><li>“SuddenDeath”</li><li>“FinishedReasonDefault"</li><li>“Unknown”</li></ul> |
| delayStatus      | string   | Optional field, if present this packet should be considered delayed. Can take one of two values: DELAYED or RECONSTRUCTED                                 |

N.B - If you are looking for a programmatic way of closing event websocket connections at the end of a match we would recommend using the MatchFinished packet as the trigger.

## Alarm Packet

| **Field Name**        | **Type** | **Description**                                          |
| --------------------- | -------- | -------------------------------------------------------- |
| seqNum                | int      | The packet sequence number                               |
| timestamp             | string   | Timestamp of this packet                                 |
| eventElementType      | string   | The event element type - Alarm                           |
| lastReceivedTimestamp | string   | The timestamp of the last received upstream event packet |

The Alarm Packet is sent when we suspect we have been disconnected from an onsite event. We will resend this packet every 25 seconds until the issue has been resolved, at which point we will send the next returned packet.

| Field Name            | Type   | Description                                              |
| --------------------- | ------ | -------------------------------------------------------- |
| seqNum                | int    | The packet sequence number                               |
| timestamp             | string | Timestamp of this packet                                 |
| eventElementType      | string | The event element type - Alarm                           |
| lastReceivedTimestamp | string | The timestamp of the last received upstream event packet |

## Correction Mode

If the umpire makes a mistake when entering data on the scoring tablet they will correct it. This changes the match state to *CorrectionMode*.

Within correction mode a sequence of packets will be received. These will either be:

● Undo packets which will reverse previous events. The score may be altered (e.g. going from 30-0 to 15-0) and the indicator for next server may change.

● Other packets effectively replacing the ones that were undone. These could be any other standard packets.

When all corrections have been made the next packet will change the match state from CorrectionMode to whatever the correct value is. The umpire will then reissue the correct score as a point scored packet, as the definitive confirmation of the current match score. From this point all packets are standard live packets as described previously.
