# XML Structure

## Keep-AliveMessage <a href="#message" id="message"></a>

Message is the root of the XML, it is structured as follows:

```xml
<Message>
    <Header>
        ...
    </Header>
    <Body>
        ...
    </Body>
</Message>
```

### Header <a href="#header" id="header"></a>

The header consists of general information, which can be later used as a reference. It is structured as follows:

```xml
<Header>
    <Type>2</Type>
    <MsgId>1</MsgId>
    <MsgGuid>16c9746d-619e-4e42-b8e1-fb95251c3859</MsgGuid>
    <ServerTimestamp>1489578474</ServerTimestamp>
</Header>
```

**Model**

| **Element** | **Data Type** | **Description**                                                          |
| ----------- | ------------- | ------------------------------------------------------------------------ |
| Events      | Array         | Array of Event                                                           |
| KeepAlive   | Array         | An array of active events – all the events that are live at current time |

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

An array of Event elements. Every Event element holds Fixture, Markets, and Livescore elements. It is structured as follows:

![](https://2846470291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ftv77Uhe1UsyYNAhnfDk8%2Fuploads%2Fgit-blob-45b5b6db1d9c8b336a4c59ee2647c9a0de7da699%2Flegacy-xml-ext-01.png?alt=media)

**Example:**

```xml
<Events>
  <Event FixtureId="1385821">
      <Fixture>
        ...
      </Fixture>
      <Markets>
        ...
      </Markets>
      <Livescore>
        ...
      </Livescore>
  </Event>
  <Event FixtureId="1385822">
    ...
  </Event>
  <Event FixtureId="1385823">
    ...
  </Event>
</Events>
```

**Model**

| **Element**     | **Data Type** | **Description**              |
| --------------- | ------------- | ---------------------------- |
| Event.FixtureID | int           | The unique ID of the fixture |

\
**Note:** Be advised that the above example is relevant for RMQ messages only, API message structure is slightly different, and does not include \<Event> tag - see example below:

```json
{
  "Header": {
    "Type": 3,
    "ServerTimestamp": 1647866624
  },
  "Body": [
    {
      "FixtureId": 8355875,
      "Fixture": {
        "Sport": {
          "Id": 6046,
          "Name": "Football"
        },
        "Location": {
          "Id": 243,
          "Name": "England"
        },
        "League": {
          "Id": 40789,
          "Name": "Development League U23"
        },
        "StartDate": "2022-03-21T13:00:00",
        "LastUpdate": "2022-03-20T01:15:32.791982",
        "Status": 1,
        "Participants": [
          {
            "Id": 51982938,
            "Name": "Crewe Alexandra U23",
            "Position": "1"
          },
          {
            "Id": 52323724,
            "Name": "Bristol City U23",
            "Position": "2"
          }
        ]
      },
```

## Fixture <a href="#fixture" id="fixture"></a>

The fixture element holds general data about the event.

```xml
<Fixture LastUpdate="2017-03-04T17:12:00Z" ExternalProviderId="578713">
  <Sport Id="6046" Name="Football"/>
  <Location Id="243" Name="England"/>
  <League Id="67" Name="Premier League"/>
  <StartDate>2017-03-04T15:30:00Z</StartDate>
  <Status>3</Status>
  <Participants>
    <Participant Id="19" Name="Liverpool" Position="1"/>
    <Participant Id="3" Name="Arsenal" Position="2"/>
  </Participants>
</Fixture>
```

**Model**

| **Element**                | **Data Type** | **Description**                                                                     |
| -------------------------- | ------------- | ----------------------------------------------------------------------------------- |
| Fixture.LastUpdate         | DateTime      | Timestamp representing the last time the fixture was updated                        |
| Fixture.ExternalProviderId | int           | OPTIONAL: For your convenience, an ID of the fixture in a provider of your choosing |
| Sport.Id                   | int           | The unique ID of the sport                                                          |
| Sport.Name                 | name          | The name of the sport                                                               |
| Location.Id                | int           | The unique ID of the location                                                       |
| Location.Name              | name          | The name of the location                                                            |
| League.Id                  | int           | The unique ID of the league                                                         |
| League.Name                | name          | The name of the league                                                              |
| StartDate                  | DateTime      | Timestamp representing the start date of the fixture                                |
| Status                     | enum          | The current status of the event                                                     |
| FixtureExtraData           | Array         | Array of Data                                                                       |
| Participants               | Array         | Array of Participant                                                                |

## Outright Fixture <a href="#outright-fixture" id="outright-fixture"></a>

The outright fixture is a part of the competition hierarchy as follow:

**`Note: The following format will not be sent for non-outright fixtures at this time.`**

```xml
<Competition Id="4620" Name="Moe" Type="1">
  <Events>
    <Event FixtureId="4020579">
      <OutrightFixture LastUpdate="2018-09-11T04:41:49.536Z">
        <Sport Id="687888" Name="Horse Racing"/>
        <Location Id="172" Name="Australia"/>
        <StartDate>2018-09-10T21:30:00.000Z</StartDate>
        <Status>3</Status>
        <Participants>
          <Participant Id="52067806" Name="Cascade County" Position="2" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">Peter Gelagotis</Data>
              <Data Name="Jockey">Ben Melham</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067807" Name="Days Of Glory" Position="3" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">Michelle Payne</Data>
              <Data Name="Jockey">Ms Michelle</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067808" Name="Do You Reckon" Position="4" IsActive="1">
            <ExtraData>
              <Data Name="Result">3</Data>
              <Data Name="TrainerName">M D Moroney</Data>
              <Data Name="Jockey">Patrick Moloney</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067809" Name="Hautclere" Position="5" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">M Ellerton &amp; S Zahra</Data>
              <Data Name="Jockey">Damien Thornton</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067810" Name="Me Cabo" Position="6" IsActive="1">
            <ExtraData>
              <Data Name="Result">2</Data>
              <Data Name="TrainerName">Nick Ryan</Data>
              <Data Name="Jockey">James Winks</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52066808" Name="Secret Vega" Position="7" IsActive="1">
            <ExtraData>
              <Data Name="Result">1</Data>
              <Data Name="TrainerName">Lloyd Kennewell</Data>
              <Data Name="Jockey">Joe Bowditch</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067811" Name="They Callmemalcom" Position="8" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">S C Bottomley</Data>
              <Data Name="Jockey">Brian Higgins</Data>
              <Data Name="JockeyWeight">58</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067812" Name="Hediard" Position="9" IsActive="1">
            <ExtraData>
              <Data Name="Result">4</Data>
              <Data Name="TrainerName">Anthony Freedman</Data>
              <Data Name="Jockey">Jye Mcneil</Data>
              <Data Name="JockeyWeight">56</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067813" Name="Linda Maria" Position="10" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">P &amp; P Snowden</Data>
              <Data Name="Jockey">Chris Parnham</Data>
              <Data Name="JockeyWeight">56</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
          <Participant Id="52067814" Name="Quora" Position="11" IsActive="1">
            <ExtraData>
              <Data Name="TrainerName">D &amp; B Hayes &amp; T Dabernig</Data>
              <Data Name="Jockey">Luke Nolen</Data>
              <Data Name="JockeyWeight">56</Data>
              <Data Name="SilkUrl">Https://Notcdn.Betstatic.Com.Au/Wgtprod-Silks/1048573-30381991-Sprite-65X65.Png</Data>
            </ExtraData>
          </Participant>
        </Participants>
      </OutrightFixture>
    </Event>
  </Events>
</Competition>
```

**Competition Model**

**`Note: This element is resuscrive. Every Competition element can have a Competitions element. Please consider that the competitions are constructred dynamically - Structure may change.`**

| **Element**  | **Data Type**        | **Description**                     |
| ------------ | -------------------- | ----------------------------------- |
| Id           | int                  | The ID of the competition           |
| Name         | string               | The name of the competition         |
| Type         | int                  | The type of the competition element |
| Competitions | List of competitions | Child competitions                  |

**Outright Fixture Model**

| **Element**                        | **Data Type** | **Description**                                                                         |
| ---------------------------------- | ------------- | --------------------------------------------------------------------------------------- |
| OutrightFixture.LastUpdate         | DateTime      | Timestamp representing the last time the fixture was updated                            |
| OutrightFixture.ExternalProviderId | int           | **OPTIONAL:** For your convenience, an ID of the fixture in a provider of your choosing |
| Sport.Id                           | int           | The unique ID of the sport                                                              |
| Sport.Name                         | name          | The name of the sport                                                                   |
| Location.Id                        | int           | The unique ID of the location                                                           |
| Location.Name                      | name          | The name of the location                                                                |
| StartDate                          | DateTime      | Timestamp representing the start date of the fixture                                    |
| Status                             | enum          | The current status of the event                                                         |
| FixtureExtraData                   | array         | Array of Data                                                                           |
| Participants                       | array         | Array of Participant                                                                    |

## Outright League <a href="#outright-league" id="outright-league"></a>

The outright league is a part of the competition hierarchy as follow:

**`Note: The following format will not be sent for non-outright fixtures at this time.`**

```xml
<Competitions>
  <Competition Id="5248" Name="Thomas Cup" Type="3">
  <Competitions>
    <Competition Id="457" Name="2020" Type="4">
    <Events>
      <Event FixtureId="4999614">
      <OutrightLeague LastUpdate="2019-11-18T09:40:42.586Z">
        <Sport Id="1149093" Name="Badminton" />
        <Location Id="248" Name="International" />
        <Status>1</Status>
      </OutrightLeague>
      </Event>
    </Events>
    </Competition>
  </Competitions>
  </Competition>
  <Competition Id="145" Name="Davis Cup" Type="3">
  <Competitions>
    <Competition Id="556" Name="2019" Type="4">
    <Events>
      <Event FixtureId="4999616">
      <OutrightLeague LastUpdate="2019-11-18T09:40:43.415Z">
        <Sport Id="54094" Name="Tennis" />
        <Location Id="248" Name="International" />
        <Status>1</Status>
      </OutrightLeague>
      </Event>
    </Events>
    </Competition>
  </Competitions>
  </Competition>
</Competitions>
```

**Competition Model**

**`Note: This element is resuscrive. Every Competition element can have a Competitions element. Please consider that the competitions are constructred dynamically - Structure may change.`**

| **Element**  | **Data Type**        | **Description**                     |
| ------------ | -------------------- | ----------------------------------- |
| Id           | int                  | The ID of the competition           |
| Name         | string               | The name of the competition         |
| Type         | int                  | The type of the competition element |
| Competitions | List of competitions | Child competitions                  |

**Outright League Model**

| **Element**                        | **Data Type** | **Description**                                                                         |
| ---------------------------------- | ------------- | --------------------------------------------------------------------------------------- |
| OutrightFixture.LastUpdate         | DateTime      | Timestamp representing the last time the fixture was updated                            |
| OutrightFixture.ExternalProviderId | int           | **OPTIONAL:** For your convenience, an ID of the fixture in a provider of your choosing |
| Sport.Id                           | int           | The unique ID of the sport                                                              |
| Sport.Name                         | name          | The name of the sport                                                                   |
| Location.Id                        | int           | The unique ID of the location                                                           |
| Location.Name                      | name          | The name of the location                                                                |
| Status                             | enum          | The current status of the event                                                         |

## Participant <a href="#participant" id="participant"></a>

An element that represents a participant (player, team, horse, etc.) in the event.

```xml
<Participant Id="51596051" Name="Sonoma Charro" Position="1" IsActive="1">
  <ExtraData>
    <Data Name="Result">1</Data>
    <Data Name="Owner">John Pinochet P.</Data>
    <Data Name="JockeyAddition">0</Data>
    <Data Name="ProgramNumber">13</Data>
    <Data Name="TrainerName">Pinochet P., John</Data>
    <Data Name="Form">5 - 8 - 8 - 3 - 3 - 1</Data>
    <Data Name="JockeyAllowance">0</Data>
    <Data Name="JockeyWeight">56</Data>
    <Data Name="Jockey">Robles, Pedro</Data>
    <Data Name="Blinkers">False</Data>
    <Data Name="Age">5</Data>
  </ExtraData>
</Participant>
```

**Model**

| **Element** | **Data Type** | **Description**                                                                                                                                                       |
| ----------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Id          | int           | The unique ID of the participant                                                                                                                                      |
| Name        | string        | The unique ID of the participant                                                                                                                                      |
| RotationId  | int           | The rotation ID of the participant                                                                                                                                    |
| Position    | string        | <p>In 2-participant events the positions will be 1 (home) or 2 (away)<br>For outright events the positions will represent the initial position of the participant</p> |
| IsActive    | bool          | <p>Will only show in outright events.<br>False if the participant is no longer active. For example: When a horse is set as non-runner</p>                             |
| ExtraData   | array         | Array of data                                                                                                                                                         |

## Extra Data <a href="#extra-data" id="extra-data"></a>

Extra data is an array of Data elements, which provide additional information about their parenting element in a name-value structure.

**`Note: This section applies for all Extra Data elements – FixtureExtraData, ParticipantExtraData, LivescoreExtraData and so on.`**

**Examples**

```xml
<FixtureExtraData>
  <Data Name=”RaceTitle”>Race 7</Data>
  <Data Name=”Category”>Handicap</Data>
</FixtureExtraData>
```

```xml
<ParticipantExtraData>
  <Data Name=”Jockey”> Medina, Jaime</Data>
  <Data Name=”ProgramNumber”>6</Data>
</ParticipantExtraData>
```

LiveScore ExtraData

```xml
<LivescoreExtraData>
  <Data Name=”Turn”>1</Data>
  <Data Name=”NumberOfPeriods”>3</Data>
</LivescoreExtraData>
```

**ExtraData Model**

| **Source** | **Data Type** | **Description**                   |
| ---------- | ------------- | --------------------------------- |
| Value      | string        | Representing the extra data value |
| Data.Name  | string        | The name of extra data field      |

## Markets <a href="#markets" id="markets"></a>

The market element is an array of **Market** elements. Every Market holds data regarding markets and bets.

```xml
<Markets>
  <Market Id="13" Name="European Handicap">
    <Provider Id="8" Name="Bet365" LastUpdate="2017-03-16T10:44:43.4209099Z">
      <Bet Id="18933138861385821" Name="1" Line="0:2" BaseLine="0:2" Status="1" Price="2.4" LastUpdate="2017-03-04T16:09:35Z"/>
      <Bet Id="18932538611385821" Name="X" Line="2:0" BaseLine="0:2" Status="1" Price="2.875" LastUpdate="2017-03-04T16:09:35Z"/>
      <Bet Id="18933127991385821" Name="2" Line="2:0" BaseLine="0:2" Status="1" Price="2.875" LastUpdate="2017-03-04T16:09:35Z"/>
    </Provider>
    <Provider Id="7" Name="Tipico" LastUpdate="2017-03-16T10:42:52.6619509Z">
      <Bet Id="9867935571385821" Name="1" Line="0:2" BaseLine="0:2" Status="1" Price="2.3" LastUpdate="2017-03-04T16:09:09Z"/>
      <Bet Id="9867335321385821" Name="X" Line="2:0" BaseLine="0:2" Status="1" Price="3" LastUpdate="2017-03-04T16:09:09Z"/>
      <Bet Id="9867924701385821" Name="2" Line="2:0" BaseLine="0:2" Status="1" Price="3.2" LastUpdate="2017-03-04T16:09:09Z"/>
    </Provider>
    <Provider Id="31" Name="William Hill" LastUpdate="2017-03-16T10:49:51.5557465Z">
      <Bet Id="11426129041385821" Name="1" Line="0:2" BaseLine="0:2" Status="1" Price="2.375" LastUpdate="2017-03-04T16:09:45Z"/>
      <Bet Id="12315064531385821" Name="X" Line="2:0" BaseLine="0:2" Status="1" Price="2.7" LastUpdate="2017-03-04T16:09:45Z"/>
      <Bet Id="14640192711385821" Name="2" Line="2:0" BaseLine="0:2" Status="1" Price="3" LastUpdate="2017-03-04T16:09:45Z"/>
    </Provider>
  </Market>
</Markets>
```

**Model**

| **Element** | **Data Type** | **Description**             |
| ----------- | ------------- | --------------------------- |
| Market.Id   | int           | The unique ID of the market |
| Market.Name | string        | The name of the market      |

`Note: order of elements may change between different messages (e.g. bets order could be '1', 'x', '2' and in a future message could be '1', '2', 'x'`

## Provider <a href="#provider" id="provider"></a>

ProvidersEvery market holds an array of **Providers**. Under every Provider, there is data for the market and its bets, as they were received from that Provider.

**Model**

| **Element**       | **Data Type** | **Description**                                                                     |
| ----------------- | ------------- | ----------------------------------------------------------------------------------- |
| Id                | int           | The unique ID of the provider                                                       |
| Name              | string        | The name of the provider                                                            |
| LastUpdate        | DateTime      | Timestamp representing the time the provider’s data for the market was last updated |
| ProviderFixtureId | string        | **OPTIONAL**: The fixture ID, as shown by the provider                              |
| ProviderLeagueId  | string        | **OPTIONAL**: The league ID, as shown by the provider                               |
| ProviderMarketId  | string        | **OPTIONAL**: The market ID, as shown by the provider                               |

## Bet <a href="#bet" id="bet"></a>

Every provider holds an array of bets. Every bet holds data as it was received from the provider. All the bets are a part of their Market ancestor (parent of Provider).

**Model**

| **Element**    | **Data Type** | **Description**                                                                                                                                             |
| -------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Id             | int           | The unique ID of the bet                                                                                                                                    |
| Name           | string        | The name of the bet                                                                                                                                         |
| Line           | string        | The line of the bet                                                                                                                                         |
| BaseLine       | string        | The base line helps you group all bets that belong together. In the example above – all bets with the same base line (0:2) belong together                  |
| Status         | enum          | The status of the bet                                                                                                                                       |
| StartPrice     | double        | The initial price of the bet, when it was first introduced                                                                                                  |
| Price          | double        | The price (odd) of the bet                                                                                                                                  |
| LayPrice       | double        | **OPTIONAL**                                                                                                                                                |
| PriceVolume    | double        | **OPTIONAL**                                                                                                                                                |
| LayPriceVolume | double        | **OPTIONAL**                                                                                                                                                |
| Settlement     | eunm          | Represents how the bet was settled (resulted)                                                                                                               |
| ProviderBetId  | string        | **OPTIONAL**: The bet ID, as shown by the provider                                                                                                          |
| LastUpdate     | DateTime      | Timestamp representing the time the bet was last updated                                                                                                    |
| ParticipantId  | int           | <p><strong>OPTIONAL</strong>: Reference ID to the participant in the fixture<br><code>Note: This attribute is only provided in outright fixtures</code></p> |

## Livescore <a href="#livescore" id="livescore"></a>

The livescore element holds all scores and statistics:

#### **Example 1** <a href="#example-1" id="example-1"></a>

```xml
<Livescore>
  <Scoreboard Status="3" CurrentPeriod="100" Time="5700">
    <Score Position="1">1</Score>
    <Score Position="2">3</Score>
  </Scoreboard>
  <Periods>
    <Period Type="100" IsFinished="true" IsConfirmed="true">
      <Score Position="1">1</Score>
      <Score Position="2">3</Score>
    </Period>
    <Period Type="10" IsFinished="true" IsConfirmed="true">
      <Score Position="1">0</Score>
      <Score Position="2">2</Score>
      <Incidents>
        <Incident Period="10" IncidentType="9" Seconds="180" ParticipantPosition="2" PlayerName="Valencia A.">
          <Score Position="1">0</Score>
          <Score Position="2">1</Score>
        </Incident>
        <Incident Period="10" IncidentType="9" Seconds="600" ParticipantPosition="2" PlayerName="Lingard J.">
          <Score Position="1">0</Score>
          <Score Position="2">2</Score>
        </Incident>
      </Incidents>
    </Period>
    <Period Type="20" IsFinished="true" IsConfirmed="true">
      <Score Position="1">1</Score>
      <Score Position="2">1</Score>
      <Incidents>
        <Incident Period="20" IncidentType="9" Seconds="2880" ParticipantPosition="1" PlayerName="Lacazette A.">
          <Score Position="1">1</Score>
          <Score Position="2">2</Score>
        </Incident>
        <Incident Period="20" IncidentType="9" Seconds="3720" ParticipantPosition="2" PlayerName="Lingard J.">
          <Score Position="1">1</Score>
          <Score Position="2">3</Score>
        </Incident>
      </Incidents>
    </Period>
  </Periods>
  <Statistics>
    <Statistic Type="1">
      <Value Position="1">12</Value>
      <Value Position="2">1</Value>
    </Statistic>
    <Statistic Type="6">
      <Value Position="1">3</Value>
      <Value Position="2">2</Value>
      <Incidents>
        <Incident Period="20" IncidentType="6" Seconds="3420" ParticipantPosition="2" PlayerName="Rojo M.">
          <Score Position="1">0</Score>
          <Score Position="2">1</Score>
        </Incident>
        <Incident Period="20" IncidentType="6" Seconds="4260" ParticipantPosition="1" PlayerName="Bellerin H.">
          <Score Position="1">1</Score>
          <Score Position="2">1</Score>
        </Incident>
        <Incident Period="20" IncidentType="6" Seconds="5160" ParticipantPosition="1" PlayerName="Koscielny L.">
          <Score Position="1">2</Score>
          <Score Position="2">1</Score>
        </Incident>
        <Incident Period="20" IncidentType="6" Seconds="5280" ParticipantPosition="1" PlayerName="Sanchez A.">
          <Score Position="1">3</Score>
          <Score Position="2">2</Score>
        </Incident>
        <Incident Period="20" IncidentType="6" Seconds="5280" ParticipantPosition="2" PlayerName="Herrera A.">
          <Score Position="1">3</Score>
          <Score Position="2">2</Score>
        </Incident>
      </Incidents>
    </Statistic>
    <Statistic Type="7">
      <Value Position="1">0</Value>
      <Value Position="2">1</Value>
      <Incidents>
        <Incident Period="20" IncidentType="7" Seconds="4380" ParticipantPosition="2" PlayerName="Pogba P.">
          <Score Position="1">0</Score>
          <Score Position="2">1</Score>
        </Incident>
      </Incidents>
    </Statistic>
    <Statistic Type="8">
      <Value Position="1">0</Value>
      <Value Position="2">0</Value>
    </Statistic>
    <Statistic Type="10">
      <Value Position="1">3</Value>
      <Value Position="2">3</Value>
    </Statistic>
    <Statistic Type="12">
      <Value Position="1">11</Value>
      <Value Position="2">10</Value>
    </Statistic>
  </Statistics>
  <LivescoreExtraData/>
</Livescore>
```

**Example 2**

```xml
<Livescore>
  <Scoreboard Status="2" CurrentPeriod="2" Time="-1">
    <Score Position="1">0</Score>
    <Score Position="2">1</Score>
  </Scoreboard>
  <Periods>
    <Period Type="1" IsFinished="true" IsConfirmed="true">
      <Score Position="1">1</Score>
      <Score Position="2">6</Score>
    </Period>
    <Period Type="2" IsFinished="false" IsConfirmed="false">
      <Score Position="1">3</Score>
      <Score Position="2">3</Score>
    </Period>
    <Period Type="60" IsFinished="false" IsConfirmed="false">
      <Score Position="1">40</Score>
      <Score Position="2">30</Score>
    </Period>
  </Periods>
  <Statistics>
    <Statistic Type="20">
      <Value Position="1">3</Value>
      <Value Position="2">6</Value>
    </Statistic>
    <Statistic Type="21">
      <Value Position="1">2</Value>
      <Value Position="2">2</Value>
    </Statistic>
  </Statistics>
  <ExtraData>
    <Data Name="Turn">1</Data>
    <Data Name="Serve Number">1</Data>
  </ExtraData>
</Livescore>
```

## Scoreboard <a href="#scoreboard" id="scoreboard"></a>

**Scoreboard Model**

`All child nodes are an array of Score`

| **Attribute** | **Data Type** | **Description**                                                                                    |
| ------------- | ------------- | -------------------------------------------------------------------------------------------------- |
| Status        | enum          | The current status of the event                                                                    |
| Description   | enum          | Provides additional information regarding the current status of the game                           |
| CurrentPeriod | enum          | The type of the current period of the event                                                        |
| Time          | int           | The current time of the event (should the sport support time) `Note: The time is given in seconds` |

**Score Model**

| **Source**     | **Data Type** | **Description**                                                                                                                                                       |
| -------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Score          | string        | The score of a specific participant in a Scoreboard or Period element                                                                                                 |
| Score.Position | int           | <p>In 2-participant events the positions will be 1 (home) or 2 (away)<br>For outright events the positions will represent the initial position of the participant</p> |

***

## Periods <a href="#periods" id="periods"></a>

**Periods Model**

`All child nodes are an array of Period. Every Period represents a period (previous or current) during the live event.`

| **Attributes** | **Data Type** | **Description**                                          |
| -------------- | ------------- | -------------------------------------------------------- |
| Type           | enum          | The type of the period                                   |
| IsFinished     | bool          | Indicates whether the period is finished or not          |
| IsConfirmed    | bool          | Indicates whether the period and its scores is confirmed |

`Note: Delivering the IsFinished as true and the IsConfirmed as false means we couldn't validate the final result of the specific period`

**Score Model**

| **Source**     | **Data Type** | **Description**                                                                                                                                                           |
| -------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Score          | string        | The score of a specific participant in a Scoreboard or Period element                                                                                                     |
| Score.Position | int           | <p>In 2-participant events the positions will be 1 (home) or 2 (away)<br><br>For outright events the positions will represent the initial position of the participant</p> |

**Incident Model**

Every period element may contain a list of incidents (e.g. goals that were scored). Incidents will appear as long as we have the information.

`Note: Incidents may be sent after a final status had been received.`

| **Attributes**      | **Data Type** | **Description**                                                                                                                                                           |
| ------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Periods             | enum          | The type of the period, in which the incident had occurred                                                                                                                |
| Seconds             | bool          | Time of incident occurrence                                                                                                                                               |
| ParticipantPosition | bool          | <p>In 2-participant events the positions will be 1 (home) or 2 (away)<br><br>For outright events the positions will represent the initial position of the participant</p> |
| PlayerName          | string        | The name of the player responsible for the incident                                                                                                                       |

***

### Statistics <a href="#statistics" id="statistics"></a>

An array of Statistics. Every Statistic represents an individual statistic during the live event. All statistics show the current values as they are (without period breakdown).

**Model**

| **Attributes** | **Data Type** | **Description**           |
| -------------- | ------------- | ------------------------- |
| Type           | enum          | The type of the statistic |

**Statistics Value**

```
<Statistic Type="1">
  <Value Position="1">9</Value>
  <Value Position="2">3</Value>
</Statistic>
```

| **Source**     | **Data Type** | **Description**                                                                                                                                                                                                               |
| -------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Value          | string        | The score of a specific participant in a Statistic element                                                                                                                                                                    |
| Value.Position | string        | The position of the participant whom this statistic value references to. In 2-participant events the values will be 1 (home) or 2 (away). In outright events, the positions will hold the actual position of the participants |

***

### Livescore important notes <a href="#livescore-important-notes" id="livescore-important-notes"></a>

1. Periods, scores, statistics, and time MAY be reverted due to mistakes made by the data providers.
2. The current total score of the event can be found under the Scoreboard element. The score for every individual period can be found within the Period elements.\
   `Note: Every period contains the score relevant to that period alone`
3. As a part of our data quality improvement, new periods and statistical types may be added all the time. Make sure your system is dynamic enough to cope with unidentified types.
4. A loss of coverage will occur if we are not able to provide data for an event due to technical difficulties or faulty data.\
   `Note: Should a loss of coverage occur – all bets will be suspended.`
5. There are several events that we are offering live up to 30 minutes before the event’s actual start time. Those events will be sent with the status “9”, which indicates that the event is about to start. The status is the attribute of the Scoreboard element.
6. The period type “80” stands for “BreakTime”. This period applies to ANY break during the live event. The type of the break will be in the Description attribute of the Scoreboard element, as seen below:

```
<Scoreboard Status="2" CurrentPeriod="80" Description=”1” Time="2700">
  <Score Position="1">2</Score>
  <Score Position="2">1</Score>
</Scoreboard>
```

**Football**

* Time
  * Time direction will be ascending until the end of the half.
  * During halftime, the time will always be 2700 seconds.
  * During overtime halftime, the time will always be 6300 seconds.
  * When the event is finished (without overtime), the time will always be 5400 seconds.
  * When the event is finished (after overtime), the time will always be 7200 seconds.
  * During penalties, there will be no time available.

**Basketball**

* Time
  * Time direction will be descending or increasing, depending on the information received.
  * At the end of every period, the time will be set to 0 (for the descending clock) or 10\12 mins (for the increasing clock).
* Periods
  * During NCAA events (College male basketball), the periods will show as halves (10 – 1st Half, 20 – 2nd Half) instead of quarters as usual.

**Tennis**

* Periods
  * When the Tennis match is finished, the period “60” (Game period) will be removed as it is no longer relevant.
  * The serving player will appear under the ExtraData element, within the “Turn” key. The possible values are 1 or 2 (according to the participant's position).

***

### Keep Alive <a href="#keep-alive" id="keep-alive"></a>

Keep alive messages contain an array of fixture IDs. These IDs are of the events that are live.

`Note: When there are no events available (no orders/no live events), an empty KeepAlive message will be sent.`

**Example**

```xml
<KeepAlive>
  <ActiveEvent>1234</ActiveEvent>
  <ActiveEvent>1111</ActiveEvent>
  <ActiveEvent>6213</ActiveEvent>
  <ActiveEvent>4021</ActiveEvent>
</KeepAlive>
```

**Model**

| **Attributes** | **Data Type** | **Description**           |
| -------------- | ------------- | ------------------------- |
| ActiveEvent    | int           | FixtureId of a live event |

***

### Heartbeat <a href="#heartbeat" id="heartbeat"></a>

Heartbeat messages will be sent every 5 seconds and they can be used to make sure that your connection is still alive.\
`Note: Heartbeat messages are without Body (only Header)`

**Example**

```xml
<Message>
  <Header>
    <Type>32</Type>
    <MsgGuid>ef3a5979-46ef-4f94-ae60-90c063ab3440</MsgGuid>
    <ServerTimestamp>1516013721</ServerTimestamp>
  </Header>
</Message>
```


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://docs.lsports.eu/u/legacy-products/odds-service/general/xml-structure.md?ask=<question>
```

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

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