Integration Service
- Martin Mand
- Tonis Danilson
- Helen Allas (Deactivated)
The V3 Integration Service supports a number of message types that are selectively activated to deliver precisely the set of information required to support the contracted products; you will receive only the messages you need. The integration service and the overall integration is separated into three distinct layers: Foundation, Complete and Data-only
Foundation-level integration is the minimum necessary level of feed integration that an integrator must reach to be able to provide services from Genius Sports through their sportsbook for the following products:
- Prematch Manager
- Inplay Manager without Match State
- Betbuilder
Fixture: describes the fixture and includes the information (name, date, sport, competition, competitors etc.) required to allow you to create the fixture in your trading platform.
MarketSet: a collection of one or more Market elements containing market information (name, type, selections, prices, trading status etc.) to allow you to create markets in your trading platform and associate them with a particular event.
ResultSet: when the outcome of a market is known, for example because the event has finished, a separate Result updategram will be sent for each market. This message will contain all the information you need to result the market and settle bets on your side.
Coverage: once a fixture has met the requirements necessary to be created, the Coverage command will be sent to update changes in the availability of match state feeds or the trading state feed or to confirm that the booking state has changed.
The aforementioned four message types allow a sportsbook to receive the information required to create fixtures and markets, update those fixtures and markets and then to result them once the outcomes become known for both the Prematch and Inplay products.
Complete integration includes the Foundation-level integration as well as the additional Match State for sportsbook platform.
For each InPlay modelled sport, a comprehensive match state collection provides two message types, Summary and Details. These messages describe the current state of a fixture by providing the trading platform with scores, phase information, match clock and so forth. For Inplay sports with more limited data available, a generic MultiSport message is available. Details of the match state collections are found by navigating to Understanding Match State page.
The aforementioned Match State message types allow a sportsbook to receive current event state information and drive match state reliant products within sportsbook platform. Without Match State, Inplay only delivers fixture information, market updates and results.
Data only integration is intended to deliver only match state or event feed data to a sportsbook platform. Customer will continue to receive Fixture and Coverage information, however trading-related data content (markets, OST, results) is not delivered. Details of the match state collections are found by navigating to Understanding Match State page. Alternative feed delivery option (Event based feed) is described in the /wiki/spaces/~439309987/pages/65699929 section.
Service and Message Types
The table below shows the messages that are delivered for each product offered.
Foundation | |||||
---|---|---|---|---|---|
Product | Fixture | MarketSet | ResultSet | Coverage | Match State |
PreMatch Manager | Yes | Yes | Yes | Yes | No |
InPlay Manager | Yes | Yes | Yes | Yes | No |
Complete | |||||
---|---|---|---|---|---|
Product | Fixture | MarketSet | ResultSet | Coverage | Match State |
PreMatch Manager | Yes | Yes | Yes | Yes | No |
InPlay Manager | Yes | Yes | Yes | Yes | Yes |
Data-only | |||||
---|---|---|---|---|---|
Product | Fixture | MarketSet | ResultSet | Coverage | Match State |
InPlay Manager | Yes | No | No | Yes | Yes |
Receiving Update Messages
We will push update messages to your endpoint. The messages will typically be XML (JSON supported as well) delivered over the public internet by HTTPS. Other protocols, for example HTTP or FTP (not recommended), or other message technologies can be supported if necessary.
Message delivery requires:
- Customer will deploy a Data Receiver that exposes the methods (ProcessMessage and Heartbeat) as described above,
- Customer will provide a URL of the data receiver,
- We will deploy an Integration Service to push messages in the agreed format to your specified URL,
- Customer will receive and process messages.
All our traffic originates from within the following IP addresses:
54.72.77.116
34.242.67.155
34.242.6.161
- 34.241.220.64
- 52.19.163.53
- 52.213.172.249
52.214.86.245
99.80.74.200
54.76.226.75
34.240.244.24
34.252.158.247
54.77.177.22
Message Sizes
The first Updategram sent for an event could include, depending on user's configuration of the system, Market elements for over 100 markets. This can result in large messages and your client application should be able to handle messages of at least 2MB in size in real time.
Handling the Commands
Updategram messages will be pushed to your Data Receiver as required to support the contracted services. Each of these messages should be processed by the Data Receiver and appropriate updates should be passed to the Trading Platform. All messages must be processed and acted upon.
Once a message has been received by your Data Receiver you should respond with a successful delivery acknowledgement message. This can be as simple as a HTTP 200 response. The response should be sent as quickly as possible after the message is received.
Entity ID's
Most of the entities we use – fixture, team, competitor, competition, season, market type etc. – will have an identifying number as well as a descriptive string. The descriptions and names are not guaranteed to be unique or to remain unchanged and must not be used for mapping.
You should always use the ID value for mapping or matching purposes
Updategram Header
Every Updategram will be sent with a header element that contains additional information that is not related to an individual fixture but to the message itself.
<Header> <MessageGuid>c64c3a47-4f34-427c-ba67-3bc031208849</MessageGuid> <TimeStampUtc>2015-10-22T09:27:19.2654001Z</TimeStampUtc> <Retry>0</Retry> <CustomerId>6012</CustomerId> <MessageFixtureOrder>215</MessageFixtureOrder> </Header>
Element | Type | Description |
---|---|---|
MessageGuid | GUID | A unique identifier for the message to allow discovery of the message within log files or services |
TimeStampUtc | DateTime | The time that the message was generated for despatch |
Retry | Integer | The number of times that delivery of this message has been attempted. This field will increment with each attempt; the TimeStampUtc field will not be updated for retries. |
CustomerId | Integer, optional | A unique identifier for the customer. Can be used to differentiate between service instances in a multi-channel system. Off by default; activated on request. |
MessageFixtureOrder | Integer, optional | A counter indicating the message order. |
Fixture
Purpose: Fixture is used to pass information about a sporting event to the Data Receiver. This data allows a new fixture to be inserted into the Trading Platform or an existing fixture to be updated (for example because the start time has changed). Fixture will always be the first command sent for a particular match. Each Fixture message will describe precisely one fixture.
Processing: when Fixture message is received you should either:
- Insert a new fixture into the Trading Platform using the details provided, or
- Update a fixture that already exists in Trading Platform.
Any messages relating to a particular fixture will include the ID number held in the Fixture.Id element.
Fixture
An object that describes a fixture. The following message a football match between Olympique Marseille and RB Leipzig in UEFA Europa League, detailing each player under each team (player information is provided only when available).
<?xml version="1.0" encoding="utf-8"?> <Updategram xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.sportsdataservices.com/integrationService/v3"> <Header> <MessageGuid>6a39609c-5d82-45b4-8ff0-d409286b90c1</MessageGuid> <TimeStampUtc>2018-04-12T19:06:57.344251Z</TimeStampUtc> <Retry>0</Retry> <ChannelId>7026</ChannelId> </Header> <Fixture> <Id>5235368</Id> <Name>Olympique Marseille v RB Leipzig</Name> <FixtureType>Match</FixtureType> <Status>Scheduled</Status> <StartTimeUtc>2018-04-12T19:05:00Z</StartTimeUtc> <Sport> <Id>10</Id> <Name>Football</Name> </Sport> <Competition> <Id>2072</Id> <Name>UEFA Europa League</Name> <Region> <Id>6</Id> <Name>Europe</Name> </Region> </Competition> <Season> <Id>64680</Id> <Name>UEFA Europa League 2017 2018</Name> </Season> <Round> <Id>398950</Id> <Name>Olympique Marseille v RB Leipzig</Name> </Round> <Competitors> <Competitor> <Id>10134</Id> <Name>Olympique Marseille</Name> <HomeAway>Home</HomeAway> <Competitors> <Competitor> <Id>753412</Id> <Name>Sanson, M</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Morgan</FirstName> <LastName>Sanson</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>446294</Id> <Name>Sertic, G</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Gregory</FirstName> <LastName>Sertic</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>134222</Id> <Name>Payet, D</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Dimitri</FirstName> <LastName>Payet</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>715427</Id> <Name>Thauvin, F</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Florian</FirstName> <LastName>Thauvin</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>792458</Id> <Name>Lopez, Maxime</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Maxime</FirstName> <LastName>Lopez</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>792620</Id> <Name>Sarr, B</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Bouna</FirstName> <LastName>Sarr</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>140495</Id> <Name>Pele, Y</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Yohann</FirstName> <LastName>Pele</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>809709</Id> <Name>Zambo Anguissa, AF</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Andre-Franck</FirstName> <LastName>Zambo Anguissa</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>826979</Id> <Name>Escales, F</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Florian</FirstName> <LastName>Escales</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>142530</Id> <Name>Rolando</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Roland Jorge</FirstName> <LastName>Pires da Fonseca</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>726870</Id> <Name>N'Jie, C</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Clinton</FirstName> <LastName>N'Jie</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>454167</Id> <Name>Sakai, H</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Hiroki</FirstName> <LastName>Sakai</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>179008</Id> <Name>Bedimo, H</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Henri</FirstName> <LastName>Bedimo</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>993291</Id> <Name>Boubacar Kamara</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Boubacar</FirstName> <LastName>Kamara</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>717082</Id> <Name>Andonian, G</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Gaël</FirstName> <LastName>Andonian</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>152060</Id> <Name>Luiz Gustavo</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Luiz Gustavo</FirstName> <LastName>Dias</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>128679</Id> <Name>Mandanda, S</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Steve</FirstName> <LastName>Mandanda</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>130340</Id> <Name>Rami, A</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Adil</FirstName> <LastName>Rami</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>752734</Id> <Name>Ocampos, L</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Lucas</FirstName> <LastName>Ocampos</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>548202</Id> <Name>Germain, V</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Valere</FirstName> <LastName>Germain</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>755156</Id> <Name>Amavi, J</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Jordan</FirstName> <LastName>Amavi</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>1004782</Id> <Name>Sari, Y</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Yusuf</FirstName> <LastName>Sari</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>518432</Id> <Name>Abdennour, A</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Aymen</FirstName> <LastName>Abdennour</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>129884</Id> <Name>Mitroglou, K</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Kostas</FirstName> <LastName>Mitroglou</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>1034234</Id> <Name>Rocchia, C</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Christopher</FirstName> <LastName>Rocchia</LastName> <CompetitorType>Person</CompetitorType> </Competitor> </Competitors> <CompetitorType>Team</CompetitorType> </Competitor> <Competitor> <Id>500564</Id> <Name>RB Leipzig</Name> <HomeAway>Away</HomeAway> <Competitors> <Competitor> <Id>821353</Id> <Name>Upamecano, D</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Dayot</FirstName> <LastName>Upamecano</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>1610</Id> <Name>Coltorti, F</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Fabio</FirstName> <LastName>Coltorti</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>549643</Id> <Name>Demme, D</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Diego</FirstName> <LastName>Demme</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>540638</Id> <Name>Kaiser, D</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Dominik</FirstName> <LastName>Kaiser</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>583133</Id> <Name>Poulsen, YY</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Yussuf Yurary</FirstName> <LastName>Poulsen</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>794422</Id> <Name>Klostermann, L</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Lukas</FirstName> <LastName>Klostermann</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>567335</Id> <Name>Sabitzer, M</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Marcel</FirstName> <LastName>Sabitzer</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>499789</Id> <Name>Forsberg, E</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Emil</FirstName> <LastName>Forsberg</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>446085</Id> <Name>Gulácsi, P</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Péter</FirstName> <LastName>Gulácsi</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>569505</Id> <Name>Orban, W</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Willi</FirstName> <LastName>Orban</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>443074</Id> <Name>Ilsanker, S</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Stefan</FirstName> <LastName>Ilsanker</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>789545</Id> <Name>Keïta, Naby</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Naby</FirstName> <LastName>Keïta</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>752959</Id> <Name>Werner, Timo</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Timo</FirstName> <LastName>Werner</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>729174</Id> <Name>Halstenberg, Marcel</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Marcel</FirstName> <LastName>Halstenberg</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>754019</Id> <Name>Schmitz, B</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Benno</FirstName> <LastName>Schmitz</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>877235</Id> <Name>Bernardo</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Bernardo</FirstName> <LastName>Fernandes da Silva Junior</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>791112</Id> <Name>Laimer, K</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Konrad</FirstName> <LastName>Laimer</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>711416</Id> <Name>Bruma</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Armindo</FirstName> <LastName>Tué Na Bangna</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>564869</Id> <Name>Mvogo, Y</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Yvon Landry</FirstName> <LastName>Mvogo Nganoma</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>994894</Id> <Name>Köhn, P</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Philipp</FirstName> <LastName>Köhn</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>965512</Id> <Name>Konate, I</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Ibrahima</FirstName> <LastName>Konate</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>994897</Id> <Name>Abouchabaka, E</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Elias</FirstName> <LastName>Abouchabaka</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>799871</Id> <Name>Augustin, J</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Jean-Kevin</FirstName> <LastName>Augustin</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>805512</Id> <Name>Martinovic, Dominik</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Dominik</FirstName> <LastName>Martinovic</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>997885</Id> <Name>Kühn, N</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Nicolas-Gerrit</FirstName> <LastName>Kühn</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>998194</Id> <Name>Ludewig, K</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Kilian</FirstName> <LastName>Ludewig</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>998195</Id> <Name>Majetschak, E</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Erik</FirstName> <LastName>Majetschak</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>506031</Id> <Name>Kampl, K</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Kevin</FirstName> <LastName>Kampl</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>860265</Id> <Name>Lookman, A</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Ademola</FirstName> <LastName>Lookman</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>1042602</Id> <Name>Stierlin, N</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Niclas</FirstName> <LastName>Stierlin</LastName> <CompetitorType>Person</CompetitorType> </Competitor> </Competitors> <CompetitorType>Team</CompetitorType> </Competitor> </Competitors> <AggregateEventInfo/> <ExternalId>1659322</ExternalId> <FootballProperties> <ExtraTimeProperties> <IsExtraTime>true</IsExtraTime> <IsSecondLeg>true</IsSecondLeg> <FirstLegId>5235367</FirstLegId> <AwayGoalsAfterNormalTime>true</AwayGoalsAfterNormalTime> <AwayGoalsAfterExtraTime>true</AwayGoalsAfterExtraTime> </ExtraTimeProperties> <MatchDuration>PT1H30M</MatchDuration> <ExtraTimeDuration>PT30M</ExtraTimeDuration> </FootballProperties> </Fixture> </Updategram>
The following message describes a tennis match from Tunis Open Challenger between Domingues, J and Bellalouna, M
<?xml version="1.0" encoding="utf-8"?> <Updategram xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.sportsdataservices.com/integrationService/v3"> <Header> <MessageGuid>93612679-5c76-485c-bbb3-495b14611e91</MessageGuid> <TimeStampUtc>2018-04-16T11:11:02.1426972Z</TimeStampUtc> <Retry>0</Retry> <ChannelId>7026</ChannelId> </Header> <Fixture> <Id>5293414</Id> <Name>Domingues, J v Bellalouna, M</Name> <FixtureType>Match</FixtureType> <Status>Scheduled</Status> <StartTimeUtc>2018-04-16T11:18:00Z</StartTimeUtc> <Sport> <Id>24</Id> <Name>Tennis</Name> </Sport> <Competition> <Id>4002</Id> <Name>Tunis Open Challenger</Name> <Region> <Id>64</Id> <Name>Tunisia</Name> </Region> </Competition> <Season> <Id>73422</Id> <Name>2018 Tunis Open Challenger</Name> </Season> <Round> <Id>406150</Id> <Name>Round 1</Name> </Round> <Competitors> <Competitor> <Id>740138</Id> <Name>Domingues, J</Name> <HomeAway>Home</HomeAway> <Competitors /> <FirstName>Joao</FirstName> <LastName>Domingues</LastName> <CompetitorType>Person</CompetitorType> </Competitor> <Competitor> <Id>1050824</Id> <Name>Bellalouna, M</Name> <HomeAway>Away</HomeAway> <Competitors /> <FirstName>Mohamed Ali</FirstName> <LastName>Bellalouna</LastName> <CompetitorType>Person</CompetitorType> </Competitor> </Competitors> <ExternalId>1686744</ExternalId> <TennisProperties> <NumberOfSets>3</NumberOfSets> <FinalSet>TieBreak</FinalSet> <ScoringSystemForServiceGames>StandardAdvantage</ScoringSystemForServiceGames> <CourtSurface>Clay</CourtSurface> </TennisProperties> </Fixture> </Updategram>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the fixture |
Name | String | The name of the fixture |
FixtureType | FixtureType | An Enum describing the type of fixture. Possible values: |
Status | FixtureStatus | An Enum describing the status of the fixture. Possible values: Scheduled Deleted Unknown |
StartTimeUtc | DateTime | The start time of the fixture in UTC |
Sport | Sport | An object describing the sport within which the fixture is played |
Competition | Competition | An object describing the competition within which the fixture is played |
Season | Season | An object describing a season within a competition |
TourSeason | Season, optional | An object describing the tour within which the fixture is played, if applicable. This element has been deprecated and is no longer in use. |
Round | Round, optional | An object describing a round within a season |
Venue | Venue, optional | An object describing the venue at which the fixture is played |
Competitors | Competitor | A collection of objects describing the competitors |
AggregateEventInfo | AggregateEventInfo, optional | An object that holds additional information about an aggregate event |
ExternalIds | Array of ExternalId | An object that holds Client fixture/competitor information in an array |
BasketballProperties, FootballProperties, TennisProperties | SportProperties, optional | An object containing information specific to a basketball, football or a tennis match; not populated for other sports |
AssociationFixtureId | String, optional | Where appropriate, the fixture ID used to build a link to a fixture's streaming feed |
IsOff | Boolean, optional | Used only for horse races. False until the race has started, then True. |
ExternalIds
We can supply a fixture matching service, for which we will need to integrate your External Fixtures feed. More information about how External Fixture feeds can be integrated can be found on the following Confluence page.
This can help if, for example, you wish to consume our in-play services and match our fixtures or competitors to those that might already exist within your trading platform. When the fixture matching service is active, the ExternalIds element will be populated with an array of your ExternalId objects (Source, Id).
<ExternalIds> <ExternalId> <Source>5153</Source> <Id>548412135485</Id> </ExternalId> <ExternalId> <Source>8411</Source> <Id>1254-2244</Id> </ExternalId> </ExternalIds>
ExternalId
An object that holds Client fixture/competitor information.
<ExternalId> <Source>5153</Source> <Id>548412135485</Id> </ExternalId>
Element | Type | Description |
---|---|---|
Id | String | Customer's fixture/competitor ID, if available and required |
Source | String | Customer's fixture/competitor Source ID, if available and required |
Sport
An object that describes a sport.
<Sport> <Id>10</Id> <Name>Football</Name> </Sport>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the sport |
Name | String | The name of the sport |
Sport IDs and Names:
ID | Name |
11205863 | 3x3 Basketball |
17 | American Football |
2 | Australian Rules |
271554 | Badminton |
3 | Baseball |
4 | Basketball |
7950337 | Beach Volleyball |
5 | Boxing |
6 | Cricket |
7 | Cycling |
8 | Darts |
10915624 | eSports |
10 | Football |
491393 | Futsal |
6463040 | Gaelic Football |
12 | Golf |
99614 | Handball |
208627 | Hockey |
14 | Horse Racing |
6463041 | Hurling |
15 | Ice Hockey |
300115 | Martial Arts/UFC |
16 | Motor Sport |
73743 | Rugby League |
73744 | Rugby Union |
22 | Snooker |
437727 | Squash |
269467 | Table Tennis |
24 | Tennis |
91189 | Volleyball |
Competition
An object that describes a competition.
<Competition> <Id>115</Id> <Name>Kategoria Superiore</Name> <Region> <Id>218</Id> <Name>Albania</Name> </Region> <Gender>Male</Gender> </Competition>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the competition |
Name | String | The name of the competition |
Region | Region | An object that describes the region within which the competition is held |
Gender | Gender, optional | An enum describing the gender of the competitors. Possible values: |
Region
An object that describes a region.
<Region> <Id>218</Id> <Name>Albania</Name> </Region>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the region |
Name | String | The name of the region |
Season
An object that describes a season.
<Season> <Id>46344</Id> <Name>Kategoria Superiore 2015-2016</Name> </Season>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the season |
Name | String | The name of the season |
Round
An object that describes a round.
<Round> <Id>221896</Id> <Name>Round 7</Name> </Round>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the round |
Name | String | The name of the round |
Venue
An object that describes a venue.
<Venue> <Id>1970</Id> <Name>Stadiumi Skënderbeu</Name> <Region> <Id>3181898</Id> <Name>Korçë</Name> </Region> </Venue>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the venue |
Name | String | The name of the venue |
Region | Region | An object that describes the region within which the venue is located |
Competitor
An object that describes a competitor. This can be a team or an individual player.
<Competitor> <Id>127134</Id> <Name>KS Skënderbeu Korçë</Name> <HomeAway>Home</HomeAway> </Competitor>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the competitor |
Name | String | The name of the competitor |
CompetitorType | CompetitorType | An Enum describing the competitor type. Possible values: |
HomeAway | HomeAway, optional | An Enum describing the home or away status of the competitor. Possible values: |
Competitors | Competitor, optional | An array of competitors |
FirstName | String, optional | When the competitor is a player, this is the first name of the player |
LastName | String, optional | When the competitor is a player, this is the last name of the player |
SquadNumber | String, optional | In some sports, the player's squad number |
Position | String, optional | In some sports, a description of the player's position within the team |
Gender | Gender, optional | Indicator of a player's gender |
AgeCategory | String, optional | Describes the age of the competitors. Possible values include: |
ExternalId | String, optional | A customer's competitor ID, if available and required |
AggregateEventInfo
An object that describes a season.
<AggregateEventInfo> <CurrentHomeTeamFirstLegScore>1</CurrentHomeTeamFirstLegScore> <CurrentAwayTeamFirstLegScore>0</CurrentAwayTeamFirstLegScore> </AggregateEventInfo>
Element | Type | Description |
---|---|---|
CurrentHomeTeamFirstLegScore | Integer | The current home team's first leg score |
CurrentAwayTeamFirstLegScore | Integer | The current away team's first leg score |
BasketballProperties
An object that provides basketball-specific details for a basketball match.
<BasketballProperties> <BasketballAssociation>FIBA</BasketballAssociation> </BasketballProperties>
Element | Type | Description |
---|---|---|
BasketballAssociation | String | The name of the association under whose rules the fixture is to be played |
FootballProperties
An object that provides football-specific details for a football match.
<FootballProperties> <ExtraTimeProperties/> <MatchDuration>PT1H30M</MatchDuration> <ExtraTimeDuration>PT30M</ExtraTimeDuration> </FootballProperties>
Element | Type | Description |
---|---|---|
ExtraTimeProperties | FootballExtraTimeProperties | An object that describes how (and if) the fixture might go to extra time |
MatchDuration | Timespan | The scheduled duration of the fixture |
ExtraTimeDuration | Timespan | The scheduled duration of extra time, if played |
FootballExtraTimeProperties
An object that provides football-specific details for a football match.
<ExtraTimeProperties> <IsExtraTime>True</IsExtraTime> <IsSecondLeg>True</IsSecondLeg> <FirstLegId>54876512</FirstLegId> <GoesStraightToPenalties>False</GoesStraightToPenalties> <AwayGoalsAfterNormalTime>True</AwayGoalsAfterNormalTime> <AwayGoalsAfterExtraTime>True</AwayGoalsAfterExtraTime> </ExtraTimeProperties>
Element | Type | Description |
---|---|---|
IsExtraTime | Boolean | True if the fixture could go to extra time, False otherwise |
IsSecondLeg | Boolean | True if this is the second leg of a two leg match, False otherwise |
FirstLegId | Integer | The fixture ID of the first leg if this is the second leg of a two leg match |
GoesStraightToPenalties | Boolean | True if the fixture will go straight to penalties in the event of a full-time draw, False otherwise |
AwayGoalsAfterNormalTime | Boolean | True if the "Away Goal Rule" applies after normal time |
AwayGoalsAfterExtraTime | Boolean | True if the "Away Goal Rule" applies after Extra time |
TennisProperties
An object that provides tennis-specific details for a tennis match.
<TennisProperties> <NumberOfSets>3</NumberOfSets> <FinalSet>TieBreak</FinalSet> <ScoringSystemForServiceGames>StandardAdvantage</ScoringSystemForServiceGames> <CourtSurface> Unset</CourtSurface> </TennisProperties>
Element | Type | Description |
---|---|---|
NumberOfSets | Integer | The maximum number of sets to be played in the match |
FinalSet | FinalSet | An Enum describing the type of the final set of the match. Values: |
ScoringSystemForServiceGames | ScoringSystemForServiceGames | An Enum describing the scoring systemfor service (as opposed to Tie Break) games. Values: |
CourtSurface | CourtSurface | An Enum describing the court surface upon which the match is to be played. Values: |
MarketSet
Purpose: MarketSet holds a collection of Market instructions for a specified fixture. MarketSet may include one or many Market objects, each of which will create or update precisely one market instance.
Processing: when Market is received a new market should be created in the Trading Platform (or an existing market updated) in the fixture referenced by MarketSet.FixtureId using the details provided. Market includes selections, market type and other information required to allow you to insert or update a market in your trading platform.
Example Message – MarketSet
The example below shows a MarketSet for fixture 3476056. Some elements have been truncated.
<MarketSet> <FixtureId>3476056</FixtureId> <Markets> <Market> <Id>100001331</Id> <Sequence>0</Sequence> <TradingStatus>Suspended</TradingStatus> <Name>Match Result</Name> <ExpiryUtc>2015-10-24T09:59:59Z</ExpiryUtc> <MarketType> <Id>2</Id> <Name>Match Result</Name> <IsHandicap>false</IsHandicap> </MarketType> <InPlay>true</InPlay> <Selections> ... Selections truncated for readability </Selections> </Market> ... Markets truncated for readability </Markets> </MarketSet>
Each MarketSet will contain one or more Market elements.
Example Message – Market, Match Result
Exhaustive markets, like Match Result, include an Outcome element that provides additional information about the selection.
<Market> <Id>100001331</Id> <Sequence>0</Sequence> <TradingStatus>Suspended</TradingStatus> <Name>Match Result</Name> <ExpiryUtc>2015-10-24T09:59:59Z</ExpiryUtc> <MarketType> <Id>2</Id> <Name>Match Result</Name> <IsHandicap>false</IsHandicap> </MarketType> <InPlay>true</InPlay> <Selections> <Selection> <Id>300002720</Id> <TradingStatus>Trading</TradingStatus> <Name>FK Sementchi Farg'ona</Name> <CompetitorId>810068</CompetitorId> <Outcome> <Id>1</Id> <Name>Home</Name> </Outcome> <Numerator>1</Numerator> <Denominator>20</Denominator> <Decimal>1.05</Decimal> </Selection> <Selection> <Id>300002721</Id> <TradingStatus>Trading</TradingStatus> <Name>Draw</Name> <Outcome> <Id>2</Id> <Name>Draw</Name> </Outcome> <Numerator>15</Numerator> <Denominator>2</Denominator> <Decimal>8.5</Decimal> </Selection> <Selection> <Id>300002722</Id> <TradingStatus>Trading</TradingStatus> <Name>Xorazm Urganch</Name> <CompetitorId>475759</CompetitorId> <Outcome> <Id>3</Id> <Name>Away</Name> </Outcome> <Numerator>24</Numerator> <Denominator>1</Denominator> <Decimal>25.0</Decimal> </Selection> </Selections> </Market>
Example Message – Market, Asian Handicap
Handicap markets, like Asian Handicap or Total Goals Over/Under, will include a Handicap element that provides details of the handicap line.
<Market> <Id>100001332</Id> <Sequence>0</Sequence> <TradingStatus>Suspended</TradingStatus> <Name>Asian Handicap</Name> <ExpiryUtc>2015-10-24T09:59:59Z</ExpiryUtc> <Handicap>2.5</Handicap> <MarketType> <Id>82</Id> <Name>Asian Handicap</Name> <IsHandicap>true</IsHandicap> </MarketType> <InPlay>true</InPlay> <Selections> <Selection> <Id>300002723</Id> <TradingStatus>Trading</TradingStatus> <Name>FK Sementchi Farg'ona</Name> <CompetitorId>810068</CompetitorId> <Outcome> <Id>1</Id> <Name>Home</Name> </Outcome> <Numerator>23</Numerator> <Denominator>20</Denominator> <Decimal>2.15</Decimal> </Selection> <Selection> <Id>300002724</Id> <TradingStatus>Trading</TradingStatus> <Name>Xorazm Urganch</Name> <CompetitorId>475759</CompetitorId> <Outcome> <Id>3</Id> <Name>Away</Name> </Outcome> <Numerator>37</Numerator> <Denominator>50</Denominator> <Decimal>1.74</Decimal> </Selection> </Selections> </Market>
Example Message – Correct Score
Correct Score market types (as in this example from FK Sementchi Farg'ona v Xorazm Urganch) include a Range element that encodes the score necessary for the selection to be the winning outcome. Range.Low is always the first (home team's score) value in the score, Range.High the second (away team's score), so the following element represents a score of 3-1.
<Range> <High>1.0</High> <Low>3.0</Low> </Range> The Correct Score market looks like this: <Market> <Id>100001333</Id> <Sequence>0</Sequence> <TradingStatus>Suspended</TradingStatus> <Name>Correct Score</Name> <ExpiryUtc>2015-10-24T09:59:59Z</ExpiryUtc> <MarketType> <Id>91</Id> <Name>Correct Score</Name> <IsHandicap>false</IsHandicap> </MarketType> <InPlay>true</InPlay> <Selections> <Selection> <Id>300002731</Id> <TradingStatus>Trading</TradingStatus> <Name>FK Sementchi Farg'ona 2-0</Name> <CompetitorId>810068</CompetitorId> <Range> <High>0.0</High> <Low>2.0</Low> </Range> <Numerator>22</Numerator> <Denominator>5</Denominator> <Decimal>5.4</Decimal> </Selection> <Selection> <Id>300002732</Id> <TradingStatus>Trading</TradingStatus> <Name>FK Sementchi Farg'ona 2-1</Name> <CompetitorId>810068</CompetitorId> <Range> <High>1.0</High> <Low>2.0</Low> </Range> <Numerator>23</Numerator> <Denominator>4</Denominator> <Decimal>6.75</Decimal> </Selection> ... Selections truncated for readability </Selections> </Market>
Example Message – Tennis Game Correct Score
Unlike most Correct Score market types, the Game Correct Score (as in this example from Knapp, K v Stosur, S) in tennis has only a one populated element within Range because the winning player's game point score in tennis is never used. In these market types the "Home" player's score (Knapp, K) will represented by Range.High and the "Away" player's score (Stosur, S) by Range.Low.
<Id>100001359</Id> <Sequence>9</Sequence> <TradingStatus>Open</TradingStatus> <Name>Game Score (Game 9)</Name> <ExpiryUtc>2015-10-24T13:34:59Z</ExpiryUtc> <Handicap i:nil="true" /> <MarketType> <Id>11103</Id> <Name>Numbered Game Score</Name> <IsHandicap>false</IsHandicap> </MarketType> <InPlay>true</InPlay> <Selections> <Selection> <Id>300002817</Id> <TradingStatus>Trading</TradingStatus> <Name>Kasatkina, D/Vesnina, E to 15</Name> <CompetitorId>840539</CompetitorId> <Range> <High>15.0</High> </Range> <Numerator>13</Numerator> <Denominator>10</Denominator> <Decimal>2.3</Decimal> </Selection> <Selection> <Id>300002818</Id> <TradingStatus>Trading</TradingStatus> <Name>Kasatkina, D/Vesnina, E to 30</Name> <CompetitorId>840539</CompetitorId> <Range> <High>30.0</High> </Range> <Numerator>19</Numerator> <Denominator>10</Denominator> <Decimal>2.9</Decimal> </Selection> ... Selections truncated for readability </Selections> </Market>
Example Message - Individual Player Market
Individual player markets will contain the selections relevant to the market and the Id of the competitor can be found at the end in the CompetitorOne element. So in the example below, the selections relate to how many Passing Touchdowns Steven Montez will throw and the players Id can be found within the CompetitorOne element: 1017218. For Head-to-Head markets, the second competitor will be defined by CompetitorTwo
<Market> <Id>153341800</Id> <Sequence>0</Sequence> <TradingStatus>Suspended</TradingStatus> <Name>Steven Montez - Total Passing Touchdowns Over/Under 0.50</Name> <ExpiryUtc>2024-08-14T14:00:00Z</ExpiryUtc> <Handicap>0.50</Handicap> <MarketType> <Id>15202</Id> <Name>Individual Player - Total Passing Touchdowns Over/Under</Name> <IsHandicap>true</IsHandicap> </MarketType> <InPlay>true</InPlay> <Selections> <Selection> <Id>451443924</Id> <TradingStatus>Trading</TradingStatus> <Name>Over</Name> <Outcome> <Id>30</Id> <Name>Over</Name> </Outcome> <Numerator>31</Numerator> <Denominator>20</Denominator> <Decimal>2.55</Decimal> </Selection> <Selection> <Id>451443925</Id> <TradingStatus>Trading</TradingStatus> <Name>Under</Name> <Outcome> <Id>31</Id> <Name>Under</Name> </Outcome> <Numerator>13</Numerator> <Denominator>25</Denominator> <Decimal>1.52</Decimal> </Selection> </Selections> <CompetitorOne>1017218</CompetitorOne> </Market>
MarketSet
An object that contains a number of market objects.
<MarketSet> <FixtureId>3476056</FixtureId> <Markets> ... Markets truncated for readability </Markets> </MarketSet>
Element | Type | Description |
---|---|---|
FixtureId | Integer | An immutable identifier for a fixture |
Markets | Market | An array of market objects, each describing a market within the identified fixture |
Market
An object that describes a market.
<Market> <Id>100013200</Id> <Sequence>0</Sequence> <TradingStatus>Open</TradingStatus> <Name>Match Result</Name> <ExpiryUtc>2016-04-29T09:35:00Z</ExpiryUtc> <MarketType> <Id>322</Id> <Name>Match</Name> <IsHandicap>false</IsHandicap> </MarketType> <InPlay>true</InPlay> <Selections> <Selection> <Id>300053291</Id> <TradingStatus>Trading</TradingStatus> <Name>Schwartzman, DS</Name> <CompetitorId>567116</CompetitorId> <Outcome> <Id>25</Id> <Name>Player 1</Name> </Outcome> <Numerator>47</Numerator> <Denominator>50</Denominator> <Decimal>1.94</Decimal> <Probability>0.49278</Probability> </Selection> <Selection> <Id>300053292</Id> <TradingStatus>Trading</TradingStatus> <Name>Dzumhur, D</Name> <CompetitorId>700304</CompetitorId> <Outcome> <Id>26</Id> <Name>Player 2</Name> </Outcome> <Numerator>87</Numerator> <Denominator>100</Denominator> <Decimal>1.87</Decimal> <Probability>0.50722/Probability> </Selection> </Selections> <CashOutStatus>Closed</CashOutStatus> <CashOutEnabled>True</CashOutEnabled> <HighAvailabilityCashOutEnabled>False</HighAvailabilityCashOutEnabled> </Market>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for a market |
Sequence | Integer, optional | The sequence number for an InPlay market |
TradingStatus | MarketStatus | An enum that describes the trading status of the market. Possible values: |
Name | String | The name of the market |
ExpiryUtc | DateTime | Used for PreMatch markets, expiry identifies the time when the market should be closed by the trading platform. |
Handicap | Decimal, optional | For handicap markets, the handicap line |
MarketType | MarketType | An object that describes the market's type |
InPlay | Boolean | True if the market contains an in-play price, False if the market contains a pre-match price |
Selections | Selection | An array of Selection objects |
ExternalId | String, optional | A customer's market ID, if available and required |
CashOutStatus | CashOutStatus, optional | Optional feature, off by default. An enum that describes the cash-out status of the market: |
CashOutEnabled | Boolean | Optional feature, True if cash-out is enabled for the market in question |
HighAvailabilityCashOutEnabled | Boolean | Optional feature, True if high availability cash-out (HACO) is enabled for the market in question. HACO is currently supported only for "Match Result" in InPlay football. |
EachWayTerm | EachWayTerm, optional | For horse racing only, an object that describes the market's each way terms |
CompetitorOne | Integer | The Id of the Competitor to whom the Individual or Head-to-Head Player market relates to. |
CompetitorTwo | Integer | The Id of the Competitor to whom the Individual or Head-to-Head Player market relates to. |
MarketType
An object that describes the type of a market.
<MarketType> <Id>82</Id> <Name>Asian Handicap</Name> <IsHandicap>true</IsHandicap> </MarketType>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the market type |
Name | String | The name of the market type |
IsHandicap | Boolean | True if the market type has a handicap, False otherwise |
Selection
An object that describes a selection.
<Selection> <Id>300053292</Id> <TradingStatus>Trading</TradingStatus> <Name>Dzumhur, D</Name> <CompetitorId>700304</CompetitorId> <Outcome> <Id>26</Id> <Name>Player 2</Name> </Outcome> <Numerator>87</Numerator> <Denominator>100</Denominator> <Decimal>1.87</Decimal> <Probability>0.50721</Probability> </Selection>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the market type |
TradingStatus | SelectionStatus | An Enum describing the trading state of the selection. Possible values: |
Name | String | The name of the market type |
CompetitorId | Integer, optional | The ID of the competitor if the selection is a competitor within the parent fixture |
Outcome | Outcome, optional | An object describing the selection's outcome type |
Range | Range, optional | An object describing the range of outcomes for which the selection is a winner |
Numerator | Integer | The numerator of the price of the selection |
Denominator | Integer | The denominator of the price of the selection |
Decimal | Decimal | The price of the selection in decimal format |
Probability | Decimal, optional | The probability of the selection. Off by default, activated on request. |
ExternalId | String, optional | A customer's market ID, if available and required |
Outcome
An object that describes the outcome type of a selection.
<Outcome> <Id>2</Id> <Name>Draw</Name> </Outcome>
Element | Type | Description |
---|---|---|
Id | Integer | An immutable identifier for the outcome type |
Name | String | The name of the outcome type |
A list of outcome types can be found in Outcome Types section.
Range
An object that describes the range parameters of a selection.
<Range> <High>0.0</High> <Low>2.0</Low> </Range>
Element | Type | Description |
---|---|---|
High | Decimal, optional | The high value of a range |
Low | Decimal, optional | The low value of a range |
EachWayTerm
For horse racing markets only, an object that describes the market's each way terms.
<EachWayTerm> <Places>5</Places> <Numerator>1</Numerator> <Denominator>2</Denominator> </EachWayTerm>
Element | Type | Description |
---|---|---|
Places | Integer | The number of places over which each-way terms are to be applied |
Numerator | Integer | Numerator of fraction of odds to be applied for each-way terms |
Denominator | Integer | Denominator of fraction of odds to be applied for each-way terms |
Sequence Number.
Markets that are created by the in-play system will have a sequence number within the market element with Football, Basketball, Baseball, etc. markets incrementing up from 0 and other Inplay sports from 1 (only for the Openbet platform, all sports begin at 1). Served Sports disciplines include further customisation, detailed below. An example sequence for Football:
<Sequence>0</Sequence>
This number will increment from 0 as the index described by the market increases. In action, a Next Goalscorer market will begin with index 0 and increment upwards after each goal.
Exceptions are Rest of First Half Asian Handicap - 13766 and Rest of Match Asian Handicap - 13496 markets where the sequence is calculated with the following formula: (HomeScore) + 1000 + (AwayScore * 1000)
Sequence Number – Served Sports
For Set Markets such as Current Set Winner or Next Set Correct Score the sequence number is the number of the Set. So for Set Winner (Set 3) then the Sequence number would be 3. For Game Markets there are two different indexing systems:
- Index on Set and Game: e.g. Game Winner (Set 1, Game 3)For these markets we calculate the sequence number by adding the Set Number to 1000 times the Game Number in the Set so Game Winner (Set 1, Game 3) would have a sequence number of 3001.
- Index on Game in the match: e.g. Game Winner (Game 20)For these markets we calculate the sequence number as the Game Number in the match so Game Winner (Game 20) would have a sequence number of 20.
For Point Markets there are also two options but the point number is also taken into account. This is done by adding 1000000 times the point number to the game sequence number.
The following table illustrates how that works:
Market | Sequence Number | Example | |
11328 | Current Service Game Point Winner (Game, Point) | Game + (1000000 * Point)
| (Game, Point) (Game 3, Point 2)
|
11329 | Next Service Game Point Winner (Game, Point) | ||
11335 | Numbered Service Game Point Winner (Game, Point) | ||
11336 | Current Service Game Point Winner (Set, Game, Point) | Set + (Game*1000) + (Point * 1000000)
| (Set2, Game 3, Point 4)
|
11337 | Next Service Game Point Winner (Set, Game, Point) | ||
11340 | Numbered Service Game Point Winner (Set, Game, Point) |
List of markets with the corresponding initial index can be found here.
Current, Next and Numbered Market Type Variants
In Tennis, indexed market types are split into two categories:
- Current/Next, and
- Numbered
These market type variants are equivalent, so Current/Next Set Winner is functionally identical to Numbered Set Winner. The Numbered variants are used by all customers except those with OpenBet trading platforms, who use the Current/Next variants (OpenBet allows only one index to be active in a market at a time and so two market types are required so that, for example, Current Set Winner and Next Set Winner can be offered concurrently).
ResultSet
Purpose: ResultSet holds a collection of Result objects for a specified fixture. ResultSet may include one or more Result objects, each of which will hold a result for precisely one market instance.
Processing: when Result is received the market referenced by Market.Id should be resulted within your trading platform. Once resulted you can also settle bets.
The example message below shows a ResultSet for a Handicap market in event 90090201.
Example Message - ResultSet
<ResultSet> <FixtureId>3474167</FixtureId> <Results> <MarketResult> ... Markets truncated for readability </MarketResult> </Results>
Element | Type | Description |
---|---|---|
FixtureId | Integer | An immutable identifier for a fixture |
Results | MarketResult | An array of market result objects, each describing the outcome of a market within the identified fixture |
MarketResult
An object that describes a result for a market.
<MarketResult> <MarketId>100001358</MarketId> <MarketSequence>14</MarketSequence> <Results> <SelectionResult> <AdditionalResultData i:nil="true" /> <ResultStatus>Loser</ResultStatus> <SelectionId>300002810</SelectionId> </SelectionResult> <SelectionResult> <AdditionalResultData i:nil="true" /> <ResultStatus>Winner</ResultStatus> <SelectionId>300002811</SelectionId> </SelectionResult> </Results> <MarketResultScore> <First>0</First> <Second>1</Second> <MarketResultScore> </MarketResult>
Element | Type | Description |
---|---|---|
MarketId | Integer | The identifier of the market to which this result applies |
MarketSequence | Integer, optional | For an in-play market, the sequence number being resulted. For PM markets, this value is not included |
Results | SelectionResult | An array of selection result objects |
SelectionResult
An object that describes the outcome of a selection.
<SelectionResult> <AdditionalResultData i:nil="true" /> <ResultStatus>Loser</ResultStatus> <SelectionId>300002810</SelectionId> </SelectionResult>
Element | Type | Description |
---|---|---|
SelectionId | Integer | The identifier of the selection to which this result applies |
ResultStatus | ResultStatus | An Enum that describes the selection's outcomes. Possible values: |
AdditionalResultData | AdditonalResultData, optional | Contains additional information that may be required to result some selections where the outcome isn't win/lose. |
AdditionalResultData
An object that contains additional data necessary to settle bets placed on a selection where Selection.ResultStatus is either Placed or Partial.
The PercentageWin and PercentagePush values will indicate how much of the bet will be paid out, how much will be pushed and how much will be lost. So in the example below, 50% of the bet placed will be paid out as a winning bet and and the other 50% will be pushed, so the better will be refunded half of the amount placed.
Should the PercentageWin and PercentagePush values for instance be <PercentageWin>0.0</PercentageWin> and <PercentagePush>50.0</PercentagePush>, then half of the bet placed by the punter would lose and half of the bet would be refunded as part of the push.
<AdditionalResultData> <PercentageWin>50.0</PercentageWin> <PercentagePush>50.0</PercentagePush> <Place>0</Place> <CountInPlace>0</CountInPlace> </AdditionalResultData>
Element | Type | Description |
---|---|---|
PercentageWin | Decimal | A number that describes what proportion of the bet should be paid |
PercentagePush | Decimal | A number that describes what proportion of the bet should be pushed |
Place | Integer | The placed position of the selection |
CountInPlace | Integer | The counted place position of the selection |
MarketResultScore
An optional object that will provide you with event scores through select market type resulting messages for both Prematch and Inplay Manager.
<MarketResultScore> <First>0</First> <Second>1</Second> <MarketResultScore>
Element | Type | Description |
---|---|---|
First | Integer | A number describing the first or Home selection score |
Second | Integer | A number describing the second or Away selection score |
Each market includes the score at the resulting time, so as an example - Half Time Result provides the score at the end of the first half whilst Match Result includes the full-time score.
At the moment the feature is available for PreMatch sports and sports that have a detailed MatchState available. |
Coverage
Purpose: Coverage holds information that describes the current expectations regarding the availability of an in-play trading service for a fixture.
Coverage will be sent when an event is created either by the Prematch or the Inplay Manager and when either the feed availability or booking state of a fixture has been changed.
Processing: Coverage tells you the about the match states and trading state of the fixture and whether you are licensed to receive an in-play service. If IsLicensed is true for both MatchState and TradingState then we will be able to trade the fixture in-play.
The example message below shows Coverage for fixture 3025747.
<Coverage> <FixtureId>3025747</FixtureId> <ExternalFixtureIdi:nil="true" /> <IsBooked>true</IsBooked> <AvailableFeeds> ... </AvailableFeeds> </CoverageCommand>
Element | Type | Description |
---|---|---|
FixtureId | Int | An immutable identifier for the fixture |
ExternalFixtureId | String, optional | This field has been deprecated. Please use the External ID element on Fixture messages and the Booking API |
IsBooked | Boolean | True if you have booked the fixture, false otherwise |
AvailableFeeds | Feed | An array of objects describing the feeds available for this fixture. |
Feeds
An object that describes a data feed in a fixture.
<Feed> <Type>MatchState</Type> <IsLicensed>true</IsLicensed> </Feed> <Feed> <Type>TradingState</Type> <IsLicensed>true</IsLicensed> </Feed>
Element | Type | Description |
---|---|---|
IsLicensed | Boolean | True if you are licensed to receive data from this feed for this fixture, false otherwise. |
Type | String | A description of the feed. Possible values are: |