<?xml version="1.0" encoding="UTF-8"?>
<!-- 
	Copyright 2006 Betfair (Malta) Ltd.  All rights reserved. 
	The presentation, distribution or other dissemination of the information contained herein by The Sporting Exchange Limited (Betfair) is not a license, either expressly or impliedly, to any intellectual property owned or controlled by Betfair.
	Save as provided by statute and to the fullest extent permitted by law, the following provisions set out the entire liability of Betfair (including any liability for the acts and omissions of its employees, agents and sub-contractors) to the User in respect of the use of its schema file whether in contract, tort, statute, equity or otherwise: 
	(a)     The User acknowledges and agrees that (except as expressly provided in this Agreement) the schema is provided "AS IS" without warranties of any kind (whether express or implied);
	(b)    All conditions, warranties, terms and undertakings (whether express or implied, statutory or otherwise relating to the delivery, performance, quality, uninterrupted use, fitness for purpose, occurrence or reliability of the schema are hereby excluded to the fullest extent permitted by law; and 
	(c)     Betfair shall not be liable to the User for loss of profit (whether direct or indirect), loss of contracts or goodwill, lost advertising, loss of data or any type of special, indirect, consequential or economic loss (including loss or damage suffered by the User as a result of an action brought by a third party) even if such loss was reasonably foreseeable or Betfair had been advised of the possibility of the User incurring such loss.
	No exclusion or limitation set out in this Agreement shall apply in the case of fraud or fraudulent concealment, death or personal injury resulting from the negligence of either party or any of its employees, agents or sub-contractors; and/or any breach of the obligations implied by (as appropriate) section 12 of the Sale of Goods Act 1979, section 2 of the Supply of Goods and Services Act 1982 or section 8 of the Supply of Goods (Implied Terms) Act 1973.
-->
<xs:schema xmlns="urn:betfair:games:api:v1"
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           jaxb:version="2.0"
           jaxb:extensionBindingPrefixes="xjc"
           attributeFormDefault="unqualified" elementFormDefault="qualified"
           targetNamespace="urn:betfair:games:api:v1">

    <!--
         Landing page for the v1 Gamex API
         https://api.games.betfair.com/rest/v1
     -->
    <xs:element name="api">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="resource"
                            type="resource"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--
         Ping - An api status and creditial check
         https://api.games.betfair.com/rest/v1/ping
     -->
    <xs:element name="ping">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="code" type="statusCodeEnum"/>
                <xs:element name="credentialCheck"
                            type="loginCredentialsStatusEnum"/>
                <xs:element minOccurs="0" name="userStatus"
                            type="userStatusEnum"/>
                <xs:element minOccurs="0" name="errorDetails"
                            type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="statusCodeEnum">
        <xs:annotation>
            <xs:documentation>
                The status of Games API service
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="OK"/>
            <xs:enumeration value="FAILED"/>
            <xs:enumeration value="SITE_UPGRADE"/>
        </xs:restriction>
    </xs:simpleType>

    <!--
         Global error that is returned in the event of an error
     -->
    <xs:element name="error">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="errorCode" type="errorCodeEnum"/>
                <xs:element minOccurs="0" name="credentialCheck"
                            type="loginCredentialsStatusEnum"/>
                <xs:element minOccurs="0" name="userStatus"
                            type="userStatusEnum"/>
                <xs:element minOccurs="0" name="errorDetails"
                            type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="errorCodeEnum">
        <xs:annotation>
            <xs:documentation>Error codes</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="LOGIN_ERROR"/>
            <xs:enumeration value="BANNED_COUNTRY"/>
            <xs:enumeration
                    value="INPUT_CURRENCY_DOES_NOT_MATCH_ACCOUNT_CURRENCY"/>
            <xs:enumeration
                    value="INVALID_OR_MISSING_BET_STATUS_CRITERIA"/>
            <xs:enumeration value="INVALID_OR_MISSING_GAME_ID_CRITERIA"/>
            <xs:enumeration value="INVALID_GAME_TYPE_CRITERIA"/>
            <xs:enumeration value="INVALID_ACCOUNT_CRITERIA"/>
            <xs:enumeration value="INVALID_TIME_ZONE"/>
            <xs:enumeration value="INVALID_START_DATE"/>
            <xs:enumeration value="INVALID_END_DATE"/>
            <xs:enumeration value="INVALID_START_RECORD"/>
            <xs:enumeration value="INVALID_RECORD_COUNT"/>
            <xs:enumeration value="INVALID_ORDER_BY_CRITERIA"/>
            <xs:enumeration value="INVALID_CHANNEL_ID"/>
            <xs:enumeration value="INVALID_CHANNEL_OR_SELECTIONS_TYPE"/>
            <xs:enumeration value="INVALID_MARKET_ID"/>
            <xs:enumeration value="INVALID_SELECTION_ID"/>
            <xs:enumeration value="INVALID_BET_ORDER"/>
            <xs:enumeration value="INVALID_CHANNEL_SNAPSHOT_CRITERIA"/>
            <xs:enumeration value="CHANNEL_NOT_RUNNING"/>
            <xs:enumeration value="EXCEPTION"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="variableHandicapOutcomeTypeEnum">
        <xs:restriction base="xs:string">
            <xs:enumeration value="IF_LESS_THAN_UNITS"/>
            <xs:enumeration value="IF_UNITS"/>
            <xs:enumeration value="IF_BETWEEN_UNITS"/>
            <xs:enumeration value="IF_UNITS_OR_MORE"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="marketReference">
        <xs:sequence>
            <xs:element name="resource" type="resource"/>
            <xs:element name="marketId" type="xs:int"/>
            <xs:element name="channelId" type="xs:int"/>
            <xs:element name="channelName" type="xs:string"/>
            <xs:element minOccurs="0" name="gameStartDate"
                        type="xs:dateTime"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="selectionReference">
        <xs:sequence>
            <xs:element name="marketReference" type="marketReference"/>
            <xs:element name="selectionId" type="xs:int"/>
            <xs:element name="selectionName" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>

    <!--
         Landing page for content
         https://api.games.betfair.com/rest/v1/content
     -->
    <xs:element name="contentLanding">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="resource"
                            type="resource"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--
         Landing page for accounts
         https://api.games.betfair.com/rest/v1/account
     -->
    <xs:element name="accountLanding">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="4"
                            name="resource" type="resource"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--
         Returns account details
         https://api.games.betfair.com/rest/v1/account/snapshot?querydata
     -->
    <xs:element name="accountSnapshot">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="1" minOccurs="1"
                            name="exposureLimit" type="xs:decimal"/>
                <xs:choice maxOccurs="1" minOccurs="1">
                    <xs:element name="message" type="xs:string"/>
                    <xs:sequence>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="availableToBetBalance" type="xs:decimal"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="availableToTransferOut" type="xs:decimal"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="betfairGamesBalance" type="xs:decimal"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="currentExposure" type="xs:decimal"/>
                        <xs:element maxOccurs="1" minOccurs="1"
							name="retainedCommission" type="xs:decimal" />
                        <xs:element maxOccurs="1" minOccurs="1"
                            name="betfairGamesBonusBalance" type='xs:decimal' />
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="pendingWinnings" type='xs:decimal' />
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="amountTurnover" type='xs:decimal' />
					   </xs:sequence>
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="currency" type="xs:string"
				use="required" />
		</xs:complexType>
	</xs:element>

    <!--
         Returns betfair available balance details
         https://api.games.betfair.com/rest/v1/account/betfair/snapshot?querydata
     -->
    <xs:element name="betfairAvailableBalance">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="1" minOccurs="1"
                            name="availableToTransferIn" type="xs:decimal"/>
            </xs:sequence>
            <xs:attribute name="currency" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>


    <!--
         Account statement
         https://api.games.betfair.com/rest/v1/account/statement?querydata
     -->
    <xs:element name="accountStatement">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="1" minOccurs="0"
                            name="previousPage" type="page"/>
                <xs:element maxOccurs="1" minOccurs="0" name="nextPage"
                            type="page"/>
                <xs:element maxOccurs="unbounded" minOccurs="0"
                            name="item">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="settledDate"
                                        type="xs:dateTime"/>
                            <xs:element name="placedDate"
                                        type="xs:dateTime"/>
                            <xs:element
                                    name="accountStatementDescription">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:choice maxOccurs="1"
                                                   minOccurs="1">
                                            <xs:element
                                                    name="accountStatementBetDescription"
                                                    type="accountStatementBetDescription"/>
                                            <xs:element
                                                    name="accountStatementCommissionDescription"
                                                    type="accountStatementCommissionDescription"/>
                                            <xs:element
                                                    name="accountStatementTransferDescription"
                                                    type="accountStatementTransferDescription"/>
                                            <xs:element
                                                    name="accountStatementGameStateDescription"
                                                    type="accountStatementGameStateDescription"/>
                                        </xs:choice>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="amount" type="xs:decimal"/>
                            <xs:element name="balance" type="xs:decimal"/>
                        </xs:sequence>
                        <xs:attribute name="refNo" type="xs:long"
                                      use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="currency" type="xs:string"
                          use="required"/>
            <xs:attribute name="start" type="xs:int" use="required"/>
            <xs:attribute name="end" type="xs:int" use="required"/>
            <xs:attribute name="total" type="xs:int" use="required"/>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="accountStatementBetDescription">
        <xs:sequence>
            <xs:element name="selectionReference"
                        type="selectionReference"/>
            <xs:element maxOccurs="1" minOccurs="1" name="size"
                        type="xs:double"/>
            <xs:element maxOccurs="1" minOccurs="1" name="averagePrice"
                        type="xs:double"/>
            <xs:element maxOccurs="1" minOccurs="1" name="winLose"
                        type="winLoseTypeEnum"/>
            <xs:element maxOccurs="1" minOccurs="1" name="bidType"
                        type="betBidTypeEnum"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="accountStatementCommissionDescription">
        <xs:sequence>
            <xs:element name="marketReference" type="marketReference"/>
            <xs:element maxOccurs="1" minOccurs="1" name="paymentType"
                        type="paymentTypeEnum"/>
            <xs:element maxOccurs="1" minOccurs="1"
                        name="commissionRate" type="xs:double"/>
            <xs:element maxOccurs="1" minOccurs="1" name="netWinnings"
                        type="xs:double"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="accountStatementTransferDescription">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="1" name="paymentType"
                        type="paymentTypeEnum"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="accountStatementGameStateDescription">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="1" name="gameState"
                        type="gameStateEnum"/>
        </xs:sequence>
    </xs:complexType>

	<xs:simpleType name="paymentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="COMMISSION_CHARGED" />
			<xs:enumeration value="DEPOSIT" />
			<xs:enumeration value="WITHDRAWAL" />
			<xs:enumeration value="BONUS_ACCEPTED" />
			<xs:enumeration value="BONUS_CANCELLED" />
			<xs:enumeration value="BONUS_EXPIRED" />
			<xs:enumeration value="BONUS_COMPLETED" />
			<xs:enumeration value="UNKNOWN" />
		</xs:restriction>
	</xs:simpleType>

    <xs:simpleType name="gameStateEnum">
        <xs:restriction base="xs:string">
            <xs:enumeration value="RUNNING"/>
            <xs:enumeration value="ACTIVATED"/>
            <xs:enumeration value="STOPPED"/>
            <xs:enumeration value="WILL_BE_ABANDONED"/>
            <xs:enumeration value="ABANDONED"/>
            <xs:enumeration value="DEACTIVATED"/>
            <xs:enumeration value="VOIDED"/>
        </xs:restriction>
    </xs:simpleType>

    <!--
         Placing an order for a balance transfer (Schema of Xml to be posted)
         https://api.games.betfair.com/rest/v1/account/order
     -->
    <xs:element name="postTransferOrder">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="amount">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:double">
                                <xs:attribute name="currency"
                                              type="xs:string" use="required"/>
                                <xs:attribute name="action"
                                              type="balanceActionTypeEnum" use="required"/>
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="balanceActionTypeEnum">
        <xs:annotation>
            <xs:documentation>
                Action to take with betfair games balance.
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="TRANSFER"/>
            <!-- Transfers too or from (Pending whether negative betfair.com and betfairgames.com) -->
        </xs:restriction>
    </xs:simpleType>

    <!--
         Response after a balance transfer order has been posted
         https://api.games.betfair.com/rest/v1/account/order
     -->
    <xs:element name="responseTransferOrder">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="message"
                            type="balanceResponseTypeEnum"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="balanceResponseTypeEnum">
        <xs:annotation>
            <xs:documentation>
                Response message from a transfer order
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="SUCCESS"/>
            <xs:enumeration value="INSUFFICIENT_FUNDS"/>
            <xs:enumeration value="OVER_TRANSFER_LIMIT"/>
            <xs:enumeration value="FAILED"/>
        </xs:restriction>
    </xs:simpleType>

    <!--
         Landing page for bets
         https://api.games.betfair.com/rest/v1/bet
     -->
    <xs:element name="betLanding">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="3"
                            name="resource" type="resource"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--
         Placing an order of bets (Schema of Xml to be posted)
         https://api.games.betfair.com/rest/v1/bet/multipleOrder
     -->

    <xs:element name="postMultipleBetOrder">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="10" minOccurs="0" name="postBetOrder" type="postBetOrderType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--
         Placing an order of bets (Schema of Xml to be posted)
         https://api.games.betfair.com/rest/v1/bet/order
     -->
    <xs:element name="postBetOrder" type="postBetOrderType"/>

    <xs:complexType name="postBetOrderType">

        <xs:sequence>
            <xs:element maxOccurs="350" minOccurs="0"
                        name="betPlace">
                <xs:complexType>
                    <xs:all>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="bidType" type="betBidTypeEnum"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="price" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="size" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="selectionId" type="xs:int"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>

            <xs:element maxOccurs="100" minOccurs="0"
                        name="betEdit">
                <xs:complexType>
                    <xs:all>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="betId" type="xs:long"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="bidType" type="betBidTypeEnum"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="price" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="unmatchedSize" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="newPrice" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="newUnmatchedSize" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="selectionId" type="xs:int"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>

            <xs:element maxOccurs="100" minOccurs="0"
                        name="betCancel">
                <xs:complexType>
                    <xs:all>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="betId" type="xs:long"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>

            <xs:element name="totalSizeRequest" maxOccurs="100"
                        minOccurs="0">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="bidType"
                                    type="betBidTypeEnum" maxOccurs="1" minOccurs="1"/>
                        <xs:element name="price" type="xs:double"
                                    maxOccurs="1" minOccurs="1"/>
                        <xs:element name="totalSize"
                                    type="xs:double" maxOccurs="1" minOccurs="1"/>
                        <xs:element name="selectionId" type="xs:int"
                                    maxOccurs="1" minOccurs="1"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>

        </xs:sequence>
        <xs:attribute name="round" type="xs:int" use="required"/>
        <xs:attribute name="marketId" type="xs:int" use="required"/>
        <xs:attribute name="currency" type="xs:string"
                      use="required"/>
    </xs:complexType>


    <!--
         Response after a multiple bet order has been posted
         https://api.games.betfair.com/rest/v1/bet/multipleOrder
     -->
    <xs:element name="responseMultipleBetOrder">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="10" minOccurs="0" ref="responseBetOrder"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--
         Response after a bet order has been posted
         https://api.games.betfair.com/rest/v1/bet/order
     -->
    <xs:element name="responseBetOrder" type="responseBetOrderType"/>
    <xs:complexType name="responseBetOrderType">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                        name="betPlacementResult" type="betPlacementResultType"/>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                        name="betEditResult" type="betEditResultType"/>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                        name="betCancelResult" type="betCancelResultType"/>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                        name="totalSizeRequestResult" type="totalSizeRequestResultType"/>
        </xs:sequence>
    </xs:complexType>

    <!--
         Landing page for channels
         https://api.games.betfair.com/rest/v1/channels
     -->
    <xs:element name="channelLanding">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="channel">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded"
                                        minOccurs="3" name="resource" type="resource"/>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:int"
                                      use="required"/>
                        <xs:attribute name="name" type="xs:string"
                                      use="optional"/>
                        <xs:attribute name="gameType" type="xs:string"
                                      use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <!--
         Landing page for version number
         https://api.games.betfair.com/rest/v1/version
     -->
    <xs:element name="componentVersion" type="component"/>

    <xs:complexType name="component">
        <xs:attribute name="name" type="xs:string" use="required"/>
        <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>


    <!--
         Channel snapshot
         https://api.games.betfair.com/rest/v1/channels/{$ChannelID}/snapshot
     -->
    <xs:element name="channelSnapshot">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="1" minOccurs="0"
                            name="channel">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element minOccurs="0" name="status"
                                        type="channelStatusEnum"/>
                            <xs:element maxOccurs="1" minOccurs="0"
                                        name="game">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0"
                                                    name="round" type="xs:int"/>
                                        <xs:element minOccurs="0"
                                                    name="bettingWindowTime" type="xs:int"/>
                                        <xs:element minOccurs="0"
                                                    name="bettingWindowPercentageComplete" type="xs:int"/>
                                        <xs:element minOccurs="0"
                                                    name="gameData" type="gameData"/>
                                        <xs:element minOccurs="0"
                                                    name="markets">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element
                                                            maxOccurs="unbounded" minOccurs="0" name="market"
                                                            type="marketSnapshot"/>
                                                </xs:sequence>
                                                <xs:attribute
                                                        name="currency" type="xs:string" use="required"/>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="id"
                                                  type="xs:int" use="required"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:int"
                                      use="required"/>
                        <xs:attribute name="name" type="xs:string"
                                      use="optional"/>
                        <xs:attribute name="gameType" type="xs:string"
                                      use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--
         Compact channel snapshot
         https://api.games.betfair.com/rest/v1/channels/{$ChannelID}/compactSnapshot
     -->
    <xs:element name="channelCompactSnapshot">
        <xs:complexType>
            <xs:attribute name="game" type="channelStatusEnum"
                          use="required"/>
            <xs:attribute name="round" type="xs:int" use="required"/>
            <xs:attribute name="market" type="marketStatusEnum"
                          use="required"/>
            <xs:attribute name="percentage" type="xs:int"
                          use="required"/>
            <xs:attribute name="serverTime" type="xs:long"
                          use="required"/>
            <xs:attribute name="betStarts" type="xs:long"
                          use="required"/>
            <xs:attribute name="roundStarts" type="xs:long"
                          use="optional"/>
        </xs:complexType>
    </xs:element>

    <!--
         Channel history
         https://api.games.betfair.com/rest/v1/channels/{$ChannelID}?querydata
     -->
    <xs:element name="channelHistory">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="channel">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="games">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="1"
                                                    minOccurs="0" name="previousPage" type="page"/>
                                        <xs:element maxOccurs="1"
                                                    minOccurs="0" name="nextPage" type="page"/>
                                        <xs:element
                                                maxOccurs="unbounded" minOccurs="0" name="game">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element
                                                            name="gameData" type="gameData"/>
                                                    <xs:element
                                                            name="markets">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element
                                                                        maxOccurs="unbounded" minOccurs="0"
                                                                        name="market"
                                                                        type="marketHistory"/>
                                                            </xs:sequence>
                                                            <xs:attribute
                                                                    name="currency" type="xs:string" use="required"/>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                                <xs:attribute
                                                        name="gameStartDate" type="xs:dateTime" use="required"/>
                                                <xs:attribute name="id"
                                                              type="xs:int" use="required"/>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="total"
                                                  type="xs:int" use="optional"/>
                                    <xs:attribute name="start"
                                                  type="xs:int" use="optional"/>
                                    <xs:attribute name="end"
                                                  type="xs:int" use="optional"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:int"
                                      use="required"/>
                        <xs:attribute name="name" type="xs:string"
                                      use="optional"/>
                        <xs:attribute name="gameType" type="xs:string"
                                      use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!--
         Channel info
         https://api.games.betfair.com/rest/v1/channels/{$ChannelID}/info
     -->
    <xs:element name="channelInfo">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" minOccurs="0"
                            name="round">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="bettingWindow"
                                        type="xs:int"/>
                            <xs:element name="playingWindow"
                                        type="xs:int"/>
                        </xs:sequence>
                        <xs:attribute name="number" type="xs:int"
                                      use="required"/>
                    </xs:complexType>
                </xs:element>
                <xs:element name="gameRules" type="xs:string"/>
                <xs:element name="gameDataDescription" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <xs:complexType name="objectType">
        <xs:sequence>
            <xs:element name="description" type="xs:string"
                        minOccurs="0" maxOccurs="1"/>
            <xs:element name="status" type="xs:string" minOccurs="0"
                        maxOccurs="1"/>
            <xs:element name="property" minOccurs="0"
                        maxOccurs="unbounded">
                <xs:complexType>
                    <xs:attribute name="name" type="xs:string"
                                  use="required"/>
                    <xs:attribute name="value" type="xs:string"
                                  use="required"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="object" type="objectType" minOccurs="0"
                        maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>

    <xs:complexType name="gameData">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="object"
                        type="objectType"/>
        </xs:sequence>
    </xs:complexType>


    <xs:simpleType name="marketTypeEnum">
        <xs:restriction base="xs:string">
            <xs:enumeration value="WIN_ONLY"/>
            <xs:enumeration value="ANY_NUMBER_OF_WINNERS"/>
            <xs:enumeration value="SINGLE_WINNER_OR_TIE"/>
            <xs:enumeration value="VARIABLE_HANDICAP"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="marketHistory">
        <xs:sequence>
            <xs:element name="status" type="marketStatusEnum"/>
            <xs:element name="marketType" type="marketTypeEnum"/>
            <xs:element name="selections">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" minOccurs="0"
                                    name="selection" type="selectionHistory"/>
                    </xs:sequence>
                    <xs:attribute name="type" type="xs:string"
                                  use="required"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="id" type="xs:int" use="required"/>
    </xs:complexType>

    <xs:complexType name="marketSnapshot">
        <xs:sequence>
            <xs:element name="status" type="marketStatusEnum"/>
            <xs:element name="commissionRate" type="xs:double"/>
            <xs:element name="marketType" type="marketTypeEnum"/>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                        name="variableHandicapProfitLoss">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="variableHandicapOutcomeType"
                                    type="variableHandicapOutcomeTypeEnum"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="value1" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="value2" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="profitLoss" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="worstCase" type="xs:double"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="selections">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" minOccurs="0"
                                    name="selection" type="selectionSnapshot"/>
                    </xs:sequence>
                    <xs:attribute name="type" type="xs:string"
                                  use="required"/>
                </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="betSnapshot"
                        type="betSnapshotType"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:int" use="required"/>
        <xs:attribute name="nextId" type="xs:int" use="required"/>
    </xs:complexType>

    <xs:complexType name="selectionSnapshot">
        <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <!-- selection trade activity -->
            <xs:element minOccurs="0" maxOccurs="1" name="resource"
                        type="resource"/>
            <xs:element name="status" type="selectionStatusEnum"/>
            <xs:element minOccurs="0" maxOccurs="1" name="amountMatched"
                        type="xs:double"/>
            <xs:choice minOccurs="0" maxOccurs="1">
                <xs:element maxOccurs="1" minOccurs="0"
                            name="profitLoss" type="xs:double"/>
                <xs:element maxOccurs="1" minOccurs="1"
                            name="profitAndLoss">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="selectionWin" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="selectionLose" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="0"
                                        name="selectionTie" type="xs:double"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
            <xs:element name="bestAvailableToBackPrices">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" minOccurs="0"
                                    name="price" type="price"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="bestAvailableToLayPrices">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" minOccurs="0"
                                    name="price" type="price"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="id" type="xs:int" use="required"/>
    </xs:complexType>

    <xs:complexType name="price">
        <xs:simpleContent>
            <xs:extension base="xs:double">
                <xs:attribute name="amountUnmatched" type="xs:double"
                              use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>


    <!--
         Bet history
         https://api.games.betfair.com/rest/v1/bet/history?querydata
     -->
    <xs:element name="betHistory">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="1" minOccurs="0"
                            name="previousPage" type="page"/>
                <xs:element maxOccurs="1" minOccurs="0" name="nextPage"
                            type="page"/>
                <xs:element maxOccurs="unbounded" minOccurs="0"
                            name="betHistoryItem">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="betId" type="xs:long"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="selectionReference" type="selectionReference"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="bidType" type="betBidTypeEnum"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="placedDate" type="xs:dateTime"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="price" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="size" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="0"
                                        name="averagePriceMatched" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="0"
                                        name="profitLoss" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="0"
                                        name="winLose" type="winLoseTypeEnum"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="roundNumber" type="xs:int"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="total" type="xs:int" use="required"/>
            <xs:attribute name="start" type="xs:int" use="required"/>
            <xs:attribute name="end" type="xs:int" use="required"/>
            <xs:attribute name="currency" type="xs:string"
                          use="required"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="betHistorySummary">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="1" minOccurs="0"
                            name="previousPage" type="page"/>
                <xs:element maxOccurs="1" minOccurs="0" name="nextPage"
                            type="page"/>
                <xs:element maxOccurs="unbounded" minOccurs="0"
                            name="betHistorySummaryItem">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="betId" type="xs:long"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="selectionReference" type="selectionReference"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="bidType" type="betBidTypeEnum"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="placedDate" type="xs:dateTime"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="price" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="size" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="0"
                                        name="averagePriceMatched" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="0" name="sizeMatched" type="xs:double" />
                            <xs:element maxOccurs="1" minOccurs="0" name="sizeRemaining" type="xs:double" />
                            <xs:element maxOccurs="1" minOccurs="0"
                                        name="priceMatched" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="0"
                                        name="profitLoss" type="xs:double"/>
                            <xs:element maxOccurs="1" minOccurs="0"
                                        name="winLose" type="winLoseTypeEnum"/>
                            <xs:element maxOccurs="1" minOccurs="1"
                                        name="roundNumber" type="xs:int"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="total" type="xs:int" use="required"/>
            <xs:attribute name="start" type="xs:int" use="required"/>
            <xs:attribute name="end" type="xs:int" use="required"/>
            <xs:attribute name="currency" type="xs:string"
                          use="required"/>
        </xs:complexType>
    </xs:element>


        <!--
         Current bets
         https://api.games.betfair.com/rest/v1/bet/snapshot
     -->
    <xs:complexType name="betSnapshotType">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="previousPage"
                        type="page"/>
            <xs:element maxOccurs="1" minOccurs="0" name="nextPage"
                        type="page"/>
            <xs:element maxOccurs="1" minOccurs="0" name="nextResultSet"
                        type="page"/>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                        name="betSnapshotItem">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="betId" type="xs:long"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="bidType" type="betBidTypeEnum"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="placedDate" type="xs:dateTime"/>
                        <xs:element maxOccurs="1" minOccurs="0"
                                    name="cancelledDate" type="xs:dateTime"/>
                        <xs:element maxOccurs="1" minOccurs="0"
                                    name="matchedDate" type="xs:dateTime"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="price" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="size" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="selectionReference" type="selectionReference"/>
                        <xs:element maxOccurs="1" minOccurs="0"
                                    name="priceMatched" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="updateStamp" type="xs:long"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="roundNumber" type="xs:int"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="total" type="xs:int" use="required"/>
        <xs:attribute name="start" type="xs:int" use="required"/>
        <xs:attribute name="end" type="xs:int" use="required"/>
        <xs:attribute name="currency" type="xs:string" use="required"/>
    </xs:complexType>



    <xs:complexType name="betSnapshotSummaryType">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="previousPage"
                        type="page"/>
            <xs:element maxOccurs="1" minOccurs="0" name="nextPage"
                        type="page"/>
            <xs:element maxOccurs="1" minOccurs="0" name="nextResultSet"
                        type="page"/>
            <xs:element maxOccurs="unbounded" minOccurs="0"
                        name="betSnapshotSummaryItem">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="betId" type="xs:long"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="bidType" type="betBidTypeEnum"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="placedDate" type="xs:dateTime"/>
                        <xs:element maxOccurs="1" minOccurs="0"
                                    name="cancelledDate" type="xs:dateTime"/>
                        <xs:element maxOccurs="1" minOccurs="0"
                                    name="matchedDate" type="xs:dateTime"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="price" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="size" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="selectionReference" type="selectionReference"/>
                        <xs:element maxOccurs="1" minOccurs="0" name="averagePriceMatched" type="xs:double" />
                        <xs:element maxOccurs="1" minOccurs="0" name="sizeMatched" type="xs:double" />
                        <xs:element maxOccurs="1" minOccurs="0" name="sizeRemaining" type="xs:double" />
                        <xs:element maxOccurs="1" minOccurs="0"
                                    name="priceMatched" type="xs:double"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="updateStamp" type="xs:long"/>
                        <xs:element maxOccurs="1" minOccurs="1"
                                    name="roundNumber" type="xs:int"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="total" type="xs:int" use="required"/>
        <xs:attribute name="start" type="xs:int" use="required"/>
        <xs:attribute name="end" type="xs:int" use="required"/>
        <xs:attribute name="currency" type="xs:string" use="required"/>
    </xs:complexType>

    <xs:element name="betSnapshot" type="betSnapshotType"/>

    <xs:element name="betSnapshotSummary" type="betSnapshotSummaryType"/>

    <!--
         Previous game profit&loss
         https://api.games.betfair.com/rest/v1/bet/gamepnl
     -->
    <xs:complexType name="profitAndLossType">
        <xs:attribute name="currency" type="xs:string" use="required"/>
        <xs:attribute name="value" type="xs:double" use="required"/>
        <xs:attribute name="totalCommission" type="xs:double"
                      use="required"/>
        <xs:attribute name="netValue" type="xs:double" use="required"/>
    </xs:complexType>

    <xs:element name="profitAndLoss" type="profitAndLossType"/>

    <xs:element name="selectionTradeActivity">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="1" minOccurs="1"
                            name="selectionId" type="xs:int"/>
                <xs:element maxOccurs="1" minOccurs="1" name="marketId"
                            type="xs:int"/>
                <xs:element maxOccurs="1" minOccurs="0" name="volume"
                            type="xs:double"/>
                <xs:element maxOccurs="1" minOccurs="0"
                            name="lastPriceMatched" type="xs:double"/>
                <xs:element maxOccurs="1" minOccurs="1"
                            name="priceStats">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded"
                                        minOccurs="0" name="priceStat">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="1"
                                                    minOccurs="1" name="price" type="xs:double"/>
                                        <xs:element maxOccurs="1"
                                                    minOccurs="1" name="availableToBackSize" type="xs:double"/>
                                        <xs:element maxOccurs="1"
                                                    minOccurs="1" name="availableToLaySize" type="xs:double"/>
                                        <xs:element maxOccurs="1"
                                                    minOccurs="0" name="traded" type="xs:double"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="currency" type="xs:string"
                          use="required"/>
        </xs:complexType>
    </xs:element>


    <xs:complexType name="selectionHistory">
        <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="status" type="selectionStatusEnum"/>
        </xs:sequence>
    </xs:complexType>


    <xs:simpleType name="channelStatusEnum">
        <xs:annotation>
            <xs:documentation>State of the channel</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="RUNNING"/>
            <xs:enumeration value="ABANDONED"/>
            <xs:enumeration value="STOPPED"/>
            <xs:enumeration value="PENDING_RUNNING"/>
            <xs:enumeration value="PENDING_ABANDON"/>
            <xs:enumeration value="PENDING_STOP"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="marketStatusEnum">
        <xs:annotation>
            <xs:documentation>Status of a market</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="ACTIVE"/>
            <xs:enumeration value="SUSPENDED_GAME_PLAYING"/>
            <xs:enumeration value="SUSPENDED_GAME_SETTLING"/>
            <xs:enumeration value="SUSPENDED_GAME_ROUND_OVER"/>
            <xs:enumeration value="SETTLED"/>
            <xs:enumeration value="VOID"/>
            <xs:enumeration value="VOID_INTERNAL_ERROR"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="selectionStatusEnum">
        <xs:annotation>
            <xs:documentation>Status of a selection</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="IN_PLAY"/>
            <xs:enumeration value="LOSER"/>
            <xs:enumeration value="WINNER"/>
            <xs:enumeration value="TIED_DEAD_HEAT"/>
            <xs:enumeration value="CAN_NOT_WIN"/>
            <xs:enumeration value="CAN_NOT_LOSE"/>
            <xs:enumeration value="REFUND"/>
            <xs:enumeration value="NOT_APPLICABLE"/>
        </xs:restriction>
    </xs:simpleType>

    <!-- Bet specific common type declarations -->
    <xs:simpleType name="betBidTypeEnum">
        <xs:annotation>
            <xs:documentation>Bid types back and lay</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="BACK"/>
            <xs:enumeration value="LAY"/>
        </xs:restriction>
    </xs:simpleType>


    <xs:simpleType name="betResultEnum">
        <xs:restriction base="xs:string">
            <xs:enumeration value="OK"/>
            <xs:enumeration value="UNKNOWN_ERROR"/>
            <xs:enumeration value="REMAINING_CANCELLED"/>
            <xs:enumeration value="SITE_UPGRADE"/>
            <xs:enumeration value="ACCOUNT_CLOSED"/>
            <xs:enumeration value="ACCOUNT_SUSPENDED"/>
            <xs:enumeration value="ACCOUNT_PENDING_AUTHORISATION"/>
            <xs:enumeration value="EVENT_CLOSED"/>
            <xs:enumeration value="SELECTION_ALREADY_LOST"/>
            <xs:enumeration value="SELECTION_ALREADY_WON"/>
            <xs:enumeration value="BETTING_ROUND_STALE"/>
            <xs:enumeration value="INTERNAL_ERROR"/>
            <xs:enumeration value="UNMATCHED_BET_NOT_FOUND"/>
            <xs:enumeration value="ERROR_CALCULATING_EXPOSURE"/>
            <xs:enumeration
                    value="REMAINING_SIZE_CANCELLED_BET_NOT_PLACED"/>
            <xs:enumeration value="EXPOSURE_CALCULATION_IN_PROGRESS"/>
            <xs:enumeration
                    value="EXPOSURE_OR_AVAILABLE_BALANCE_EXCEEDED"/>
            <xs:enumeration value="FROM_COUNTRY_ON_EVENT_FORBIDDEN"/>
            <xs:enumeration value="INVALID_ASIAN_LINE_ID"/>
            <xs:enumeration value="INVALID_BET_TYPE"/>
            <xs:enumeration value="INVALID_INCREMENT"/>
            <xs:enumeration value="INVALID_MARKET"/>
            <xs:enumeration value="INVALID_SIZE_OR_PRICE"/>
            <xs:enumeration value="INVALID_SELECTION"/>
            <xs:enumeration value="LOSS_LIMIT_EXCEEDED"/>
            <xs:enumeration value="GAME_DOES_NOT_EXIST_OR_STALE"/>
            <xs:enumeration
                    value="BET_REJECTED_SUBMITTED_WITH_INVALID_BET"/>
            <xs:enumeration value="ALREADY_AT_TARGET_SIZE"/>
            <xs:enumeration
                    value="COULD_NOT_REDUCE_TO_TARGET_SIZE_REMAINING_UNMATCHED_EDITED_TO_ZERO"/>
            <xs:enumeration
                    value="NO_UNMATCHED_BETS_TO_REDUCE_TOTAL_SIZE"/>
            <xs:enumeration value="BET_REJECTED_ROUND_STALE"/>
            <xs:enumeration value="BET_REJECTED_EVENT_CLOSED"/>
            <xs:enumeration value="GAMEX_EXCLUSION"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="winLoseTypeEnum">
        <xs:restriction base="xs:string">
            <xs:enumeration value="ERROR"/>
            <xs:enumeration value="FIX"/>
            <xs:enumeration value="LOST"/>
            <xs:enumeration value="WON"/>
            <xs:enumeration value="TIED"/>
            <xs:enumeration value="NOT_APPLICABLE"/>
        </xs:restriction>
    </xs:simpleType>


    <xs:complexType name="betPlacementResultType">
        <xs:all>
            <xs:element maxOccurs="1" minOccurs="0" name="betId"
                        type="xs:long"/>
            <xs:element maxOccurs="1" minOccurs="1" name="resultCode"
                        type="betResultEnum"/>
            <xs:element maxOccurs="1" minOccurs="0"
                        name="averagePriceMatched" type="xs:double"/>
            <xs:element maxOccurs="1" minOccurs="0" name="sizeMatched"
                        type="xs:double"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="betEditResultType">
        <xs:all>
            <xs:element maxOccurs="1" minOccurs="1" name="betId"
                        type="xs:long"/>
            <xs:element maxOccurs="1" minOccurs="1" name="resultCode"
                        type="betResultEnum"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="betCancelResultType">
        <xs:all>
            <xs:element maxOccurs="1" minOccurs="1" name="resultCode"
                        type="betResultEnum"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="totalSizeRequestResultType">
        <xs:all>
            <xs:element name="resultCode" type="betResultEnum"
                        maxOccurs="1" minOccurs="1"/>
        </xs:all>
    </xs:complexType>


    <!-- General common type declarations -->
    <xs:complexType name="resource">
        <xs:attribute name="href" type="xs:string" use="required"/>
        <xs:attribute name="title" type="xs:string" use="required"/>
        <xs:attribute name="responseType" type="xs:string"
                      use="required"/>
        <xs:attribute name="postType" type="xs:string" use="optional"/>
    </xs:complexType>

    <xs:complexType name="page">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="1" name="resource"
                        type="resource"/>
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="loginCredentialsStatusEnum">
        <xs:annotation>
            <xs:documentation>
                Result of validation on the user credentials passed
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="CREDENTIALS_NOT_SUBMITTED"/>
            <xs:enumeration value="LOGIN_SUCCESS"/>
            <xs:enumeration value="LOGIN_FAILURE"/>
            <xs:enumeration value="LOGIN_ACCOUNT_NOW_LOCKED"/>
            <xs:enumeration value="LOGIN_ACCOUNT_ALREADY_LOCKED"/>
            <xs:enumeration
                    value="LOGIN_REQUIRE_TERMS_AND_CONDITIONS_ACCEPTANCE"/>
            <xs:enumeration
                    value="LOGIN_REQUIRE_POKER_AND_WEB_TERMS_AND_CONDITIONS_ACCEPTANCE"/>
            <xs:enumeration value="LOGIN_REQUIRE_REFERRAL_BETEX"/>
            <xs:enumeration value="LOGIN_WITH_MESSAGES"/>
            <xs:enumeration value="LOGIN_BANNED_COUNTRY"/>
            <xs:enumeration value="LOGIN_BANNED_TRADING_ACCOUNT"/>
            <xs:enumeration value="LOGIN_BANNED_MARGIN_ACCOUNT"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="userStatusEnum">
        <xs:annotation>
            <xs:documentation>
                Status of the users account
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="ACTIVE"/>
            <xs:enumeration value="CLOSED"/>
            <xs:enumeration value="DUPLICATE_CARDS"/>
            <xs:enumeration value="LOCKED"/>
            <xs:enumeration value="PENDING_AUTH"/>
            <xs:enumeration value="SUSPENDED"/>
            <xs:enumeration value="TELBET_TCs_NA"/>
            <xs:enumeration value="SEC_QUES_WRONG_3X"/>
            <xs:enumeration value="KYC_SUSPEND"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:annotation>
          <xs:appinfo>
              <jaxb:globalBindings>
                  <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
                                 parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
                                 printMethod="javax.xml.bind.DatatypeConverter.printDateTime"/>
                  <jaxb:serializable uid="1"/>
                  <xjc:simple />
              </jaxb:globalBindings>
          </xs:appinfo>
      </xs:annotation>

</xs:schema>
