swagger: '2.0'
info:
  version: 1.0.0
  title: Pinnacle888 API - 投注 API 参考（Bets API）
  description:  |
    关于投注的一切：下单、查询投注历史或当前投注状态。

    # 认证

    API 使用 HTTP Basic 访问认证。需在请求头中发送 Authorization：

    `Authorization: Basic <UTF-8 编码的 "用户名:密码" 的 Base64 值>`

    示例：

    `Authorization: Basic U03MyOT23YbzMDc6d3c3O1DQ1`

  x-logo:
    url: ''
host: api.pinnacle888.com
schemes:
  - https
security:
  - basicAuth: []
paths:
  /v2/bets/place:
    post:
      tags:
        - 下单投注
      summary: 下单选式投注 - v2
      description: |
           下单选式投注（让分 SPREAD、独赢 MONEYLINE、总分 TOTAL_POINTS、队伍总分 TEAM_TOTAL_POINTS）。

           请注意：当状态为 PENDING_ACCEPTANCE 且应用了滚球延迟时，响应中不会包含 betId。客户端需通过 uniqueRequestId 调用 /bets 来查询投注是否已被 ACCEPTED。

           详见 [如何在滚球赛事上下注？](https://github.com/pinny888/pinny888.github.io/blob/main/FAQs.md#how-to-place-a-bet-on-live-events)
      operationId: Bets_StraightV2
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: request
          description: ''
          required: true
          schema:
            $ref: '#/definitions/PlaceBetRequestV2'
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/PlaceBetResponseV2'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'
  /v2/bets/parlay:
    post:
      tags:
        - 下单投注
      summary: 下串关投注 - v2
      operationId: Bets_ParlayV2
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: request
          description: 串关投注请求体。
          required: true
          schema:
            $ref: '#/definitions/PlaceParlayBetRequest'
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/PlaceParlayBetResponseV2'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'
  /v1/bets/teaser:
    post:
      tags:
        - 下单投注
      summary: 下过关投注（Teaser）- v1
      operationId: Bets_Teaser
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: request
          description: 过关投注（PlaceTeaser）请求体。
          required: true
          schema:
            $ref: '#/definitions/PlaceTeaserBetRequest'
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/PlaceTeaserBetResponse'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'
  /v2/bets/special:
    post:
      tags:
        - 下单投注
      summary: 下特殊投注 - v2
      operationId: Bets_SpecialV2
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: request
          description: 特殊投注请求体。
          required: true
          schema:
            $ref: '#/definitions/MultiBetRequest[SpecialBetRequest]'
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/MultiBetResponse[SpecialBetResponse]'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'
  /v4/bets/place:
    post:
      tags:
        - 下单投注
      summary: 下单选式投注 - v4
      description: |
           Place straight bet (SPREAD, MONEYLINE, TOTAL_POINTS, TEAM_TOTAL_POINTS).

           Please note when the status is PENDING_ACCEPTANCE and if the live delay was applied, the response will not have betId. Client would have to call /bets by uniqueRequestId to check the status if the bet was ACCEPTED.

           For more details please see [How to place a bet on live events?](https://github.com/pinny888/pinny888.github.io/blob/main/FAQs.md#how-to-place-a-bet-on-live-events)
      operationId: Bets_StraightV4
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: request
          description: ''
          required: true
          schema:
            $ref: '#/definitions/PlaceBetRequestV2'
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/PlaceBetResponseV4'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'
  /v4/bets/parlay:
    post:
      tags:
        - 下单投注
      summary: 下串关投注 - v4
      operationId: Bets_ParlayV4
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: request
          description: 串关投注请求体。
          required: true
          schema:
            $ref: '#/definitions/PlaceParlayBetRequest'
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/PlaceParlayBetResponseV4'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'
  /v4/bets/teaser:
    post:
      tags:
        - 下单投注
      summary: 下过关投注（Teaser）- v4
      operationId: Bets_TeaserV4
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: request
          description: 过关投注（PlaceTeaser）请求体。
          required: true
          schema:
            $ref: '#/definitions/PlaceTeaserBetRequest'
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/PlaceTeaserBetResponseV4'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'
  /v4/bets/special:
    post:
      tags:
        - 下单投注
      summary: 下特殊投注 - v4
      operationId: Bets_SpecialV4
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: request
          description: 特殊投注请求体。
          required: true
          schema:
            $ref: '#/definitions/MultiBetRequest[SpecialBetRequest]'
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/MultiBetResponse[SpecialBetResponseV4]'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'
  /v3/bets:
    get:
      tags:
        - 查询投注
      summary: 查询投注 - v3
      description: |
          返回投注列表。


          ### 按时间范围查询进行中投注：
          ```
          https://api.pinnacle888.com/v3/bets?betlist=RUNNING&fromDate=2017-11-21T00:00:00Z&toDate=2017-11-29T00:00:00Z
          ```
          进行中投注按 *placedAt* 时间查询。


          ### 按时间范围查询已结算投注：

          ```
          https://api.pinnacle888.com/v3/bets?betlist=SETTLED&fromDate=2015-12-28T00:00:00Z&toDate=2015-12-29T00:00:00Z
          ```
          已结算投注按 *settledAt* 时间查询。
          https://api.pinnacle888.com/v3/bets?betlist=SETTLED&fromDate=2017-11-20T00:00:00Z&toDate=2017-11-23T00:00:00Z


          ### 按时间范围查询已结算的已取消投注：

          ```
          https://api.pinnacle888.com/v3/bets?betList=SETTLED&fromDate=2018-03-01&toDate=2018-03-28&betStatuses=CANCELLED
          ```


          ### 按投注 ID 查询：

          ```
          https://api.pinnacle888.com/v3/bets?betIds=775856112,775856113,775856114
          ```

          ### 按 uniqueRequestIds 查询：

          ```
          https://api.pinnacle888.com/v3/bets?uniqueRequestIds=62335222-dae4-479a-8c05-46440ccdd3bb,42335222-dae4-479a-8c05-46440ccdd3bb
          ```

      operationId: Bets_GetBetsByTypeV3
      consumes: []
      produces:
        - application/json
      parameters:
        - name: betlist
          in: query
          description: '返回的投注列表类型。当提交 betIds 时不需要此参数。'
          required: false
          type: string
          enum:
            - SETTLED
            - RUNNING
            - ALL
        - name: betStatuses
          in: query
          description: '返回的投注状态类型。仅在与 betlist 一起使用时生效，作为附加筛选条件。'
          required: false
          type: array
          items:
            type: string
            enum:
            - WON
            - LOSE
            - CANCELLED
            - REFUNDED
            - NOT_ACCEPTED
            - ACCEPTED
            - PENDING_ACCEPTANCE
          collectionFormat: csv
        - name: fromDate
          in: query
          description: |
            查询时间段的开始日期。当提交 betlist 参数时必填。开始日期最多可追溯 30 天。格式为 ISO8601，可仅填日期或日期时间。
          required: false
          type: string
        - name: toDate
          in: query
          description: |
            查询时间段的结束日期。当提交 betlist 参数时必填。格式为 ISO8601，可仅填日期或日期时间。toDate 为不包含边界，即不能等于 fromDate。
          required: false
          type: string
        - name: sortDir
          in: query
          description: '按 postedAt/settledAt 的排序方向。仅在使用日期范围查询时生效。'
          required: false
          type: string
          enum:
            - ASC
            - DESC
          default: ASC
        - name: pageSize
          in: query
          description: '每页条数，最大 1000。仅在使用日期范围查询时生效。'
          required: false
          type: integer
          default: 1000
        - name: fromRecord
          in: query
          description: '结果起始记录（含）。仅在使用日期范围查询时生效。获取下一页时设为 toRecord+1。'
          required: false
          type: integer
          default: 0
        - name: betIds
          in: query
          description: '逗号分隔的投注 ID 列表。提交 betIds 时无需其他参数。最多 100 个 ID。适用于所有未结算投注及最近 30 天内结算的投注。'
          required: false
          type: array
          items:
            type: integer
            format: int64
          collectionFormat: csv
        - name: uniqueRequestIds
          in: query
          description: |
              逗号分隔的 uniqueRequestIds 列表，用于查询之前下的选式投注。若指定则优先级最高，其他参数均被忽略。最多 10 个 ID。若有 betId 建议用 betIds 查询；无 betId 时使用 uniqueRequestIds。主要有两种情况：

              1. 在带滚球延迟的滚球赛事上下注时，下单响应不返回 betId，客户端可用 uniqueRequestIds 查询投注状态。
              2. 网络异常导致客户端不确定下单请求结果时。空响应表示投注未成功。详见 [去重说明](https://www.pinnacle.com/de/api/manual#overview)


              注意：按 uniqueRequestIds 查询仅支持选式投注和特殊投注，且仅限投注下单后 30 分钟内。
          required: false
          type: array
          items:
            type: string
          collectionFormat: csv
        - name: betType
          in: query
          description: '逗号分隔的投注类型列表。'
          required: false
          type: array
          items:
            type: string
            enum:
            - SPREAD
            - MONEYLINE
            - TOTAL_POINTS
            - TEAM_TOTAL_POINTS
            - SPECIAL
            - PARLAY
            - TEASER
            - MANUAL
          collectionFormat: csv
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/GetBetsByTypeResponseV3'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'

  /v3/bets/settled:
    get:
      tags:
        - 查询投注
      summary: 查询已结算投注 - v3
      description: |
          返回已结算的投注列表。


          ### 按时间范围查询已结算投注：

          ```
          https://api.pinnacle888.com/v3/bets/settled?fromDate=2015-12-28T00:00:00Z&toDate=2015-12-29T00:00:00Z
          ```


          ### 按 uniqueRequestIds 查询已结算投注：

          ```
          https://api.pinnacle888.com/v3/bets/settled?uniqueRequestIds=62335222-dae4-479a-8c05-46440ccdd3bb,42335222-dae4-479a-8c05-46440ccdd3bb
          ```

      operationId: Bets_GetBetsSettledV3
      consumes: []
      produces:
        - application/json
      parameters:
        - name: eventId
          in: query
          description: 赛事标识。注意：按 eventId 查询仅支持投注结算后 90 天内。
          required: false
          type: integer
          format: int64
        - name: specialId
          in: query
          description: 特殊盘口 ID。
          required: false
          type: integer
          format: int64
        - name: fromDate
          in: query
          description: |
            查询时间段的开始日期。当提交 betlist 参数时必填。开始日期最多可追溯 30 天。格式为 ISO8601，可仅填日期或日期时间。
          required: false
          type: string
        - name: toDate
          in: query
          description: |
            查询时间段的结束日期。当提交 betlist 参数时必填。格式为 ISO8601，可仅填日期或日期时间。toDate 为不包含边界，即不能等于 fromDate。
          required: false
          type: string
        - name: sortDir
          in: query
          description: '按 postedAt/settledAt 的排序方向。仅在使用日期范围查询时生效。'
          required: false
          type: string
          enum:
            - ASC
            - DESC
          default: ASC
        - name: pageSize
          in: query
          description: '每页条数，最大 1000。仅在使用日期范围查询时生效。'
          required: false
          type: integer
          default: 1000
        - name: fromRecord
          in: query
          description: '结果起始记录（含）。仅在使用日期范围查询时生效。获取下一页时设为 toRecord+1。'
          required: false
          type: integer
          default: 0
        - name: uniqueRequestIds
          in: query
          description: |
              逗号分隔的 uniqueRequestIds 列表，用于查询之前下的选式投注。若指定则优先级最高，其他参数均被忽略。最多 10 个 ID。若有 betId 建议用 betIds 查询；无 betId 时使用 uniqueRequestIds。主要有两种情况：

              1. 在带滚球延迟的滚球赛事上下注时，下单响应不返回 betId，客户端可用 uniqueRequestIds 查询投注状态。
              2. 网络异常导致客户端不确定下单请求结果时。空响应表示投注未成功。详见 [去重说明](https://www.pinnacle.com/de/api/manual#overview)


              注意：按 uniqueRequestIds 查询仅支持选式投注，且仅限投注下单后 30 分钟内。
          required: false
          type: array
          items:
            type: string
          collectionFormat: csv
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/GetBetsByTypeResponseV3'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'

  /v1/regrades/wager-history:
    get:
      tags:
        - 查询投注
      summary: 查询改分投注历史 - v1
      description: |
          返回与改分投注相关的历史数据。


          ### 按时间范围查询改分投注历史：

          ```
          https://api.pinnacle888.com/v1/regrades/wager-history?fromDate=2024-04-01T00:00:00Z&toDate=2024-04-27T00:00:00Z
          ```


          ### 按投注 ID 查询改分投注历史：

          ```
          https://api.pinnacle888.com/v1/regrades/wager-history?betIds=52454247
          ```

      operationId: Bets_GetRegradedWagerHistoryV1
      consumes: []
      produces:
        - application/json
      parameters:
        - name: betIds
          in: query
          description: '逗号分隔的投注 ID 列表。提交 betIds 时无需其他参数。最多 100 个 ID。适用于最近 30 天内结算的所有投注。'
          required: false
          type: array
          items:
            type: integer
            format: int64
          collectionFormat: csv
        - name: fromDate
          in: query
          description: |
            查询时间段的开始日期。未提交 betIds 时必填。开始日期最多可追溯 30 天。格式为 ISO8601，可仅填日期或日期时间。
          required: false
          type: string
        - name: toDate
          in: query
          description: |
            查询时间段的结束日期。未提交 betIds 时必填。格式为 ISO8601，可仅填日期或日期时间。toDate 为不包含边界，即不能等于 fromDate。

          required: false
          type: string
        - name: sortDir
          in: query
          description: '按 postedAt/settledAt 的排序方向。仅在使用日期范围查询时生效。'
          required: false
          type: string
          enum:
            - ASC
            - DESC
          default: ASC
        - name: pageSize
          in: query
          description: '每页条数，最大 1000。仅在使用日期范围查询时生效。'
          required: false
          type: integer
          default: 1000
        - name: fromRecord
          in: query
          description: '结果起始记录（含）。仅在使用日期范围查询时生效。获取下一页时设为 toRecord+1。'
          required: false
          type: integer
          default: 0

      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/GetRegradedWagerHistoryResponseV1'
        '400':
          description: 请求错误
          schema:
            $ref: '#/definitions/ErrorResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'

  /v1/bets/betting-status:
    get:
      tags:
        - 投注状态
      summary: 查询投注状态
      description: '返回当前投注状态。维护期间可能关闭投注，可调用此接口检查当前投注是否可用。'
      operationId: Bets_GetBettingStatus
      consumes: []
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: 成功
          schema:
            $ref: '#/definitions/BettingStatusResponse'
        '401':
          description: 未授权
          schema:
            $ref: '#/definitions/ErrorResponse'
        '403':
          description: 禁止访问
          schema:
            $ref: '#/definitions/ErrorResponse'
        '500':
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/ErrorResponseWithErrorRef'
securityDefinitions:
  basicAuth:
    type: basic
definitions:
  PlaceBetRequestV2:
    type: object
    properties:
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      uniqueRequestId:
        type: string
        format: uuid
        example: D5CC50E4-284D-4D50-8D49-429BDC4F2A48
        description: 下单请求的唯一 ID，用于支持幂等请求。
      acceptBetterLine:
        type: boolean
        example: true
        description: 当盘口变化对客户有利时是否接受该投注。
      stake:
        type: number
        format: double
        example: 10.5
        description: amount in client’s currency.
      winRiskStake:
        type: string
        example: RISK
        description: 投注金额是风险金额还是盈利金额。
        enum:
          - WIN
          - RISK
      lineId:
        type: integer
        format: int64
        example: 420921914
        description: 盘口标识。
      altLineId:
        type: integer
        format: int64
        example: null
        x-nullable: true
        description: 备用盘口标识。
      pitcher1MustStart:
        type: boolean
        description: '仅棒球。指主队（Team1）先发投手。仅 MONEYLINE 投注类型可设，其他类型须为 TRUE。'
      pitcher2MustStart:
        type: boolean
        description: '仅棒球。指客队（Team2）先发投手。仅 MONEYLINE 投注类型可设，其他类型须为 TRUE。'
      fillType:
        type: string
        description: |
            NORMAL - 按指定金额下注。
            FILLANDKILL - 若金额超过最大限额则按最大限额下注，否则按指定金额下注。
            FILLMAXLIMIT - 按最大限额下注，忽略指定金额。注意最大限额可能随时变动，可能导致风险高于预期。此选项替代 v1/bets/place 的 isMaxStakeBet。
        enum:
          - NORMAL
          - FILLANDKILL
          - FILLMAXLIMIT
        example: NORMAL
        default: NORMAL
      sportId:
        type: integer
        format: int32
        example: 29
      eventId:
        type: integer
        format: int64
        example: 757504261
      periodNumber:
        type: integer
        format: int32
        example: 0
      betType:
        type: string
        example: MONEYLINE
        description: '投注类型。'
        enum:
          - MONEYLINE
          - TEAM_TOTAL_POINTS
          - SPREAD
          - TOTAL_POINTS
      team:
        type: string
        example: TEAM1
        description: '队伍类型。'
        enum:
          - TEAM1
          - TEAM2
          - DRAW
      side:
        type: string
        example: null
        x-nullable: true
        description: '方向类型（大/小）。'
        enum:
          - OVER
          - UNDER
      handicap:
        type: number
        format: double
        example: 1.0
        description: SPREAD、TOTAL_POINTS、TEAM_TOTAL_POINTS 类型的可选参数。
    description: 下单请求体。
  ErrorResponse:
    type: object
    properties:
      code:
        type: string
        description: |
          INVALID_REQUEST_DATA = 请求参数无效 (HTTP 400)
          SELF_EXCLUSION = 客户账户已自我排除 (HTTP 400)
          TERMS_AND_CONDITIONS_NOT_ACCEPTED = 未接受条款与条件 (HTTP 400)
          INVALID_CREDENTIALS = 认证失败，凭据无效 (HTTP 401)
          INVALID_AUTHORIZATION_HEADER = 缺少 HTTP Authorization 头 (HTTP 401)
          ACCOUNT_INACTIVE = 客户账户未激活 (HTTP 403)
          NO_API_ACCESS = 账户无权访问 API (HTTP 403)
        enum:
          - INVALID_REQUEST_DATA
          - SELF_EXCLUSION
          - TERMS_AND_CONDITIONS_NOT_ACCEPTED
          - INVALID_CREDENTIALS
          - INVALID_AUTHORIZATION_HEADER
          - ACCOUNT_INACTIVE
          - NO_API_ACCESS
      message:
        type: string
  PlaceBetResponseV2:
    type: object
    properties:
      status:
        type: string
        example: ACCEPTED
        description: 响应状态。
        enum:
          - ACCEPTED
          - PENDING_ACCEPTANCE
          - PROCESSED_WITH_ERROR
      errorCode:
        type: string
        example: null
        x-nullable: true
        description: |
          当 Status 为 PROCESSED_WITH_ERROR 时，响应中会包含 errorCode。

          ALL_BETTING_CLOSED = 当前不允许投注，可能处于系统维护期间。
          ALL_LIVE_BETTING_CLOSED = 当前不允许滚球投注，可能处于系统维护期间。
          ABOVE_EVENT_MAX = 客户在该盘口上的风险已超允许上限，无法下注。
          ABOVE_MAX_BET_AMOUNT = 投注金额超过允许的最大金额。
          BELOW_MIN_BET_AMOUNT = 投注金额低于允许的最小金额。
          BLOCKED_BETTING = 该客户投注已被暂停。
          BLOCKED_CLIENT = 客户已不再活跃。
          INSUFFICIENT_FUNDS = 客户余额不足。
          INVALID_COUNTRY = 客户所在国家/地区不允许投注。
          INVALID_EVENT = 赛事 ID 无效。
          INVALID_ODDS_FORMAT = 使用了该客户不允许的赔率格式。
          LINE_CHANGED = 投注的盘口已发生变化。
          LISTED_PITCHERS_SELECTION_ERROR = 下单请求中 pitcher1MustStart 和/或 pitcher2MustStart 的值不允许。
          OFFLINE_EVENT = 赛事已离线，或当前盘口/赔率/投注类型已不再提供。
          PAST_CUTOFFTIME = 已过该场投注截止时间。
          RED_CARDS_CHANGED = 滚球足球赛事红牌数已变化。
          SCORE_CHANGED = 滚球足球赛事比分已变化。
          DUPLICATE_UNIQUE_REQUEST_ID = 相同 uniqueRequestId 的请求已处理过，若需重新处理请使用新的 uniqueRequestId。
          INCOMPLETE_CUSTOMER_BETTING_PROFILE = 系统配置问题。
          INVALID_CUSTOMER_PROFILE = 系统配置问题。
          LIMITS_CONFIGURATION_ISSUE = 系统配置问题。
          RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED = 客户已达总亏损限额。
          RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED = 客户已达总风险限额。
          RESUBMIT_REQUEST = 请求有效但无法处理，常见于滚球时同一盘口有多笔下单。此时不保留请求，直接返回错误；盘口可能随后变化。可尽快重新下单以降低 RESUBMIT_REQUEST 概率。
          SYSTEM_ERROR_3 = 未预期错误。
          LICENCE_RESTRICTION_LIVE_BETTING_BLOCKED = 因牌照限制滚球投注被关闭。
          INVALID_HANDICAP = 盘口无效。
          BETTING_SUSPENDED = 因市场异常该盘口暂不接受投注，请使用下一个 LineId 重试。
        enum:
          - ALL_BETTING_CLOSED
          - ALL_LIVE_BETTING_CLOSED
          - ABOVE_EVENT_MAX
          - ABOVE_MAX_BET_AMOUNT
          - BELOW_MIN_BET_AMOUNT
          - BLOCKED_BETTING
          - BLOCKED_CLIENT
          - INSUFFICIENT_FUNDS
          - INVALID_COUNTRY
          - INVALID_EVENT
          - INVALID_ODDS_FORMAT
          - LINE_CHANGED
          - LISTED_PITCHERS_SELECTION_ERROR
          - OFFLINE_EVENT
          - PAST_CUTOFFTIME
          - RED_CARDS_CHANGED
          - SCORE_CHANGED
          - DUPLICATE_UNIQUE_REQUEST_ID
          - INCOMPLETE_CUSTOMER_BETTING_PROFILE
          - INVALID_CUSTOMER_PROFILE
          - LIMITS_CONFIGURATION_ISSUE
          - RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED
          - RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED
          - RESUBMIT_REQUEST
          - SYSTEM_ERROR_3
          - LICENCE_RESTRICTION_LIVE_BETTING_BLOCKED
          - INVALID_HANDICAP
          - BETTING_SUSPENDED
      uniqueRequestId:
        type: string
        example: D5CC50E4-284D-4D50-8D49-429BDC4F2A48
        description: 请求中的 uniqueRequestId 回显。
      straightBet:
        $ref: '#/definitions/StraightBet'
    description: ''
  PlaceBetResponseV4:
    type: object
    properties:
      status:
        type: string
        example: ACCEPTED
        description: 响应状态。
        enum:
          - ACCEPTED
          - PENDING_ACCEPTANCE
          - PROCESSED_WITH_ERROR
      errorCode:
        type: string
        example: null
        x-nullable: true
        description: |
          当 Status 为 PROCESSED_WITH_ERROR 时，响应中会包含 errorCode。

          ALL_BETTING_CLOSED = 当前不允许投注，可能处于系统维护期间。
          ALL_LIVE_BETTING_CLOSED = 当前不允许滚球投注，可能处于系统维护期间。
          ABOVE_EVENT_MAX = 客户在该盘口上的风险已超允许上限，无法下注。
          ABOVE_MAX_BET_AMOUNT = 投注金额超过允许的最大金额。
          BELOW_MIN_BET_AMOUNT = 投注金额低于允许的最小金额。
          BLOCKED_BETTING = 该客户投注已被暂停。
          BLOCKED_CLIENT = 客户已不再活跃。
          INSUFFICIENT_FUNDS = 客户余额不足。
          INVALID_COUNTRY = 客户所在国家/地区不允许投注。
          INVALID_EVENT = 赛事 ID 无效。
          INVALID_ODDS_FORMAT = 使用了该客户不允许的赔率格式。
          LINE_CHANGED = 投注的盘口已发生变化。
          LISTED_PITCHERS_SELECTION_ERROR = 下单请求中 pitcher1MustStart 和/或 pitcher2MustStart 的值不允许。
          OFFLINE_EVENT = 赛事已离线，或当前盘口/赔率/投注类型已不再提供。
          PAST_CUTOFFTIME = 已过该场投注截止时间。
          RED_CARDS_CHANGED = 滚球足球赛事红牌数已变化。
          SCORE_CHANGED = 滚球足球赛事比分已变化。
          DUPLICATE_UNIQUE_REQUEST_ID = 相同 uniqueRequestId 的请求已处理过，若需重新处理请使用新的 uniqueRequestId。
          INCOMPLETE_CUSTOMER_BETTING_PROFILE = 系统配置问题。
          INVALID_CUSTOMER_PROFILE = 系统配置问题。
          LIMITS_CONFIGURATION_ISSUE = 系统配置问题。
          RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED = 客户已达总亏损限额。
          RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED = 客户已达总风险限额。
          RESUBMIT_REQUEST = 请求有效但无法处理，常见于滚球时同一盘口有多笔下单。此时不保留请求，直接返回错误；盘口可能随后变化。可尽快重新下单以降低 RESUBMIT_REQUEST 概率。
          SYSTEM_ERROR_3 = 未预期错误。
          LICENCE_RESTRICTION_LIVE_BETTING_BLOCKED = 因牌照限制滚球投注被关闭。
          INVALID_HANDICAP = 盘口无效。
          BETTING_SUSPENDED = 因市场异常该盘口暂不接受投注，请使用下一个 LineId 重试。
        enum:
          - ALL_BETTING_CLOSED
          - ALL_LIVE_BETTING_CLOSED
          - ABOVE_EVENT_MAX
          - ABOVE_MAX_BET_AMOUNT
          - BELOW_MIN_BET_AMOUNT
          - BLOCKED_BETTING
          - BLOCKED_CLIENT
          - INSUFFICIENT_FUNDS
          - INVALID_COUNTRY
          - INVALID_EVENT
          - INVALID_ODDS_FORMAT
          - LINE_CHANGED
          - LISTED_PITCHERS_SELECTION_ERROR
          - OFFLINE_EVENT
          - PAST_CUTOFFTIME
          - RED_CARDS_CHANGED
          - SCORE_CHANGED
          - DUPLICATE_UNIQUE_REQUEST_ID
          - INCOMPLETE_CUSTOMER_BETTING_PROFILE
          - INVALID_CUSTOMER_PROFILE
          - LIMITS_CONFIGURATION_ISSUE
          - RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED
          - RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED
          - RESUBMIT_REQUEST
          - SYSTEM_ERROR_3
          - LICENCE_RESTRICTION_LIVE_BETTING_BLOCKED
          - INVALID_HANDICAP
          - BETTING_SUSPENDED
      uniqueRequestId:
        type: string
        example: D5CC50E4-284D-4D50-8D49-429BDC4F2A48
        description: 请求中的 uniqueRequestId 回显。
      betId:
        type: integer
        format: int64
        example: 759629245
        description: 投注标识
      win:
        type: number
        format: double
        example: 5.5
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 10.5
        description: 风险金额。
      price:
        type: number
        format: double
        example: 2.5
        description: 赔率
      points:
        type: number
        format: double
        example: 1
        description: 分数/盘口值
  StraightBet:
    type: object
    required:
      - betId
      - betStatus
      - betType
      - oddsFormat
      - placedAt
      - risk
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        example: 759629245
        description: 投注标识
      wagerNumber:
        type: integer
        format: int32
        example: 1
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        example: '2017-09-05T01:32:59Z'
        description: 投注下单时间。
      betStatus:
        type: string
        example: ACCEPTED
        description: |
          投注状态。

          ACCEPTED = 投注已接受。
          CANCELLED = 按 Pinnacle 规则取消。
          LOSE = 已结算为输。
          PENDING_ACCEPTANCE = 仅用于滚球：在危险区或应用滚球延迟时下的单会先为此状态，否则为 ACCEPTED。可转为 ACCEPTED 或 NOT_ACCEPTED。
          REFUNDED = 赛事取消或投注结算为平局时退款。
          NOT_ACCEPTED = 未接受。仅当此前为 PENDING_ACCEPTANCE 时可能为此状态。
          WON = 已结算为赢。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - PENDING_ACCEPTANCE
          - REFUNDED
          - NOT_ACCEPTED
          - WON
      betType:
        type: string
        example: MONEYLINE
        description: '投注类型。'
        enum:
          - MONEYLINE
          - TEAM_TOTAL_POINTS
          - SPREAD
          - TOTAL_POINTS
          - SPECIAL
          - PARLAY
          - TEASER
          - MANUAL
      win:
        type: number
        format: double
        example: 1
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 1.5
        description: 风险金额。
      winLoss:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 已结算投注的盈亏。
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      customerCommission:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Client’s commission on the bet.
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      updateSequence:
        type: integer
        format: int64
        example: 111548915
        description: 更新序列号
      sportId:
        type: integer
        format: int32
        example: 29
        description: ''
      leagueId:
        type: integer
        format: int32
        example: 2462
        description: ''
      eventId:
        type: integer
        format: int64
        example: 757064557
        description: ''
      handicap:
        type: number
        format: double
        example: null
        x-nullable: true
        description: ''
      price:
        type: number
        format: double
        example: -155
        description: ''
      teamName:
        type: string
        example: Crvena Zvezda
        description: ''
      side:
        type: string
        example: null
        x-nullable: true
        description: '方向类型（大/小）。'
        enum:
          - OVER
          - UNDER
      pitcher1:
        type: string
        example: null
        x-nullable: true
        description: '主队（team1）先发投手姓名。仅棒球。'
      pitcher2:
        type: string
        example: null
        x-nullable: true
        description: '客队（team2）先发投手姓名。仅棒球。'
      pitcher1MustStart:
        type: string
        enum:
          - TRUE
          - FALSE
        example: null
        x-nullable: true
        description: '主队投手是否必须先发。仅棒球。'
      pitcher2MustStart:
        type: string
        enum:
          - TRUE
          - FALSE
        example: null
        x-nullable: true
        description: '主队投手是否必须先发。仅棒球。'
      team1:
        type: string
        example: Crvena Zvezda
        description: ''
      team2:
        type: string
        example: Partizan
        description: ''
      periodNumber:
        type: integer
        format: int32
        example: 0
        description: ''
      team1Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: '下注时的主队比分，仅滚球。'
      team2Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: '下注时的客队比分，仅滚球。'
      ftTeam1Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: '全场主队比分，仅已结算投注。'
      ftTeam2Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: '全场客队比分，仅已结算投注。'
      pTeam1Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: '节末主队比分，仅已结算投注。若投注为全场（periodNumber=0）则为 null。'
      pTeam2Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: '节末客队比分，仅已结算投注。若投注为全场（periodNumber=0）则为 null。'
      isLive:
        type: string
        enum:
          - TRUE
          - FALSE
        example: "FALSE"
        description: 是否为滚球赛事投注
    description: ''
  StraightBetV3:
      type: object
      required:
        - betId
        - betStatus
        - betStatus2
        - betType
        - oddsFormat
        - placedAt
        - risk
        - updateSequence
        - wagerNumber
        - win
      properties:
        betId:
          type: integer
          format: int64
          example: 759629245
          description: 投注标识
        wagerNumber:
          type: integer
          format: int32
          example: 1
          description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
        placedAt:
          type: string
          format: date-time
          example: '2017-09-05T01:32:59Z'
          description: 投注下单时间。
        betStatus:
          type: string
          example: ACCEPTED
          description: |
            Bet Status.

            ACCEPTED = 投注已接受。
            CANCELLED = 按 Pinnacle 规则取消。
            LOSE = 已结算为输。
            PENDING_ACCEPTANCE = 仅用于滚球：在危险区或应用滚球延迟时下的单会先为此状态，否则为 ACCEPTED。可转为 ACCEPTED 或 NOT_ACCEPTED。
            REFUNDED = 赛事取消或投注结算为平局时退款。
            NOT_ACCEPTED = 未接受。仅当此前为 PENDING_ACCEPTANCE 时可能为此状态。
            WON = 已结算为赢。
            REJECTED = 投注被拒绝
          enum:
            - ACCEPTED
            - CANCELLED
            - LOSE
            - PENDING_ACCEPTANCE
            - REFUNDED
            - NOT_ACCEPTED
            - WON
            - REJECTED
        betStatus2:
          type: string
          example: ACCEPTED
          description: |
            投注状态。

            ACCEPTED = 投注已接受。
            CANCELLED = 按 Pinnacle 规则取消。
            LOST = 已结算为输。
            PENDING_ACCEPTANCE = 仅用于滚球：在危险区或应用滚球延迟时下的单会先为此状态，否则为 ACCEPTED。可转为 ACCEPTED 或 NOT_ACCEPTED。
            REFUNDED = 赛事取消或投注结算为平局时退款。
            NOT_ACCEPTED = 未接受。仅当此前为 PENDING_ACCEPTANCE 时可能为此状态。
            WON = 已结算为赢。
            REJECTED = 投注被拒绝。
            HALF_WON_HALF_PUSHED = 半赢半走。仅亚洲让分盘。
            HALF_LOST_HALF_PUSHED = 半输半走。仅亚洲让分盘。
          enum:
            - ACCEPTED
            - CANCELLED
            - LOST
            - PENDING_ACCEPTANCE
            - REFUNDED
            - NOT_ACCEPTED
            - WON
            - REJECTED
            - HALF_WON_HALF_PUSHED
            - HALF_LOST_HALF_PUSHED
        betType:
          type: string
          example: MONEYLINE
          description: '投注类型。'
          enum:
            - MONEYLINE
            - TEAM_TOTAL_POINTS
            - SPREAD
            - TOTAL_POINTS
            - SPECIAL
            - PARLAY
            - TEASER
            - MANUAL
        win:
          type: number
          format: double
          example: 1
          description: 盈利金额。
        risk:
          type: number
          format: double
          example: 1.5
          description: 风险金额。
        winLoss:
          type: number
          format: double
          example: null
          x-nullable: true
          description: 已结算投注的盈亏。
        oddsFormat:
          $ref: '#/definitions/OddsFormat'
        customerCommission:
          type: number
          format: double
          example: null
          x-nullable: true
          description: Client’s commission on the bet.
        cancellationReason:
          $ref: '#/definitions/CancellationReason'
        updateSequence:
          type: integer
          format: int64
          example: 111548915
          description: 更新序列号
        sportId:
          type: integer
          format: int32
          example: 29
          description: ''
        leagueId:
          type: integer
          format: int32
          example: 2462
          description: ''
        eventId:
          type: integer
          format: int64
          example: 757064557
          description: ''
        handicap:
          type: number
          format: double
          example: null
          x-nullable: true
          description: ''
        price:
          type: number
          format: double
          example: -155
          description: ''
        teamName:
          type: string
          example: Crvena Zvezda
          description: ''
        side:
          type: string
          example: null
          x-nullable: true
          description: '方向类型（大/小）。'
          enum:
            - OVER
            - UNDER
        pitcher1:
          type: string
          example: null
          x-nullable: true
          description: '主队（team1）先发投手姓名。仅棒球。'
        pitcher2:
          type: string
          example: null
          x-nullable: true
          description: '客队（team2）先发投手姓名。仅棒球。'
        pitcher1MustStart:
          type: boolean
          example: false
          description: '仅棒球。指主队先发投手。仅 MONEYLINE 可设，其他类型须为 TRUE。'
          x-nullable: true
        pitcher2MustStart:
          type: boolean
          example: false
          description: '仅棒球。指客队先发投手。仅 MONEYLINE 可设，其他类型须为 TRUE。'
          x-nullable: true
        team1:
          type: string
          example: Crvena Zvezda
          description: ''
        team2:
          type: string
          example: Partizan
          description: ''
        periodNumber:
          type: integer
          format: int32
          example: 0
          description: ''
        team1Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: '下注时该节主队比分，仅滚球。'
        team2Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: '下注时该节客队比分，仅滚球。'
        ftTeam1Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: '全场主队比分，仅已结算投注。'
        ftTeam2Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: '全场客队比分，仅已结算投注。'
        pTeam1Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: '.End of period team 1 score, only for settled bets. If the bet was placed on Game period (periodNumber =0), this will be null . '
        pTeam2Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: 'End of period team 2 score, only for settled bets. If the bet was placed on Game period (periodNumber =0), this will be null'
        isLive:
          type: boolean
          example: false
          description: 是否为滚球赛事投注
        eventStartTime:
          type: string
          format: date-time
          example: 2017-10-05T01:32:59Z
          x-nullable: false
          description: '赛事开始时间。'
        resultingUnit:
          type: string
          description: '赛事结算依据，如角球、黄牌、常规等'
      description: ''
  StraightBetRegradedWagerHistoryV1:
      type: object
      required:
        - betId
        - betStatus
        - betStatus2
        - betType
        - oddsFormat
        - placedAt
        - risk
        - updateSequence
        - wagerNumber
        - win
      properties:
        betId:
          type: integer
          format: int64
          example: 759629245
          description: 投注标识
        originalBetId:
          type: integer
          format: int64
          example: 759629321
          description: 原始投注标识
        wagerNumber:
          type: integer
          format: int32
          example: 1
          description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
        placedAt:
          type: string
          format: date-time
          example: '2017-09-05T01:32:59Z'
          description: 投注下单时间。
        betStatus:
          type: string
          example: ACCEPTED
          description: |
            Bet Status.

            ACCEPTED = 投注已接受。
            CANCELLED = 按 Pinnacle 规则取消。
            LOSE = 已结算为输。
            PENDING_ACCEPTANCE = 仅用于滚球：在危险区或应用滚球延迟时下的单会先为此状态，否则为 ACCEPTED。可转为 ACCEPTED 或 NOT_ACCEPTED。
            REFUNDED = 赛事取消或投注结算为平局时退款。
            NOT_ACCEPTED = 未接受。仅当此前为 PENDING_ACCEPTANCE 时可能为此状态。
            WON = 已结算为赢。
            REJECTED = 投注被拒绝
          enum:
            - ACCEPTED
            - CANCELLED
            - LOSE
            - PENDING_ACCEPTANCE
            - REFUNDED
            - NOT_ACCEPTED
            - WON
            - REJECTED
        betStatus2:
          type: string
          example: ACCEPTED
          description: |
            投注状态。

            ACCEPTED = 投注已接受。
            CANCELLED = 按 Pinnacle 规则取消。
            LOST = 已结算为输。
            PENDING_ACCEPTANCE = 仅用于滚球：在危险区或应用滚球延迟时下的单会先为此状态，否则为 ACCEPTED。可转为 ACCEPTED 或 NOT_ACCEPTED。
            REFUNDED = 赛事取消或投注结算为平局时退款。
            NOT_ACCEPTED = 未接受。仅当此前为 PENDING_ACCEPTANCE 时可能为此状态。
            WON = 已结算为赢。
            REJECTED = 投注被拒绝。
            HALF_WON_HALF_PUSHED = 半赢半走。仅亚洲让分盘。
            HALF_LOST_HALF_PUSHED = 半输半走。仅亚洲让分盘。
          enum:
            - ACCEPTED
            - CANCELLED
            - LOST
            - PENDING_ACCEPTANCE
            - REFUNDED
            - NOT_ACCEPTED
            - WON
            - REJECTED
            - HALF_WON_HALF_PUSHED
            - HALF_LOST_HALF_PUSHED
        betType:
          type: string
          example: MONEYLINE
          description: '投注类型。'
          enum:
            - MONEYLINE
            - TEAM_TOTAL_POINTS
            - SPREAD
            - TOTAL_POINTS
            - SPECIAL
            - PARLAY
            - TEASER
            - MANUAL
        win:
          type: number
          format: double
          example: 1
          description: 盈利金额。
        risk:
          type: number
          format: double
          example: 1.5
          description: 风险金额。
        winLoss:
          type: number
          format: double
          example: null
          x-nullable: true
          description: 已结算投注的盈亏。
        oddsFormat:
          $ref: '#/definitions/OddsFormat'
        customerCommission:
          type: number
          format: double
          example: null
          x-nullable: true
          description: Client’s commission on the bet.
        cancellationReason:
          $ref: '#/definitions/CancellationReason'
        updateSequence:
          type: integer
          format: int64
          example: 111548915
          description: 更新序列号
        sportId:
          type: integer
          format: int32
          example: 29
          description: ''
        leagueId:
          type: integer
          format: int32
          example: 2462
          description: ''
        leagueName:
          type: string
          example: Spain - Copa del Rey
          description: ''
        eventId:
          type: integer
          format: int64
          example: 757064557
          description: ''
        handicap:
          type: number
          format: double
          example: null
          x-nullable: true
          description: ''
        price:
          type: number
          format: double
          example: -155
          description: ''
        teamName:
          type: string
          example: Crvena Zvezda
          description: ''
        side:
          type: string
          example: null
          x-nullable: true
          description: '方向类型（大/小）。'
          enum:
            - OVER
            - UNDER
        pitcher1:
          type: string
          example: null
          x-nullable: true
          description: '主队（team1）先发投手姓名。仅棒球。'
        pitcher2:
          type: string
          example: null
          x-nullable: true
          description: '客队（team2）先发投手姓名。仅棒球。'
        pitcher1MustStart:
          type: boolean
          example: false
          description: '仅棒球。指主队先发投手。仅 MONEYLINE 可设，其他类型须为 TRUE。'
          x-nullable: true
        pitcher2MustStart:
          type: boolean
          example: false
          description: '仅棒球。指客队先发投手。仅 MONEYLINE 可设，其他类型须为 TRUE。'
          x-nullable: true
        team1:
          type: string
          example: Crvena Zvezda
          description: ''
        team2:
          type: string
          example: Partizan
          description: ''
        periodNumber:
          type: integer
          format: int32
          example: 0
          description: ''
        team1Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: '下注时该节主队比分，仅滚球。'
        team2Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: '下注时该节客队比分，仅滚球。'
        ftTeam1Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: '全场主队比分，仅已结算投注。'
        ftTeam2Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: '全场客队比分，仅已结算投注。'
        pTeam1Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: '.End of period team 1 score, only for settled bets. If the bet was placed on Game period (periodNumber =0), this will be null . '
        pTeam2Score:
          type: number
          format: double
          example: null
          x-nullable: true
          description: 'End of period team 2 score, only for settled bets. If the bet was placed on Game period (periodNumber =0), this will be null'
        isLive:
          type: boolean
          example: false
          description: 是否为滚球赛事投注
        eventStartTime:
          type: string
          format: date-time
          example: 2017-10-05T01:32:59Z
          x-nullable: false
          description: '赛事开始时间。'
        resultingUnit:
          type: string
          description: '赛事结算依据，如角球、黄牌、常规等'
      description: ''
  CancellationReason:
    type: object
    required:
      - code
    properties:
      code:
        type: string
        example: FBS_CW_227
      details:
          $ref: '#/definitions/CancellationDetails'
    description: |
                Possible keys \:
                * correctTeam1Id
                * correctTeam2Id
                * correctListedPitcher1
                * correctListedPitcher2
                * correctSpread
                * correctTotalPoints
                * correctTeam1TotalPoints
                * correctTeam2TotalPoints
                * correctTeam1Score
                * correctTeam2Score
                * correctTeam1TennisSetsScore
                * correctTeam2TennisSetsScore
  CancellationDetails:
    type: array
    items:
      - $ref: "#/definitions/CancellationDetailsItem"
    example:  [
                    {
                        "key": "correctSpread",
                        "value": "-1.5"
                    }
                ]
  CancellationDetailsItem:
    type: object
    properties:
      key:
        type: string
        example: correctSpread
      value:
        type: string
        example: "1.5"
  ErrorResponseWithErrorRef:
    type: object
    properties:
      ref:
        type: string
        example: f5d9ba85-cc97-47a9-ad92-ea57d0ea2cc0
      code:
        type: string
        example: UNEXPECTED_ERROR
      message:
        type: string
        example: Internal error
  PlaceParlayBetRequest:
    type: object
    properties:
      uniqueRequestId:
        type: string
        format: uuid
        example: A9EB2EB1-13A5-4600-9F1B-4859379CDEC4
        description: This unique id of the place bet requests. This is to support idempotent requests.
      acceptBetterLine:
        type: boolean
        example: true
        description: 当盘口变化对客户有利时是否接受该投注。
      riskAmount:
        type: number
        format: double
        example: 10.5
        description: 'Amount in client’s currency. It is always risk amount when placing Parlay bets NOTE: If round robin options is used this amount will apply for all parlays so actual amount wagered will be riskAmount X number of Parlays.'
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      legs:
        type: array
        description: Collection of parlay legs.
        items:
          $ref: '#/definitions/ParlayLegRequest'
      roundRobinOptions:
        type: array
        description: ''
        items:
          type: string
          enum:
            - Parlay
            - TwoLegRoundRobin
            - ThreeLegRoundRobin
            - FourLegRoundRobin
            - FiveLegRoundRobin
            - SixLegRoundRobin
            - SevenLegRoundRobin
            - EightLegRoundRobin
    description: Request to place a bet
  ParlayLegRequest:
    type: object
    properties:
      uniqueLegId:
        type: string
        example: CFAD8ACF-E410-437C-8F0F-33611F565981
        description: Unique id of the leg. It's used to identify and match legs in the response.
      lineId:
        type: integer
        format: int64
        example: 419715968
        description: 盘口标识。
      altLineId:
        type: integer
        format: int64
        example: null
        x-nullable: true
        description: 备用盘口标识。
      pitcher1MustStart:
        type: boolean
        example: false
        description: 'Baseball only. Refers to the pitcher for Team1.  This applicable only for MONEYLINE bet type, for all other bet types this has to be TRUE.'
      pitcher2MustStart:
        type: boolean
        example: false
        description: '仅棒球。指客队（Team2）先发投手。仅 MONEYLINE 投注类型可设，其他类型须为 TRUE。'
      sportId:
        type: integer
        format: int32
        example: 29
        description: Sport identification.
      eventId:
        type: integer
        format: int64
        example: 758023991
        description: Event identification.
      periodNumber:
        type: integer
        format: int32
        example: 0
        description: 'This represents the period of the match. For example, for soccer we have: 0 -  Game, 1 - 1st Half and 2 - 2nd Half'
      legBetType:
        type: string
        example: MONELYLINE
        description: 'Only SPREAD, MONEYLINE, TOTAL_POINTS and TEAM_TOTAL_POINTS are supported.'
        enum:
          - MONEYLINE
          - SPREAD
          - TOTAL_POINTS
          - TEAM_TOTAL_POINTS
      team:
        type: string
        example: TEAM1
        description: Chosen team type. This is needed only for SPREAD and MONEYLINE bet types.
      side:
        type: string
        example: null
        x-nullable: true
        description: 'Chosen side type. This is needed only for TOTAL_POINTS bet type.'
        enum:
          - OVER
          - UNDER
    description: ''
  PlaceParlayBetResponseV2:
    type: object
    properties:
      status:
        type: string
        example: ACCEPTED
        description: 响应状态。
        enum:
          - ACCEPTED
          - PENDING_ACCEPTANCE
          - PROCESSED_WITH_ERROR
      errorCode:
        type: string
        example: null
        x-nullable: true
        description: |
          When Status is PROCESSED_WITH_ERROR, provides a code indicating the specific problem.


          ABOVE_MAX_BET_AMOUNT = Stake is above allowed maximum amount,
          ALL_BETTING_CLOSED = Betting is not allowed at this moment,
          BELOW_MIN_BET_AMOUNT = Stake is below allowed minimum amount,
          BLOCKED_BETTING = Betting is suspended for the client,
          BLOCKED_CLIENT = Client is no longer active,
          INSUFFICIENT_FUNDS = Bet is submitted by a client with insufficient funds,
          INVALID_COUNTRY = Client country is not allowed for betting,
          INVALID_LEGS = One or more legs are invalid,
          INVALID_ODDS_FORMAT = If a bet was submitted with the odds format that is not allowed for the client,
          INVALID_ROUND_ROBIN_OPTIONS = Round robin options are invalid (i.e. does not match with number of legs),
          ROUND_ROBIN_DISALLOWED = Round robin is disallowed for one of the leagues,
          TOO_MANY_LEGS = Maximum of 10 legs can be specified,
          TOO_FEW_LEGS = At least 2 legs are required for Parlay,
          RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED = Client has reached his total loss limit,
          RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED = Client has reached his total risk limit,
          INVALID_REQUEST = Request has invalid parameters,
          DUPLICATE_UNIQUE_REQUEST_ID = Request with the same uniqueRequestId was already processed. Please set the new value if you still want the request to be processed,
          SYSTEM_ERROR_3 = Unexpected error
        enum:
          - ABOVE_MAX_BET_AMOUNT
          - ALL_BETTING_CLOSED
          - BELOW_MIN_BET_AMOUNT
          - BLOCKED_BETTING
          - BLOCKED_CLIENT
          - INSUFFICIENT_FUNDS
          - INVALID_COUNTRY
          - INVALID_LEGS
          - INVALID_ODDS_FORMAT
          - INVALID_ROUND_ROBIN_OPTIONS
          - ROUND_ROBIN_DISALLOWED
          - TOO_MANY_LEGS
          - TOO_FEW_LEGS
          - RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED
          - RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED
          - INVALID_REQUEST
          - DUPLICATE_UNIQUE_REQUEST_ID
          - SYSTEM_ERROR_3
      betId:
        type: integer
        format: int64
        example: 759629245
        description: Id of a newly created bet.
      uniqueRequestId:
        type: string
        format: uuid
        example: D5CC50E4-284D-4D50-8D49-429BDC4F2A48
        description: Unique identifier provided in the request.
      roundRobinOptionWithOdds:
        type: array
        description: Provides array with all acceptable Round Robin options with parlay odds for that option.
        items:
          $ref: '#/definitions/RoundRobinOptionWithOdds'
      maxRiskStake:
        type: number
        format: double
        description: Maximum stake amount
      minRiskStake:
        type: number
        format: double
        description: Minimum stake amount
      validLegs:
        type: array
        description: Collection of valid legs (format described below). Can be empty if no valid legs found.
        items:
          $ref: '#/definitions/ParlayLegResponse'
      invalidLegs:
        type: array
        description: The collection of legs that resulted in error (format described below). Can be empty if no invalid legs found.
        items:
          $ref: '#/definitions/ParlayLegResponse'
      parlayBet:
        $ref: '#/definitions/ParlayBetV2'
    description: ''
  PlaceParlayBetResponseV4:
    type: object
    properties:
      status:
        type: string
        example: ACCEPTED
        description: 响应状态。
        enum:
          - ACCEPTED
          - PENDING_ACCEPTANCE
          - PROCESSED_WITH_ERROR
      errorCode:
        type: string
        example: null
        x-nullable: true
        description: |
          When Status is PROCESSED_WITH_ERROR, provides a code indicating the specific problem.


          ABOVE_MAX_BET_AMOUNT = Stake is above allowed maximum amount,
          ALL_BETTING_CLOSED = Betting is not allowed at this moment,
          BELOW_MIN_BET_AMOUNT = Stake is below allowed minimum amount,
          BLOCKED_BETTING = Betting is suspended for the client,
          BLOCKED_CLIENT = Client is no longer active,
          INSUFFICIENT_FUNDS = Bet is submitted by a client with insufficient funds,
          INVALID_COUNTRY = Client country is not allowed for betting,
          INVALID_LEGS = One or more legs are invalid,
          INVALID_ODDS_FORMAT = If a bet was submitted with the odds format that is not allowed for the client,
          INVALID_ROUND_ROBIN_OPTIONS = Round robin options are invalid (i.e. does not match with number of legs),
          ROUND_ROBIN_DISALLOWED = Round robin is disallowed for one of the leagues,
          TOO_MANY_LEGS = Maximum of 10 legs can be specified,
          TOO_FEW_LEGS = At least 2 legs are required for Parlay,
          RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED = Client has reached his total loss limit,
          RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED = Client has reached his total risk limit,
          INVALID_REQUEST = Request has invalid parameters,
          DUPLICATE_UNIQUE_REQUEST_ID = Request with the same uniqueRequestId was already processed. Please set the new value if you still want the request to be processed,
          SYSTEM_ERROR_3 = Unexpected error
        enum:
          - ABOVE_MAX_BET_AMOUNT
          - ALL_BETTING_CLOSED
          - BELOW_MIN_BET_AMOUNT
          - BLOCKED_BETTING
          - BLOCKED_CLIENT
          - INSUFFICIENT_FUNDS
          - INVALID_COUNTRY
          - INVALID_LEGS
          - INVALID_ODDS_FORMAT
          - INVALID_ROUND_ROBIN_OPTIONS
          - ROUND_ROBIN_DISALLOWED
          - TOO_MANY_LEGS
          - TOO_FEW_LEGS
          - RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED
          - RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED
          - INVALID_REQUEST
          - DUPLICATE_UNIQUE_REQUEST_ID
          - SYSTEM_ERROR_3
      betId:
        type: integer
        format: int64
        example: 759629245
        description: Id of a newly created bet.
      uniqueRequestId:
        type: string
        format: uuid
        example: D5CC50E4-284D-4D50-8D49-429BDC4F2A48
        description: Unique identifier provided in the request.
      roundRobinOptionWithOdds:
        type: array
        description: Provides array with all acceptable Round Robin options with parlay odds for that option.
        items:
          $ref: '#/definitions/RoundRobinOptionWithOdds'
      validLegs:
        type: array
        description: Collection of valid legs (format described below). Can be empty if no valid legs found.
        items:
          $ref: '#/definitions/ParlayLegResponseV4'
      invalidLegs:
        type: array
        description: The collection of legs that resulted in error (format described below). Can be empty if no invalid legs found.
        items:
          $ref: '#/definitions/ParlayLegResponseV4'
      wagers:
        type: array
        description: The collection of returning wagers
        items:
          $ref: '#/definitions/ParlayWagerV4Response'
    description: ''
  ParlayWagerV4Response:
    type: object
    properties:
      wagerNumber:
        type: number
        format: int32
        example: 1
        description: Wager number.
      win:
        type: number
        format: double
        example: 5.5
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 10.5
        description: 风险金额。
      price:
        type: number
        format: double
        example: 7.1
        description: 赔率 amount.
      legIds:
        type: array
        example: ["A9EB2EB1-13A5-4600-9F1B-4859379CDEC4", "CFAD8ACF-E410-437C-8F0F-33611F565981"]
        description: Collection of leg ids of the wager.
        items:
          type: string
          format: uuid
          example: A9EB2EB1-13A5-4600-9F1B-4859379CDEC4

  RoundRobinOptionWithOdds:
    type: object
    properties:
      roundRobinOption:
        type: string
        example: Parlay
        description: ''
        enum:
          - Parlay
          - TwoLegRoundRobin
          - ThreeLegRoundRobin
          - FourLegRoundRobin
          - FiveLegRoundRobin
          - SixLegRoundRobin
          - SevenLegRoundRobin
          - EightLegRoundRobin
      odds:
        type: number
        format: double
        example: 682
        description: Parlay odds for this option.
      unroundedDecimalOdds:
        type: number
        format: double
        example: 7.8231
        description: Unrounded parlay odds in decimal format to be used for calculations only
    description: ''
  ParlayLegResponse:
    type: object
    properties:
      status:
        type: string
        example: VALID
        description: Status of the request.
        enum:
          - PROCESSED_WITH_ERROR
          - VALID
      errorCode:
        type: string
        example: null
        x-nullable: true
        description: |
            When Status is PROCESSED_WITH_ERROR, provides a code indicating the specific problem.

            CANNOT_PARLAY_LIVE_GAME = The wager is placed on Live game,
            CORRELATED = The leg is correlated with another one,
            EVENT_NO_LONGER_AVAILABLE_FOR_BETTING = The event is no longer offered,
            EVENT_NOT_OFFERED_FOR_PARLAY = The event is not offered for parlaying,
            INVALID_EVENT = Live betting is not allowed at this moment,
            INVALID_LEG_BET_TYPE = Leg bet type is not accepted for parlaying. Accepted values are SPREAD, MONEYLINE, TOTAL_POINTS,
            INVALID_PARLAY_BET = The leg did not validated due to error on Parlay Bet. Check the error PlaceParlayBet response for error details,
            LINE_CHANGED = Bet is submitted on a line that has changed,
            LINE_DOES_NOT_BELONG_TO_EVENT = LineId does not match the EventId specified in the request,
            LISTED_PITCHERS_SELECTION_ERROR = If bet was submitted with pitcher1MustStart and/or pitcher2MustStart parameters with values that are not allowed,
            ODDS_NO_LONGER_OFFERED_FOR_PARLAY_1 = Due to line change odds are not offered for parlaying,
            ODDS_NO_LONGER_OFFERED_FOR_PARLAY_2 = Due to line change odds are not offered for parlaying,
            ODDS_NO_LONGER_OFFERED_FOR_PARLAY_3 = Due to line change odds are not offered for parlaying,
            OFFLINE_EVENT = Bet is submitted on an event that is offline or with incorrect lineId,
            PAST_CUTOFFTIME = Bet is submitted on a game after the betting cutoff time,
            SYSTEM_ERROR_1 = Unexpected error,
            SYSTEM_ERROR_2 = Unexpected error,
            SYSTEM_ERROR_3 = Unexpected error,
            LINE_IS_NOT_AVAILABLE = Line is not available for the specified Parlay Leg,
            BETTING_SUSPENDED = Due to anomalous market circumstances bets are not currently being accepted on this line. Try again with next LineId.

        enum:
          - CANNOT_PARLAY_LIVE_GAME
          - CORRELATED
          - EVENT_NO_LONGER_AVAILABLE_FOR_BETTING
          - EVENT_NOT_OFFERED_FOR_PARLAY
          - INVALID_EVENT
          - INVALID_LEG_BET_TYPE
          - INVALID_PARLAY_BET
          - LINE_CHANGED
          - LINE_DOES_NOT_BELONG_TO_EVENT
          - LISTED_PITCHERS_SELECTION_ERROR
          - ODDS_NO_LONGER_OFFERED_FOR_PARLAY_1
          - ODDS_NO_LONGER_OFFERED_FOR_PARLAY_2
          - ODDS_NO_LONGER_OFFERED_FOR_PARLAY_3
          - OFFLINE_EVENT
          - PAST_CUTOFFTIME
          - SYSTEM_ERROR_1
          - SYSTEM_ERROR_2
          - SYSTEM_ERROR_3
          - LINE_IS_NOT_AVAILABLE
          - BETTING_SUSPENDED
      legId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Echo of the legId from the request.
      lineId:
        type: integer
        format: int64
        example: 419715968
        description: Line identification that bet was placed on.
      altLineId:
        type: integer
        format: int64
        example: null
        x-nullable: true
        description: 'If bet was accepted on alternate line, the altLineId will be returned.'
      price:
        type: number
        format: double
        example: 167
        description: 赔率 that the bet was placed on.
      correlatedLegs:
        type: array
        description: If errorCode is CORRELATED will contain legIds of all correlated legs.
        items:
          type: string
          format: uuid
          example: 10924E23-A2FE-4317-BFFD-80504675F554
    description: ''
  ParlayLegResponseV4:
    type: object
    properties:
      status:
        type: string
        example: VALID
        description: Status of the request.
        enum:
          - PROCESSED_WITH_ERROR
          - VALID
      errorCode:
        type: string
        example: null
        x-nullable: true
        description: |
            When Status is PROCESSED_WITH_ERROR, provides a code indicating the specific problem.

            CANNOT_PARLAY_LIVE_GAME = The wager is placed on Live game,
            CORRELATED = The leg is correlated with another one,
            EVENT_NO_LONGER_AVAILABLE_FOR_BETTING = The event is no longer offered,
            EVENT_NOT_OFFERED_FOR_PARLAY = The event is not offered for parlaying,
            INVALID_EVENT = Live betting is not allowed at this moment,
            INVALID_LEG_BET_TYPE = Leg bet type is not accepted for parlaying. Accepted values are SPREAD, MONEYLINE, TOTAL_POINTS,
            INVALID_PARLAY_BET = The leg did not validated due to error on Parlay Bet. Check the error PlaceParlayBet response for error details,
            LINE_CHANGED = Bet is submitted on a line that has changed,
            LINE_DOES_NOT_BELONG_TO_EVENT = LineId does not match the EventId specified in the request,
            LISTED_PITCHERS_SELECTION_ERROR = If bet was submitted with pitcher1MustStart and/or pitcher2MustStart parameters with values that are not allowed,
            ODDS_NO_LONGER_OFFERED_FOR_PARLAY_1 = Due to line change odds are not offered for parlaying,
            ODDS_NO_LONGER_OFFERED_FOR_PARLAY_2 = Due to line change odds are not offered for parlaying,
            ODDS_NO_LONGER_OFFERED_FOR_PARLAY_3 = Due to line change odds are not offered for parlaying,
            OFFLINE_EVENT = Bet is submitted on an event that is offline or with incorrect lineId,
            PAST_CUTOFFTIME = Bet is submitted on a game after the betting cutoff time,
            SYSTEM_ERROR_1 = Unexpected error,
            SYSTEM_ERROR_2 = Unexpected error,
            SYSTEM_ERROR_3 = Unexpected error,
            LINE_IS_NOT_AVAILABLE = Line is not available for the specified Parlay Leg,
            BETTING_SUSPENDED = Due to anomalous market circumstances bets are not currently being accepted on this line. Try again with next LineId.

        enum:
          - CANNOT_PARLAY_LIVE_GAME
          - CORRELATED
          - EVENT_NO_LONGER_AVAILABLE_FOR_BETTING
          - EVENT_NOT_OFFERED_FOR_PARLAY
          - INVALID_EVENT
          - INVALID_LEG_BET_TYPE
          - INVALID_PARLAY_BET
          - LINE_CHANGED
          - LINE_DOES_NOT_BELONG_TO_EVENT
          - LISTED_PITCHERS_SELECTION_ERROR
          - ODDS_NO_LONGER_OFFERED_FOR_PARLAY_1
          - ODDS_NO_LONGER_OFFERED_FOR_PARLAY_2
          - ODDS_NO_LONGER_OFFERED_FOR_PARLAY_3
          - OFFLINE_EVENT
          - PAST_CUTOFFTIME
          - SYSTEM_ERROR_1
          - SYSTEM_ERROR_2
          - SYSTEM_ERROR_3
          - LINE_IS_NOT_AVAILABLE
          - BETTING_SUSPENDED
      legId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Echo of the legId from the request.
      lineId:
        type: integer
        format: int64
        example: 419715968
        description: Line identification that bet was placed on.
      altLineId:
        type: integer
        format: int64
        example: null
        x-nullable: true
        description: 'If bet was accepted on alternate line, the altLineId will be returned.'
      price:
        type: number
        format: double
        example: 167
        description: 赔率 that the bet was placed on.
      points:
        type: number
        format: double
        example: 1
        description: 分数/盘口值
      correlatedLegs:
        type: array
        description: If errorCode is CORRELATED will contain legIds of all correlated legs.
        items:
          type: string
          format: uuid
          example: 10924E23-A2FE-4317-BFFD-80504675F554
    description: ''
  ParlayBetV2:
    type: object
    required:
      - betId
      - betStatus
      - betStatus2
      - betType
      - legs
      - oddsFormat
      - placedAt
      - risk
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        example: 760404490
        description: 投注标识
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique Request Id
      wagerNumber:
        type: integer
        format: int32
        example: 1
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        example: '2017-09-08T00:55:11Z'
        description: 投注下单时间。
      betStatus:
        type: string
        example: ACCEPTED
        description: |
          Bet Status.

          ACCEPTED = 投注已接受。
          CANCELLED = 按 Pinnacle 规则取消。
          LOSE = 已结算为输。
          PENDING_ACCEPTANCE = 仅用于滚球：在危险区或应用滚球延迟时下的单会先为此状态，否则为 ACCEPTED。可转为 ACCEPTED 或 REJECTED。
          REFUNDED = 赛事取消或投注结算为平局时退款。
          NOT_ACCEPTED = 未接受。仅当此前为 PENDING_ACCEPTANCE 时可能为此状态。
          WON = 已结算为赢。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - PENDING_ACCEPTANCE
          - REFUNDED
          - NOT_ACCEPTED
          - WON
      betStatus2:
        type: string
        example: ACCEPTED
        description: |
          Bet Status.

          ACCEPTED = Bet was accepted,
          CANCELLED = Bet is cancelled as per Pinnacle betting rules,
          LOST = The bet is settled as lose,
          PENDING_ACCEPTANCE = 仅用于滚球：在危险区或应用滚球延迟时下的单会先为此状态，否则为 ACCEPTED。可转为 ACCEPTED 或 REJECTED。
          REFUNDED = 赛事取消或投注结算为平局时退款。
          NOT_ACCEPTED = 未接受。仅当此前为 PENDING_ACCEPTANCE 时可能为此状态。
          WON = 已结算为赢。,
          PARTIAL_WON = 总派彩大于投注额。仅含亚洲让分盘的串关。
          PARTIAL_LOST = 总派彩小于或等于投注额。仅含亚洲让分盘的串关。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOST
          - PENDING_ACCEPTANCE
          - REFUNDED
          - NOT_ACCEPTED
          - WON
          - PARTIAL_WON
          - PARTIAL_LOST
      betType:
        type: string
        default: PARLAY
        example: PARLAY
      win:
        type: number
        format: double
        example: 6.82
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 1
        description: 风险金额。
      winLoss:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 已结算投注的盈亏。
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      customerCommission:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Client’s commission on the bet.
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      updateSequence:
        type: integer
        format: int64
        example: 112839436
        description: 更新序列号
      legs:
        type: array
        description: ''
        items:
          $ref: '#/definitions/ParlayLegV2'
      price:
        type: number
        format: double
        example: 682
        description: ''
      finalPrice:
        type: number
        format: double
        example: 0
        description: Only for settled parlay. Final price may differ in case leg was cancelled or half won
    description: ''
  ParlayBetRegradedWagerHistoryV1:
    type: object
    required:
      - betId
      - betStatus
      - betStatus2
      - betType
      - legs
      - oddsFormat
      - placedAt
      - risk
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        example: 760404490
        description: 投注标识
      originalBetId:
        type: integer
        format: int64
        example: 760404432
        description: Original Bet identification
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique Request Id
      wagerNumber:
        type: integer
        format: int32
        example: 1
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        example: '2017-09-08T00:55:11Z'
        description: 投注下单时间。
      betStatus:
        type: string
        example: ACCEPTED
        description: |
          Bet Status.

          ACCEPTED = 投注已接受。
          CANCELLED = 按 Pinnacle 规则取消。
          LOSE = 已结算为输。
          PENDING_ACCEPTANCE = 仅用于滚球：在危险区或应用滚球延迟时下的单会先为此状态，否则为 ACCEPTED。可转为 ACCEPTED 或 REJECTED。
          REFUNDED = 赛事取消或投注结算为平局时退款。
          NOT_ACCEPTED = 未接受。仅当此前为 PENDING_ACCEPTANCE 时可能为此状态。
          WON = 已结算为赢。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - PENDING_ACCEPTANCE
          - REFUNDED
          - NOT_ACCEPTED
          - WON
      betStatus2:
        type: string
        example: ACCEPTED
        description: |
          Bet Status.

          ACCEPTED = Bet was accepted,
          CANCELLED = Bet is cancelled as per Pinnacle betting rules,
          LOST = The bet is settled as lose,
          PENDING_ACCEPTANCE = 仅用于滚球：在危险区或应用滚球延迟时下的单会先为此状态，否则为 ACCEPTED。可转为 ACCEPTED 或 REJECTED。
          REFUNDED = 赛事取消或投注结算为平局时退款。
          NOT_ACCEPTED = 未接受。仅当此前为 PENDING_ACCEPTANCE 时可能为此状态。
          WON = 已结算为赢。,
          PARTIAL_WON = 总派彩大于投注额。仅含亚洲让分盘的串关。
          PARTIAL_LOST = 总派彩小于或等于投注额。仅含亚洲让分盘的串关。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOST
          - PENDING_ACCEPTANCE
          - REFUNDED
          - NOT_ACCEPTED
          - WON
          - PARTIAL_WON
          - PARTIAL_LOST
      betType:
        type: string
        default: PARLAY
        example: PARLAY
      win:
        type: number
        format: double
        example: 6.82
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 1
        description: 风险金额。
      winLoss:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 已结算投注的盈亏。
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      customerCommission:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Client’s commission on the bet.
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      updateSequence:
        type: integer
        format: int64
        example: 112839436
        description: 更新序列号
      legs:
        type: array
        description: ''
        items:
          $ref: '#/definitions/ParlayLegRegradedWagerHistoryV1'
      price:
        type: number
        format: double
        example: 682
        description: ''
      finalPrice:
        type: number
        format: double
        example: 0
        description: Only for settled parlay. Final price may differ in case leg was cancelled or half won
    description: ''
  ParlayLegV2:
    type: object
    properties:
      sportId:
        type: integer
        format: int32
        example: 29
        description: ''
      legBetType:
        type: string
        example: MONEYLINE
        description: 'Parlay leg type.'
        enum:
          - MONEYLINE
          - SPREAD
          - TOTAL_POINTS
          - TEAM_TOTAL_POINTS
      legBetStatus:
        type: string
        description: |
          Parlay Leg status.
          CANCELLED = The leg is canceled- the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          LOSE = The leg is a loss or a push-lose. When Push-lose happens, the half of the stake on the leg will be pushed to the next leg, and the other half will be a lose. This can happen only when the leg is placed on a quarter points handicap,
          PUSH = The leg is a push - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          REFUNDED = The leg is refunded - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          WON = The leg is a won or a push-won. When Push-won happens, the half of the stake on the leg will be pushed to the next leg, and the other half is won. This can happen only when the leg is placed on a quarter points handicap
        enum:
          - CANCELLED
          - LOSE
          - PUSH
          - REFUNDED
          - WON
          - ACCEPTED
      legBetStatus2:
        type: string
        description: |
          Parlay Leg status.
          CANCELLED = The leg is canceled- the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          LOST = The leg is a loss or a push-lose. When Push-lose happens, the half of the stake on the leg will be pushed to the next leg, and the other half will be a lose. This can happen only when the leg is placed on a quarter points handicap,
          PUSHED = The leg is a push - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          REFUNDED = The leg is refunded - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          WON = The leg is a won or a push-won. When Push-won happens, the half of the stake on the leg will be pushed to the next leg, and the other half is won. This can happen only when the leg is placed on a quarter points handicap,
          HALF_WON_HALF_PUSHED = The bet is settled as half won half pushed. Only for asian handicap legs,
          HALF_LOST_HALF_PUSHED = The bet is settled as half lost half pushed. Only for asian handicap legs
        enum:
          - CANCELLED
          - LOST
          - PUSHED
          - REFUNDED
          - WON
          - ACCEPTED
          - HALF_WON_HALF_PUSHED
          - HALF_LOST_HALF_PUSHED
      leagueId:
        type: integer
        format: int32
        example: 1766
        description: ''
      eventId:
        type: integer
        format: int64
        example: 758024079
        description: ''
      eventStartTime:
        type: string
        format: date-time
        example: '2017-10-07T21:00:00Z'
        description: 'Date time when the event starts'
      handicap:
        type: number
        format: double
        example: null
        x-nullable: true
        description: ''
      price:
        type: number
        format: double
        example: 193
        description: ''
      teamName:
        type: string
        example: Adelaide United
        description: ''
      side:
        type: string
        example: null
        x-nullable: true
        description: '方向类型（大/小）。'
        enum:
          - OVER
          - UNDER
      pitcher1:
        type: string
        example: null
        x-nullable: true
        description: ''
      pitcher2:
        type: string
        example: null
        x-nullable: true
        description: ''
      pitcher1MustStart:
        type: boolean
        example: false
        description: ''
      pitcher2MustStart:
        type: boolean
        example: false
        description: ''
      team1:
        type: string
        description: Wellington Phoenix
      team2:
        type: string
        description: Adelaide United
      periodNumber:
        type: integer
        format: int32
        example: 0
        description: ''
      ftTeam1Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Full time team 1 score
      ftTeam2Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Full time team 2 score
      pTeam1Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 'End of period team 1 score. If the bet was placed on Game period (periodNumber =0) , this will be null'
      pTeam2Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 'End of period team 2 score. If the bet was placed on Game period (periodNumber =0) , this will be null'
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      resultingUnit:
        type: string
        description: Specifies based on what the event is being resulted, e.g. Corners, Bookings , Regular
    description: ''
  ParlayLegRegradedWagerHistoryV1:
    type: object
    properties:
      sportId:
        type: integer
        format: int32
        example: 29
        description: ''
      legBetType:
        type: string
        example: MONEYLINE
        description: 'Parlay leg type.'
        enum:
          - MONEYLINE
          - SPREAD
          - TOTAL_POINTS
          - TEAM_TOTAL_POINTS
      legBetStatus:
        type: string
        description: |
          Parlay Leg status.
          CANCELLED = The leg is canceled- the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          LOSE = The leg is a loss or a push-lose. When Push-lose happens, the half of the stake on the leg will be pushed to the next leg, and the other half will be a lose. This can happen only when the leg is placed on a quarter points handicap,
          PUSH = The leg is a push - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          REFUNDED = The leg is refunded - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          WON = The leg is a won or a push-won. When Push-won happens, the half of the stake on the leg will be pushed to the next leg, and the other half is won. This can happen only when the leg is placed on a quarter points handicap
        enum:
          - CANCELLED
          - LOSE
          - PUSH
          - REFUNDED
          - WON
          - ACCEPTED
      legBetStatus2:
        type: string
        description: |
          Parlay Leg status.
          CANCELLED = The leg is canceled- the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          LOST = The leg is a loss or a push-lose. When Push-lose happens, the half of the stake on the leg will be pushed to the next leg, and the other half will be a lose. This can happen only when the leg is placed on a quarter points handicap,
          PUSHED = The leg is a push - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          REFUNDED = The leg is refunded - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          WON = The leg is a won or a push-won. When Push-won happens, the half of the stake on the leg will be pushed to the next leg, and the other half is won. This can happen only when the leg is placed on a quarter points handicap,
          HALF_WON_HALF_PUSHED = The bet is settled as half won half pushed. Only for asian handicap legs,
          HALF_LOST_HALF_PUSHED = The bet is settled as half lost half pushed. Only for asian handicap legs
        enum:
          - CANCELLED
          - LOST
          - PUSHED
          - REFUNDED
          - WON
          - ACCEPTED
          - HALF_WON_HALF_PUSHED
          - HALF_LOST_HALF_PUSHED
      leagueId:
        type: integer
        format: int32
        example: 1766
        description: ''
      leagueName:
        type: string
        example: Australia - A League
        description: ''
      eventId:
        type: integer
        format: int64
        example: 758024079
        description: ''
      eventStartTime:
        type: string
        format: date-time
        example: '2017-10-07T21:00:00Z'
        description: 'Date time when the event starts'
      handicap:
        type: number
        format: double
        example: null
        x-nullable: true
        description: ''
      price:
        type: number
        format: double
        example: 193
        description: ''
      teamName:
        type: string
        example: Adelaide United
        description: ''
      side:
        type: string
        example: null
        x-nullable: true
        description: '方向类型（大/小）。'
        enum:
          - OVER
          - UNDER
      pitcher1:
        type: string
        example: null
        x-nullable: true
        description: ''
      pitcher2:
        type: string
        example: null
        x-nullable: true
        description: ''
      pitcher1MustStart:
        type: boolean
        example: false
        description: ''
      pitcher2MustStart:
        type: boolean
        example: false
        description: ''
      team1:
        type: string
        description: Wellington Phoenix
      team2:
        type: string
        description: Adelaide United
      periodNumber:
        type: integer
        format: int32
        example: 0
        description: ''
      ftTeam1Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Full time team 1 score
      ftTeam2Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Full time team 2 score
      pTeam1Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 'End of period team 1 score. If the bet was placed on Game period (periodNumber =0) , this will be null'
      pTeam2Score:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 'End of period team 2 score. If the bet was placed on Game period (periodNumber =0) , this will be null'
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      resultingUnit:
        type: string
        description: Specifies based on what the event is being resulted, e.g. Corners, Bookings , Regular
    description: ''
  PlaceTeaserBetRequest:
    type: object
    properties:
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Client generated GUID for uniquely identifying the bet.
      teaserId:
        type: integer
        format: int32
        description: Unique identifier. Teaser details can be retrieved from a call to Get Teaser Groups endpoint.
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      winRiskStake:
        type: string
        description: 投注金额是风险金额还是盈利金额。
      stake:
        type: number
        format: double
        description: amount in client’s currency.
      legs:
        type: array
        description: Collection of legs.
        items:
          $ref: '#/definitions/TeaserBetLeg'
    description: ''
  TeaserBetLeg:
    type: object
    properties:
      legId:
        type: string
        format: int64
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Client generated GUID for uniquely identifying the leg.
      betType:
        type: string
        example: SPREAD
        description: 'Leg bet type can be SPREAD or TOTAL_POINTS '
        enum:
          - SPREAD
          - TOTAL_POINTS
      lineId:
        type: integer
        format: int64
        description: Unique identifier.
      eventId:
        type: integer
        format: int64
        description: Unique identifier.
      team:
        type: string
        description: Team being bet on for a spread line.
      side:
        type: string
        description: 'Chosen side type. This is needed only for TOTAL_POINTS bet type.'
        enum:
          - OVER
          - UNDER
    description: ''
  PlaceTeaserBetResponse:
    type: object
    properties:
      status:
        type: string
        description: Status of the request.
      errorCode:
        type: string
        description: |
          When Status is PROCESSED_WITH_ERROR, provides a code indicating the specific problem.

          ABOVE_MAX_BET_AMOUNT = Bet is above the maximum allowed,
          ALL_BETTING_CLOSED = The wagering is disabled in the system (not related to a customer),
          BELOW_MIN_BET_AMOUNT = Bet is below the minimum allowed,
          BLOCKED_BETTING = Betting is suspended for the client,
          BLOCKED_CLIENT = Customer is inactive in the system,
          DOUBLE_HIT = The website submitted the same bet more than once,
          DUPLICATE_CLIENT_REFERENCE_ID = The teaser unique id and/or one of the leg unique id are the same,
          INCOMPLETE_CUSTOMER_BETTING_PROFILE = The customer does not exist,
          INSUFFICIENT_FUNDS = The risk amount is above the customer’s available balance,
          INVALID_COUNTRY = Current location is proscribed,
          INVALID_CUSTOMER_PROFILE = Either the customer does not exist OR the customer business rules are not verified,
          INVALID_LEGS = One or more legs are not verified,
          INVALID_REQUEST = Teaser request is not valid,
          ODDS_FORMAT_MISMATCH = Agent customer’s odds format differs from wager request odds format,
          RESUBMIT_REQUEST = The ticket hast to be resubmitted,
          TEASER_DOES_NOT_EXIST = Teaser does not exist in the system,
          SAME_EVENT_ONLY_REQUIRED = Legs required to be for the same game only. Specified in the Teaser Specifications,
          SYSTEM_ERROR_1 = System error,
          SYSTEM_ERROR_2 = System error,
          SYSTEM_ERROR_3 = System error,
          TOO_FEW_LEGS = Legs count is below Min Picks specified in the Teaser Specifications,
          TOO_MANY_LEGS = Legs count is above Max Picks specified in the Teaser Specifications,
          DUPLICATE_UNIQUE_REQUEST_ID = Request with the same uniqueRequestId was already processed. Please set the new value if you still want the request to be processed,
          RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED = Client has reached his total loss limit,
          RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED = Client has reached his total risk limit

        enum:
          - ABOVE_MAX_BET_AMOUNT
          - ALL_BETTING_CLOSED
          - BELOW_MIN_BET_AMOUNT
          - BLOCKED_BETTING
          - BLOCKED_CLIENT
          - DOUBLE_HIT
          - DUPLICATE_CLIENT_REFERENCE_ID
          - INCOMPLETE_CUSTOMER_BETTING_PROFILE
          - INSUFFICIENT_FUNDS
          - INVALID_COUNTRY
          - INVALID_CUSTOMER_PROFILE
          - INVALID_LEGS
          - INVALID_REQUEST
          - ODDS_FORMAT_MISMATCH
          - RESUBMIT_REQUEST
          - TEASER_DOES_NOT_EXIST
          - SAME_EVENT_ONLY_REQUIRED
          - SYSTEM_ERROR_1
          - SYSTEM_ERROR_2
          - SYSTEM_ERROR_3
          - TOO_FEW_LEGS
          - TOO_MANY_LEGS
          - DUPLICATE_UNIQUE_REQUEST_ID
          - RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED
          - RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED
      betId:
        type: integer
        format: int64
        description: Id of a newly created bet.
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique identifier provided in the request.
      price:
        type: number
        format: double
        description: 赔率 for the bet.
      riskAmount:
        type: number
        format: double
        description: Amount wagered.
      winAmount:
        type: number
        format: double
        description: Potential winnings.
      winRiskStake:
        type: string
        description: 投注金额是风险金额还是盈利金额。
      invalidLegs:
        type: array
        description: 'A collection of invalid legs, if any.'
        items:
          $ref: '#/definitions/PlaceTeaserBetLegResponse'
      validLegs:
        type: array
        description: 'A collection of valid legs, if any.'
        items:
          $ref: '#/definitions/PlaceTeaserBetLegResponse'
      teaserBet:
        $ref: '#/definitions/TeaserBet'
        description: 'Present if bet was accepted'
  PlaceTeaserBetResponseV4:
    type: object
    properties:
      status:
        type: string
        description: Status of the request.
      errorCode:
        type: string
        description: |
          When Status is PROCESSED_WITH_ERROR, provides a code indicating the specific problem.

          ABOVE_MAX_BET_AMOUNT = Bet is above the maximum allowed,
          ALL_BETTING_CLOSED = The wagering is disabled in the system (not related to a customer),
          BELOW_MIN_BET_AMOUNT = Bet is below the minimum allowed,
          BLOCKED_BETTING = Betting is suspended for the client,
          BLOCKED_CLIENT = Customer is inactive in the system,
          DOUBLE_HIT = The website submitted the same bet more than once,
          DUPLICATE_CLIENT_REFERENCE_ID = The teaser unique id and/or one of the leg unique id are the same,
          INCOMPLETE_CUSTOMER_BETTING_PROFILE = The customer does not exist,
          INSUFFICIENT_FUNDS = The risk amount is above the customer’s available balance,
          INVALID_COUNTRY = Current location is proscribed,
          INVALID_CUSTOMER_PROFILE = Either the customer does not exist OR the customer business rules are not verified,
          INVALID_LEGS = One or more legs are not verified,
          INVALID_REQUEST = Teaser request is not valid,
          ODDS_FORMAT_MISMATCH = Agent customer’s odds format differs from wager request odds format,
          RESUBMIT_REQUEST = The ticket hast to be resubmitted,
          TEASER_DOES_NOT_EXIST = Teaser does not exist in the system,
          SAME_EVENT_ONLY_REQUIRED = Legs required to be for the same game only. Specified in the Teaser Specifications,
          SYSTEM_ERROR_1 = System error,
          SYSTEM_ERROR_2 = System error,
          SYSTEM_ERROR_3 = System error,
          TOO_FEW_LEGS = Legs count is below Min Picks specified in the Teaser Specifications,
          TOO_MANY_LEGS = Legs count is above Max Picks specified in the Teaser Specifications,
          DUPLICATE_UNIQUE_REQUEST_ID = Request with the same uniqueRequestId was already processed. Please set the new value if you still want the request to be processed,
          RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED = Client has reached his total loss limit,
          RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED = Client has reached his total risk limit

        enum:
          - ABOVE_MAX_BET_AMOUNT
          - ALL_BETTING_CLOSED
          - BELOW_MIN_BET_AMOUNT
          - BLOCKED_BETTING
          - BLOCKED_CLIENT
          - DOUBLE_HIT
          - DUPLICATE_CLIENT_REFERENCE_ID
          - INCOMPLETE_CUSTOMER_BETTING_PROFILE
          - INSUFFICIENT_FUNDS
          - INVALID_COUNTRY
          - INVALID_CUSTOMER_PROFILE
          - INVALID_LEGS
          - INVALID_REQUEST
          - ODDS_FORMAT_MISMATCH
          - RESUBMIT_REQUEST
          - TEASER_DOES_NOT_EXIST
          - SAME_EVENT_ONLY_REQUIRED
          - SYSTEM_ERROR_1
          - SYSTEM_ERROR_2
          - SYSTEM_ERROR_3
          - TOO_FEW_LEGS
          - TOO_MANY_LEGS
          - DUPLICATE_UNIQUE_REQUEST_ID
          - RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED
          - RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED
      betId:
        type: integer
        format: int64
        description: Id of a newly created bet.
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique identifier provided in the request.
      price:
        type: number
        format: double
        description: 赔率 for the bet.
      risk:
        type: number
        format: double
        description: Amount wagered.
      win:
        type: number
        format: double
        description: Potential winnings.
      winRiskStake:
        type: string
        description: 投注金额是风险金额还是盈利金额。
      invalidLegs:
        type: array
        description: 'A collection of invalid legs, if any.'
        items:
          $ref: '#/definitions/PlaceTeaserBetLegResponse'
      validLegs:
        type: array
        description: 'A collection of valid legs, if any.'
        items:
          $ref: '#/definitions/PlaceTeaserBetLegResponse'
  PlaceTeaserBetLegResponse:
    type: object
    properties:
      status:
        type: string
        description: Status of the request.
      errorCode:
        type: string
        description: |
          When Status is PROCESSED_WITH_ERROR, provides a code indicating the specific problem.

          CANNOT_TEASER_LIVE_GAME = Teaser is not allowed on a live game,
          CHECK_TEASER_ERROR = The teaser is invalid, check the teaser error for more details,
          INVALID_EVENT = The game is not found in the system,
          INVALID_LEG_BET = The wager is not verified,
          INVALID_LEG_BET_TYPE = Wager type is not “teasable”, can be either Spread or Total,
          LINE_CHANGED = Wager is placed on a line that has changed,
          LINE_DOES_NOT_BELONG_TO_EVENT = There was no game found for the wager,
          OFFLINE_EVENT = Either the game is offline OR there was no game found for the wager,
          PAST_CUTOFFTIME = Wager is placed on a game after the cutoff time,
          POINTS_ARE_NOT_ADJUSTED = The teaser points were not adjusted,
          SYSTEM_ERROR_1 = System error,
          SYSTEM_ERROR_2 = System error,
          WAGER_DATA_MISSING = Wager is denied due to insufficient information available for validation,
          LINE_IS_NOT_AVAILABLE = Line is not available for the specified Teaser Leg,
          BETTING_SUSPENDED = Due to anomalous market circumstances bets are not currently being accepted on this line. Try again with next LineId.
        enum:
          - CANNOT_TEASER_LIVE_GAME
          - CHECK_TEASER_ERROR
          - INVALID_EVENT
          - INVALID_LEG_BET
          - INVALID_LEG_BET_TYPE
          - LINE_CHANGED
          - LINE_DOES_NOT_BELONG_TO_EVENT
          - OFFLINE_EVENT
          - PAST_CUTOFFTIME
          - POINTS_ARE_NOT_ADJUSTED
          - SYSTEM_ERROR_1
          - SYSTEM_ERROR_2
          - WAGER_DATA_MISSING
          - LINE_IS_NOT_AVAILABLE
          - BETTING_SUSPENDED
      legId:
        type: string
        format: uuid
        example: A9EB2EB1-13A5-4600-9F1B-4859379CDEC4
        description: Echo of the legId from the request.
      lineId:
        type: integer
        format: int64
        description: Line identification that bet was placed on.
      points:
        type: number
        format: double
        description: Number of points.
    description: ''
  'MultiBetRequest[SpecialBetRequest]':
    type: object
    properties:
      bets:
        type: array
        description: The individual bets.
        items:
          $ref: '#/definitions/SpecialBetRequest'
    description: ''
  SpecialBetRequest:
    type: object
    properties:
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: This unique id of the place bet requests. This is to support idempotent requests.
      acceptBetterLine:
        type: boolean
        example: true
        description: 当盘口变化对客户有利时是否接受该投注。
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      stake:
        type: number
        format: double
        example: 10.5
        description: amount in client’s currency.
      winRiskStake:
        type: string
        example: RISK
        description: 投注金额是风险金额还是盈利金额。
        enum:
          - WIN
          - RISK
      lineId:
        type: integer
        format: int64
        example: 51024304
        description: 盘口标识。
      specialId:
        type: integer
        format: int64
        example: 726394409
        description: Special identification.
      contestantId:
        type: integer
        format: int64
        example: 726394411
        description: Contestant identification.
    description: ''
  'MultiBetResponse[SpecialBetResponse]':
    type: object
    properties:
      bets:
        type: array
        description: The individual bets.
        items:
          $ref: '#/definitions/SpecialBetResponse'
    description: ''
  'MultiBetResponse[SpecialBetResponseV4]':
    type: object
    properties:
      bets:
        type: array
        description: The individual bets.
        items:
          $ref: '#/definitions/SpecialBetResponseV4'
    description: ''
  SpecialBetResponse:
    type: object
    properties:
      status:
        type: string
        example: ACCEPTED
        description: Status of the request.
        enum:
          - ACCEPTED
          - PROCESSED_WITH_ERROR
      errorCode:
        type: string
        example: null
        x-nullable: true
        description: |
          When Status is PROCESSED_WITH_ERROR, provides a code indicating the specific problem.

          ALL_BETTING_CLOSED = Betting is not allowed at this moment. This may happen during system maintenance.
           ABOVE_MAX_BET_AMOUNT = Stake is above allowed maximum amount,
           BELOW_MIN_BET_AMOUNT = Stake is below allowed minimum amount,
           BLOCKED_BETTING = Betting is suspended for the client,
           BLOCKED_CLIENT = Client is no longer active,
           CONTEST_NOT_FOUND = Incorrect contest id provided or contest is no longer available,
           DUPLICATE_UNIQUE_REQUEST_ID = UniqueRequestId must be unique for each bet,
           INCOMPLETE_CUSTOMER_BETTING_PROFILE = Customer profile could not be loaded,
           INSUFFICIENT_FUNDS = Bet is submitted by a client with insufficient funds,
           INVALID_COUNTRY = Client country is not allowed for betting,
           INVALID_REQUEST = Special bet request is not valid,
           LINE_CHANGED = Bet is submitted on a line that has changed,
           PAST_CUTOFFTIME = Bet is submitted on a game after the betting cutoff time,
           RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED = Self-imposed loss limit exceeded,
           RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED = Self-imposed risk limit exceeded,
           RESUBMIT_REQUEST = The ticket hast to be resubmitted,
           SYSTEM_ERROR_1 = Unexpected error,
           SYSTEM_ERROR_2 = Unexpected error,
           UNIQUE_REQUEST_ID_REQUIRED = UniqueRequestId is missing,
           BETTING_SUSPENDED = Due to anomalous market circumstances bets are not currently being accepted on this line. Try again with next LineId,
           INVALID_CUSTOMER_PROFILE
        enum:
          - ALL_BETTING_CLOSED
          - ABOVE_MAX_BET_AMOUNT
          - BELOW_MIN_BET_AMOUNT
          - BLOCKED_BETTING
          - BLOCKED_CLIENT
          - CONTEST_NOT_FOUND
          - DUPLICATE_UNIQUE_REQUEST_ID
          - INCOMPLETE_CUSTOMER_BETTING_PROFILE
          - INSUFFICIENT_FUNDS
          - INVALID_COUNTRY
          - INVALID_REQUEST
          - LINE_CHANGED
          - PAST_CUTOFFTIME
          - RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED
          - RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED
          - RESUBMIT_REQUEST
          - SYSTEM_ERROR_1
          - SYSTEM_ERROR_2
          - UNIQUE_REQUEST_ID_REQUIRED
          - BETTING_SUSPENDED
          - INVALID_CUSTOMER_PROFILE
      betId:
        type: integer
        format: int64
        example: 760745142
        description: Id of a newly created bet.
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique identifier provided in the request.
      betterLineWasAccepted:
        type: boolean
        example: false
        description: Whether or not the bet was accepted on the line that changed in favour of client. This can be true only if acceptBetterLine in the Place Bet request is set to TRUE.
      specialBet:
        $ref: '#/definitions/SpecialBetV2'
    description: ''
  SpecialBetResponseV4:
    type: object
    properties:
      status:
        type: string
        example: ACCEPTED
        description: Status of the request.
        enum:
          - ACCEPTED
          - PROCESSED_WITH_ERROR
      errorCode:
        type: string
        example: null
        x-nullable: true
        description: |
          When Status is PROCESSED_WITH_ERROR, provides a code indicating the specific problem.

          ALL_BETTING_CLOSED = Betting is not allowed at this moment. This may happen during system maintenance.
           ABOVE_MAX_BET_AMOUNT = Stake is above allowed maximum amount,
           BELOW_MIN_BET_AMOUNT = Stake is below allowed minimum amount,
           BLOCKED_BETTING = Betting is suspended for the client,
           BLOCKED_CLIENT = Client is no longer active,
           CONTEST_NOT_FOUND = Incorrect contest id provided or contest is no longer available,
           DUPLICATE_UNIQUE_REQUEST_ID = UniqueRequestId must be unique for each bet,
           INCOMPLETE_CUSTOMER_BETTING_PROFILE = Customer profile could not be loaded,
           INSUFFICIENT_FUNDS = Bet is submitted by a client with insufficient funds,
           INVALID_COUNTRY = Client country is not allowed for betting,
           INVALID_REQUEST = Special bet request is not valid,
           LINE_CHANGED = Bet is submitted on a line that has changed,
           PAST_CUTOFFTIME = Bet is submitted on a game after the betting cutoff time,
           RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED = Self-imposed loss limit exceeded,
           RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED = Self-imposed risk limit exceeded,
           RESUBMIT_REQUEST = The ticket hast to be resubmitted,
           SYSTEM_ERROR_1 = Unexpected error,
           SYSTEM_ERROR_2 = Unexpected error,
           UNIQUE_REQUEST_ID_REQUIRED = UniqueRequestId is missing,
           BETTING_SUSPENDED = Due to anomalous market circumstances bets are not currently being accepted on this line. Try again with next LineId,
           INVALID_CUSTOMER_PROFILE
        enum:
          - ALL_BETTING_CLOSED
          - ABOVE_MAX_BET_AMOUNT
          - BELOW_MIN_BET_AMOUNT
          - BLOCKED_BETTING
          - BLOCKED_CLIENT
          - CONTEST_NOT_FOUND
          - DUPLICATE_UNIQUE_REQUEST_ID
          - INCOMPLETE_CUSTOMER_BETTING_PROFILE
          - INSUFFICIENT_FUNDS
          - INVALID_COUNTRY
          - INVALID_REQUEST
          - LINE_CHANGED
          - PAST_CUTOFFTIME
          - RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED
          - RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED
          - RESUBMIT_REQUEST
          - SYSTEM_ERROR_1
          - SYSTEM_ERROR_2
          - UNIQUE_REQUEST_ID_REQUIRED
          - BETTING_SUSPENDED
          - INVALID_CUSTOMER_PROFILE
      betId:
        type: integer
        format: int64
        example: 760745142
        description: Id of a newly created bet.
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique identifier provided in the request.
      betterLineWasAccepted:
        type: boolean
        example: false
        description: Whether or not the bet was accepted on the line that changed in favour of client. This can be true only if acceptBetterLine in the Place Bet request is set to TRUE.
      win:
        type: number
        format: double
        example: 1
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 1.51
        description: 风险金额。
      price:
        type: number
        format: double
        example: 1.51
        description: 赔率 amount.
    description: ''
  SpecialBet:
    type: object
    required:
      - betId
      - betStatus
      - betType
      - contestantId
      - contestantName
      - leagueId
      - oddsFormat
      - placedAt
      - price
      - risk
      - specialId
      - specialName
      - sportId
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        example: 760748770
        description: 投注标识
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique Request Id
      wagerNumber:
        type: integer
        format: int32
        example: 1
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        example: '2017-09-09T01:49:43Z'
        description: 投注下单时间。
      settledAt:
        type: string
        format: date-time
        example: '2017-09-05T01:32:59Z'
        description: Date time when the bet was settled.
      betStatus:
        type: string
        example: ACCEPTED
        description: |
          Bet Status.
          ACCEPTED = 投注已接受。
          CANCELLED = 按 Pinnacle 规则取消。
          LOSE = 已结算为输。
          REFUNDED = 赛事取消或投注结算为平局时退款。
          WON = 已结算为赢。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - REFUNDED
          - WON
      betType:
        type: string
        default: SPECIAL
        example: SPECIAL
      win:
        type: number
        format: double
        example: 1
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 1.51
        description: 风险金额。
      winLoss:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 已结算投注的盈亏。
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      customerCommission:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Client’s commission on the bet.
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      updateSequence:
        type: integer
        format: int64
        example: 113214135
        description: 更新序列号. It gets updated when the bet status change.
      specialId:
        type: integer
        format: int64
        example: 726397620
        description: ''
      specialName:
        type: string
        example: Denver Broncos Regular Season Wins?
        description: ''
      contestantId:
        type: integer
        format: int64
        example: 726397622
        description: ''
      contestantName:
        type: string
        example: Under
        description: ''
      price:
        type: number
        format: double
        example: -151
        description: ''
      handicap:
        type: number
        format: double
        example: 8.5
        description: ''
      units:
        type: string
        example: Regular Season Wins
        description: ''
      sportId:
        type: integer
        format: int32
        example: 15
        description: ''
      leagueId:
        type: integer
        format: int32
        example: 889
        description: ''
      eventId:
        type: integer
        format: int64
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      periodNumber:
        type: integer
        format: int32
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      team1:
        type: string
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      team2:
        type: string
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
    description: ''
  SpecialBetV2:
    type: object
    required:
      - betId
      - betStatus
      - betType
      - contestantId
      - contestantName
      - leagueId
      - oddsFormat
      - placedAt
      - price
      - risk
      - specialId
      - specialName
      - sportId
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        example: 760748770
        description: 投注标识
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique Request Id
      wagerNumber:
        type: integer
        format: int32
        example: 1
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        example: '2017-09-09T01:49:43Z'
        description: 投注下单时间。
      betStatus:
        type: string
        example: ACCEPTED
        description: |
          Bet Status.
          ACCEPTED = 投注已接受。
          CANCELLED = 按 Pinnacle 规则取消。
          LOSE = 已结算为输。
          REFUNDED = 赛事取消或投注结算为平局时退款。
          WON = 已结算为赢。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - REFUNDED
          - WON
      betType:
        type: string
        default: SPECIAL
        example: SPECIAL
      win:
        type: number
        format: double
        example: 1
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 1.51
        description: 风险金额。
      winLoss:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 已结算投注的盈亏。
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      customerCommission:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Client’s commission on the bet.
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      updateSequence:
        type: integer
        format: int64
        example: 113214135
        description: 更新序列号. It gets updated when the bet status change.
      specialId:
        type: integer
        format: int64
        example: 726397620
        description: ''
      specialName:
        type: string
        example: Denver Broncos Regular Season Wins?
        description: ''
      contestantId:
        type: integer
        format: int64
        example: 726397622
        description: ''
      contestantName:
        type: string
        example: Under
        description: ''
      price:
        type: number
        format: double
        example: -151
        description: ''
      handicap:
        type: number
        format: double
        example: 8.5
        description: ''
      units:
        type: string
        example: Regular Season Wins
        description: ''
      sportId:
        type: integer
        format: int32
        example: 15
        description: ''
      leagueId:
        type: integer
        format: int32
        example: 889
        description: ''
      eventId:
        type: integer
        format: int64
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      periodNumber:
        type: integer
        format: int32
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      team1:
        type: string
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      team2:
        type: string
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      eventStartTime:
        type: string
        format: date-time
        description: Date time when the event starts.
      resultingUnit:
        type: string
        description: Specifies based on what the event is being resulted, e.g. Corners, Bookings , Regular.
    description: ''
  SpecialBetV3:
    type: object
    required:
      - betId
      - betStatus
      - betType
      - contestantId
      - contestantName
      - leagueId
      - oddsFormat
      - placedAt
      - price
      - risk
      - specialId
      - specialName
      - sportId
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        example: 760748770
        description: 投注标识
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique Request Id
      wagerNumber:
        type: integer
        format: int32
        example: 1
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        example: '2017-09-09T01:49:43Z'
        description: 投注下单时间。
      betStatus:
        type: string
        example: ACCEPTED
        description: |
          Bet Status.
          ACCEPTED = 投注已接受。
          CANCELLED = 按 Pinnacle 规则取消。
          LOSE = 已结算为输。
          REFUNDED = 赛事取消或投注结算为平局时退款。
          WON = 已结算为赢。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - REFUNDED
          - WON
      betType:
        type: string
        default: SPECIAL
        example: SPECIAL
      win:
        type: number
        format: double
        example: 1
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 1.51
        description: 风险金额。
      winLoss:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 已结算投注的盈亏。
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      customerCommission:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Client’s commission on the bet.
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      updateSequence:
        type: integer
        format: int64
        example: 113214135
        description: 更新序列号. It gets updated when the bet status change.
      specialId:
        type: integer
        format: int64
        example: 726397620
        description: ''
      specialName:
        type: string
        example: Denver Broncos Regular Season Wins?
        description: ''
      contestantId:
        type: integer
        format: int64
        example: 726397622
        description: ''
      contestantName:
        type: string
        example: Under
        description: ''
      price:
        type: number
        format: double
        example: -151
        description: ''
      handicap:
        type: number
        format: double
        example: 8.5
        description: ''
      units:
        type: string
        example: Regular Season Wins
        description: ''
      sportId:
        type: integer
        format: int32
        example: 15
        description: ''
      leagueId:
        type: integer
        format: int32
        example: 889
        description: ''
      eventId:
        type: integer
        format: int64
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      periodNumber:
        type: integer
        format: int32
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      team1:
        type: string
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      team2:
        type: string
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      eventStartTime:
        type: string
        format: date-time
        example: 2017-10-05T01:32:59Z
        x-nullable: false
        description: Date time when the event starts.
      resultingUnit:
        type: string
        x-nullable: false
        description: Specifies based on what the event is being resulted, e.g. Corners, Bookings , Regular.
    description: ''
  SpecialBetRegradedWagerHistoryV1:
    type: object
    required:
      - betId
      - betStatus
      - betType
      - contestantId
      - contestantName
      - leagueId
      - oddsFormat
      - placedAt
      - price
      - risk
      - specialId
      - specialName
      - sportId
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        example: 760748770
        description: 投注标识
      originalBetId:
        type: integer
        format: int64
        example: 760748743
        description: Original bet identification
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique Request Id
      wagerNumber:
        type: integer
        format: int32
        example: 1
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        example: '2017-09-09T01:49:43Z'
        description: 投注下单时间。
      betStatus:
        type: string
        example: ACCEPTED
        description: |
          Bet Status.
          ACCEPTED = 投注已接受。
          CANCELLED = 按 Pinnacle 规则取消。
          LOSE = 已结算为输。
          REFUNDED = 赛事取消或投注结算为平局时退款。
          WON = 已结算为赢。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - REFUNDED
          - WON
      betType:
        type: string
        default: SPECIAL
        example: SPECIAL
      win:
        type: number
        format: double
        example: 1
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 1.51
        description: 风险金额。
      winLoss:
        type: number
        format: double
        example: null
        x-nullable: true
        description: 已结算投注的盈亏。
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      customerCommission:
        type: number
        format: double
        example: null
        x-nullable: true
        description: Client’s commission on the bet.
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      updateSequence:
        type: integer
        format: int64
        example: 113214135
        description: 更新序列号. It gets updated when the bet status change.
      specialId:
        type: integer
        format: int64
        example: 726397620
        description: ''
      specialName:
        type: string
        example: Denver Broncos Regular Season Wins?
        description: ''
      contestantId:
        type: integer
        format: int64
        example: 726397622
        description: ''
      contestantName:
        type: string
        example: Under
        description: ''
      price:
        type: number
        format: double
        example: -151
        description: ''
      handicap:
        type: number
        format: double
        example: 8.5
        description: ''
      units:
        type: string
        example: Regular Season Wins
        description: ''
      sportId:
        type: integer
        format: int32
        example: 15
        description: ''
      leagueId:
        type: integer
        format: int32
        example: 889
        description: ''
      eventId:
        type: integer
        format: int64
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      periodNumber:
        type: integer
        format: int32
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      team1:
        type: string
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      team2:
        type: string
        example: null
        x-nullable: true
        description: Populated if bet was placed on a special linked to the event.
      eventStartTime:
        type: string
        format: date-time
        example: 2017-10-05T01:32:59Z
        x-nullable: false
        description: Date time when the event starts.
      resultingUnit:
        type: string
        x-nullable: false
        description: Specifies based on what the event is being resulted, e.g. Corners, Bookings , Regular.
    description: ''
  GetBetsByTypeResponseV3:
    type: object
    properties:
      moreAvailable:
        type: boolean
        description: Whether there are more pages available.
      pageSize:
        type: integer
        description: Page size. Default is 1000.
        example: 1000
      fromRecord:
        type: integer
        description: Starting record number of the result set. Records start at zero
      toRecord:
        type: integer
        description: Ending record number of the result set.
      straightBets:
        type: array
        description: A collection of placed straight bets.
        items:
          $ref: '#/definitions/StraightBetV3'
      parlayBets:
        type: array
        description: A collection of placed parlay bets.
        items:
          $ref: '#/definitions/ParlayBetV2'
      teaserBets:
        type: array
        description: A collection of placed teaser bets.
        items:
          $ref: '#/definitions/TeaserBet'
      specialBets:
        type: array
        description: A collection of placed special bets.
        items:
          $ref: '#/definitions/SpecialBetV3'
      manualBets:
        type: array
        description: A collection of placed manual bets.
        items:
          $ref: '#/definitions/ManualBet'
    description: ''
  GetRegradedWagerHistoryResponseV1:
    type: object
    properties:
      moreAvailable:
        type: boolean
        description: Whether there are more pages available.
      pageSize:
        type: integer
        description: Page size. Default is 1000.
        example: 1000
      fromRecord:
        type: integer
        description: Starting record number of the result set. Records start at zero
      toRecord:
        type: integer
        description: Ending record number of the result set.
      straightBets:
        type: array
        description: A collection of placed straight bets.
        items:
          $ref: '#/definitions/StraightBetRegradedWagerHistoryV1'
      parlayBets:
        type: array
        description: A collection of placed parlay bets.
        items:
          $ref: '#/definitions/ParlayBetRegradedWagerHistoryV1'
      teaserBets:
        type: array
        description: A collection of placed teaser bets.
        items:
          $ref: '#/definitions/TeaserBetRegradedWagerHistoryV1'
      specialBets:
        type: array
        description: A collection of placed special bets.
        items:
          $ref: '#/definitions/SpecialBetRegradedWagerHistoryV1'
      manualBets:
        type: array
        description: A collection of placed manual bets.
        items:
          $ref: '#/definitions/ManualBetRegradedWagerHistoryV1'
    description: ''
  TeaserBet:
    type: object
    required:
      - betId
      - betStatus
      - betType
      - isSameEventOnly
      - legs
      - maxPicks
      - minPicks
      - oddsFormat
      - placedAt
      - risk
      - teaserName
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        description: 投注标识
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique Request Id
      wagerNumber:
        type: integer
        format: int32
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        description: 投注下单时间。
      betStatus:
        type: string
        description: |
            Bet Status.

            ACCEPTED = 投注已接受。
            CANCELLED = 按 Pinnacle 规则取消。
            LOSE = 已结算为输。
            REFUNDED = 赛事取消或投注结算为平局时退款。
            WON = 已结算为赢。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - REFUNDED
          - WON
      betType:
        type: string
        default: TEASER
        example: TEASER
      win:
        type: number
        format: double
        description: 盈利金额。
      risk:
        type: number
        format: double
        description: 风险金额。
      winLoss:
        type: number
        format: double
        description: 已结算投注的盈亏。
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      customerCommission:
        type: number
        format: double
        description: Client’s commission on the bet.
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      updateSequence:
        type: integer
        format: int64
        description: 更新序列号
      teaserName:
        type: string
        description: ''
      isSameEventOnly:
        type: boolean
        description: ''
      minPicks:
        type: number
        format: double
        description: ''
      maxPicks:
        type: number
        format: double
        description: ''
      price:
        type: number
        format: double
        example: 682
        description: 'Populated for all teaser bets and will be the original price at the time of the placement.'
      finalPrice:
        type: number
        format: double
        example: 0
        description: Only for settled parlay. Final price may differ in case leg was cancelled or half won.
      teaserId:
        type: number
        format: int32
        example: 0
        description: Reference to the teaser id.
      teaserGroupId:
        type: number
        format: int32
        example: 0
        description: Reference to the teaser group id.
      legs:
        type: array
        description: ''
        items:
          $ref: '#/definitions/TeaserLeg'
    description: ''
  TeaserBetRegradedWagerHistoryV1:
    type: object
    required:
      - betId
      - betStatus
      - betType
      - isSameEventOnly
      - legs
      - maxPicks
      - minPicks
      - oddsFormat
      - placedAt
      - risk
      - teaserName
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        description: 投注标识
      originalBetId:
        type: integer
        format: int64
        description: Original bet identification
      uniqueRequestId:
        type: string
        format: uuid
        example: 10924E23-A2FE-4317-BFFD-80504675F554
        description: Unique Request Id
      wagerNumber:
        type: integer
        format: int32
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        description: 投注下单时间。
      betStatus:
        type: string
        description: |
            Bet Status.

            ACCEPTED = 投注已接受。
            CANCELLED = 按 Pinnacle 规则取消。
            LOSE = 已结算为输。
            REFUNDED = 赛事取消或投注结算为平局时退款。
            WON = 已结算为赢。
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - REFUNDED
          - WON
      betType:
        type: string
        default: TEASER
        example: TEASER
      win:
        type: number
        format: double
        description: 盈利金额。
      risk:
        type: number
        format: double
        description: 风险金额。
      winLoss:
        type: number
        format: double
        description: 已结算投注的盈亏。
      oddsFormat:
        $ref: '#/definitions/OddsFormat'
      customerCommission:
        type: number
        format: double
        description: Client’s commission on the bet.
      cancellationReason:
        $ref: '#/definitions/CancellationReason'
      updateSequence:
        type: integer
        format: int64
        description: 更新序列号
      teaserName:
        type: string
        description: ''
      isSameEventOnly:
        type: boolean
        description: ''
      minPicks:
        type: number
        format: double
        description: ''
      maxPicks:
        type: number
        format: double
        description: ''
      price:
        type: number
        format: double
        example: 682
        description: 'Populated for all teaser bets and will be the original price at the time of the placement.'
      finalPrice:
        type: number
        format: double
        example: 0
        description: Only for settled parlay. Final price may differ in case leg was cancelled or half won.
      teaserId:
        type: number
        format: int32
        example: 0
        description: Reference to the teaser id.
      teaserGroupId:
        type: number
        format: int32
        example: 0
        description: Reference to the teaser group id.
      legs:
        type: array
        description: ''
        items:
          $ref: '#/definitions/TeaserLeg'
    description: ''
  ManualBet:
    type: object
    required:
      - betId
      - betStatus
      - betType
      - description
      - placedAt
      - risk
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        example: 760063588
        description: 投注标识
      wagerNumber:
        type: integer
        format: int32
        example: 1
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        example: '2017-09-06T14:56:27Z'
        description: 投注下单时间。
      betStatus:
        type: string
        description: |
          Bet Status.

          ACCEPTED = 投注已接受。
          CANCELLED = 按 Pinnacle 规则取消。
          LOSE = 已结算为输。
          REFUNDED = When an event is cancelled or when the bet is settled as push, the bet will have REFUNDED status,
          WON = The bet is settled as won
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - REFUNDED
          - WON
      betType:
        type: string
        default: MANUAL
        example: MANUAL
      win:
        type: number
        format: double
        example: 15000
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 500
        description: 风险金额。
      winLoss:
        type: number
        format: double
        description: 已结算投注的盈亏。
      updateSequence:
        type: integer
        format: int64
        example: 112472310
        description: 更新序列号
      description:
        type: string
        example: Soccer Props - Partizan vs Crvena Zvezda - Partizan @ +3000
        description: Manual bet description.
      referenceBetId:
        type: integer
        format: int64
        example: null
        x-nullable: true
        description: Referenced original bet id.
    description: ''
  ManualBetRegradedWagerHistoryV1:
    type: object
    required:
      - betId
      - betStatus
      - betType
      - description
      - placedAt
      - risk
      - updateSequence
      - wagerNumber
      - win
    properties:
      betId:
        type: integer
        format: int64
        example: 760063588
        description: 投注标识
      originalBetId:
        type: integer
        format: int64
        example: 760063543
        description: Original bet identification
      wagerNumber:
        type: integer
        format: int32
        example: 1
        description: '注单标识。通过 API 下的所有投注该值为 1。网站经典视图支持同一注单内多笔竞猜/特殊投注及轮转串关，此时会有对应注单号。'
      placedAt:
        type: string
        format: date-time
        example: '2017-09-06T14:56:27Z'
        description: 投注下单时间。
      betStatus:
        type: string
        description: |
          Bet Status.

          ACCEPTED = 投注已接受。
          CANCELLED = 按 Pinnacle 规则取消。
          LOSE = 已结算为输。
          REFUNDED = When an event is cancelled or when the bet is settled as push, the bet will have REFUNDED status,
          WON = The bet is settled as won
        enum:
          - ACCEPTED
          - CANCELLED
          - LOSE
          - REFUNDED
          - WON
      betType:
        type: string
        default: MANUAL
        example: MANUAL
      win:
        type: number
        format: double
        example: 15000
        description: 盈利金额。
      risk:
        type: number
        format: double
        example: 500
        description: 风险金额。
      winLoss:
        type: number
        format: double
        description: 已结算投注的盈亏。
      updateSequence:
        type: integer
        format: int64
        example: 112472310
        description: 更新序列号
      description:
        type: string
        example: Soccer Props - Partizan vs Crvena Zvezda - Partizan @ +3000
        description: Manual bet description.
      referenceBetId:
        type: integer
        format: int64
        example: null
        x-nullable: true
        description: Referenced original bet id.
    description: ''
  TeaserLeg:
    type: object
    properties:
      sportId:
        type: integer
        format: int32
        description: ''
      legBetType:
        type: string
        description: 'Teaser leg type.'
        enum:
          - SPREAD
          - TOTAL_POINTS
      legBetStatus:
        type: string
        description: |
          CANCELLED = The leg is canceled- the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          LOSE = The leg is a loss or a push-lose. When Push-lose happens, the half of the stake on the leg will be pushed to the next leg, and the other half will be a lose. This can happen only when the leg is placed on a quarter points handicap,
          PUSH = The leg is a push - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          REFUNDED = The leg is refunded - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss,
          WON = The leg is a won or a push-won. When Push-won happens, the half of the stake on the leg will be pushed to the next leg, and the other half is won. This can happen only when the leg is placed on a quarter points handicap
        enum:
          - CANCELLED
          - LOSE
          - PUSH
          - REFUNDED
          - WON
      leagueId:
        type: integer
        format: int32
        description: ''
      eventId:
        type: integer
        format: int64
        description: ''
      eventStartTime:
        type: string
        format: date-time
        example: '2017-10-05T01:32:59Z'
        description: 'Date time when the event starts.'
      handicap:
        type: number
        format: double
        description: ''
      teamName:
        type: string
        description: ''
      side:
        type: string
        description: '方向类型（大/小）。'
        enum:
          - OVER
          - UNDER
      team1:
        type: string
        description: ''
      team2:
        type: string
        description: ''
      periodNumber:
        type: integer
        format: int32
        description: ''
      resultingUnit:
        type: string
        description: 'Specifies based on what the event is being resulted, e.g. Corners, Bookings , Regular'
    description: ''
  OddsFormat:
    type: string
    description: |
      Bet odds format.
      AMERICAN = American odds format,
      DECIMAL = Decimal (European) odds format,
      HONGKONG = Hong Kong odds format,
      INDONESIAN = Indonesian odds format,
      MALAY = Malaysian odds format
    enum:
      - AMERICAN
      - DECIMAL
      - HONGKONG
      - INDONESIAN
      - MALAY
    example: DECIMAL
  BettingStatusResponse:
    type: object
    required:
      - status
    properties:
      status:
        type: string
        description: |
          Betting status.
        enum:
          - ALL_BETTING_ENABLED
          - ALL_LIVE_BETTING_CLOSED
          - ALL_BETTING_CLOSED
    description: ''
