> ## Documentation Index
> Fetch the complete documentation index at: https://docs.beter-keiba.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 競走馬詳細



## OpenAPI

````yaml /reference/openapi.json get /horses/{horseId}
openapi: 3.1.0
info:
  title: BeTerKEIBA Core API
  description: >-
    JV-Data をベースとした競馬データ配信プラットフォーム。Cloudflare Workers (Hono), D1,
    R2を組み合わせたモダンなアーキテクチャで構築されています。


    ### 特徴

    - **高速レスポンス**: Cloudflareのエッジネットワークによる低レイテンシ。

    - **完全なデータ構造**: 産駒から現役、オッズ、マイニングまで網羅。

    - **開発者フレンドリー**: MintlifyドキュメントとTypeScript SDKによる高い開発効率
  version: 1.0.0
servers:
  - url: https://api.beter-keiba.com/v1
    description: 本番環境
security:
  - bearerAuth: []
tags:
  - name: Races
    description: レースデータ。開催情報・出走表・結果など、レース単位で取得する正規データ
  - name: Odds
    description: オッズデータ。単勝・複勝・枠連・馬連・ワイド・馬単・3連複・3連単の確定オッズおよび最終オッズ
  - name: Masters
    description: マスタデータ。競走馬・騎手・調教師・生産者・馬主・繁殖牝馬といった静的な実体情報
  - name: Updates
    description: 更新データ。スケジュール・調教・WIN5・予想指数など、随時更新が発生する派生データ
paths:
  /horses/{horseId}:
    get:
      tags:
        - Masters
      summary: 競走馬詳細
      operationId: getHorse
      parameters:
        - $ref: '#/components/parameters/horseId'
        - $ref: '#/components/parameters/fields'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SuccessResponse'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/Horse'
              example:
                code: SUCCESS
                data:
                  id: um_2021105477
                  dataType: '2'
                  dataUpdatedAt: 1716715200
                  isRetired: false
                  registeredAt: '20230915'
                  birthday: '20210321'
                  name: ダノンデサイル
                  nameKana: ﾀﾞﾉﾝﾃﾞｻｲﾙ
                  nameEng: DANON DECILE
                  isInJraFacility: true
                  horseSymbolCode: '06'
                  sexCode: '1'
                  breedCode: '1'
                  colorCode: '03'
                  pedigreeTree:
                    f:
                      id: hn_1234567890
                      name: エピファネイア
                    m:
                      id: hn_1234567890
                      name: エピファネイア
                    ff:
                      id: hn_1234567890
                      name: エピファネイア
                    fm:
                      id: hn_1234567890
                      name: エピファネイア
                    mf:
                      id: hn_1234567890
                      name: エピファネイア
                    mm:
                      id: hn_1234567890
                      name: エピファネイア
                    fff:
                      id: hn_1234567890
                      name: エピファネイア
                    ffm:
                      id: hn_1234567890
                      name: エピファネイア
                    fmf:
                      id: hn_1234567890
                      name: エピファネイア
                    fmm:
                      id: hn_1234567890
                      name: エピファネイア
                    mff:
                      id: hn_1234567890
                      name: エピファネイア
                    mfm:
                      id: hn_1234567890
                      name: エピファネイア
                    mmf:
                      id: hn_1234567890
                      name: エピファネイア
                    mmm:
                      id: hn_1234567890
                      name: エピファネイア
                  locationCode: '1'
                  trainerId: ch_01124
                  trainerName: 安田翔伍
                  invitationRegionName: ''
                  ownerId: bn_537800
                  ownerName: ダノックス
                  breederId: br_00010521
                  breederName: 社台ファーム
                  originName: 千歳市
                  stats:
                    earnings:
                      baseFlat: 381220000
                      baseObstacle: 0
                      addedFlat: 45122000
                      addedObstacle: 0
                      acquiredFlat: 412300000
                      acquiredObstacle: 0
                    placings:
                      overall:
                        - 2
                        - 1
                        - 0
                        - 1
                        - 0
                        - 1
                      central:
                        - 2
                        - 1
                        - 0
                        - 1
                        - 0
                        - 1
                      byTrack:
                        turfStraight:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        turfRight:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        turfLeft:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        dirtStraight:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        dirtRight:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        dirtLeft:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        obstacle:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                      byCondition:
                        turfGoodToFirm:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        turfGood:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        turfYielding:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        turfSoft:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        dirtStandard:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        dirtGood:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        dirtMuddy:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        dirtSloppy:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        obstacleGoodToFirm:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        obstacleGood:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        obstacleYielding:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        obstacleSoft:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                      byDistance:
                        turfUpTo1600:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        turf1601To2200:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        turf2201Plus:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        dirtUpTo1600:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        dirt1601To2200:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        dirt2201Plus:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                    runningStyle:
                      escape: 0
                      lead: 3
                      travel: 2
                      push: 0
                    registeredRaceCount: 8
                  trainer:
                    id: ch_01124
                    dataType: '2'
                    dataUpdatedAt: 1716715200
                    name: 安田翔伍
                    nameKana: ﾔｽﾀﾞ ｼｮｳｺﾞ
                    nameAbbr: 安田翔
                    nameEng: YASUDA Shogo
                    birthday: '19811013'
                    isRetired: false
                    licenseIssuedAt: '20140301'
                    genderCode: '1'
                    locationCode: '1'
                    invitationRegionName: ''
                    milestones:
                      recentGradedWins:
                        - raceId: ra_2024052605021211
                          raceTitle: 東京優駿
                          raceTitleShort10: 日本ダービー
                          raceTitleShort6: ダービー
                          raceTitleShort3: ダービー
                          gradeCode: A
                          fieldSize: 18
                          horseId: um_2021105477
                          horseName: ドウデュース
                    stats:
                      thisYear:
                        year: 2024
                        earnings:
                          baseFlat: 0
                          baseObstacle: 0
                          addedFlat: 0
                          addedObstacle: 0
                        placings:
                          flat:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          obstacle:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          byVenue:
                            sapporo:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            hakodate:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            fukushima:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            niigata:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            tokyo:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            nakayama:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            chukyo:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            kyoto:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            hanshin:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            kokura:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                          byDistance:
                            turfUpTo1600:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            turf1601To2200:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            turf2201Plus:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirtUpTo1600:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt1601To2200:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt2201Plus:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                      lastYear:
                        year: 2024
                        earnings:
                          baseFlat: 0
                          baseObstacle: 0
                          addedFlat: 0
                          addedObstacle: 0
                        placings:
                          flat:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          obstacle:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          byVenue:
                            sapporo:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            hakodate:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            fukushima:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            niigata:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            tokyo:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            nakayama:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            chukyo:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            kyoto:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            hanshin:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            kokura:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                          byDistance:
                            turfUpTo1600:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            turf1601To2200:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            turf2201Plus:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirtUpTo1600:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt1601To2200:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt2201Plus:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                      total:
                        year: 2024
                        earnings:
                          baseFlat: 0
                          baseObstacle: 0
                          addedFlat: 0
                          addedObstacle: 0
                        placings:
                          flat:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          obstacle:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          byVenue:
                            sapporo:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            hakodate:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            fukushima:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            niigata:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            tokyo:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            nakayama:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            chukyo:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            kyoto:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            hanshin:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                            kokura:
                              flat:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                              obstacle:
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                                - 0
                          byDistance:
                            turfUpTo1600:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            turf1601To2200:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            turf2201Plus:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirtUpTo1600:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt1601To2200:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt2201Plus:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                    createdAt: 1716716000
                    updatedAt: 1716716000
                  owner:
                    id: bn_537800
                    dataType: '2'
                    dataUpdatedAt: 1716715200
                    name: （株）ダノックス
                    nameNoEntity: ダノックス
                    nameKana: ﾀﾞﾉｯｸｽ
                    nameEng: Danox Co.,Ltd.
                    colorsDescription: 白，赤桃縦縞，赤袖
                    stats:
                      thisYear:
                        year: 2024
                        earnings:
                          base: 12345600
                          added: 1234560
                        placings:
                          - 10
                          - 8
                          - 5
                          - 4
                          - 3
                          - 100
                      total:
                        year: 2024
                        earnings:
                          base: 12345600
                          added: 1234560
                        placings:
                          - 10
                          - 8
                          - 5
                          - 4
                          - 3
                          - 100
                    createdAt: 1716716000
                    updatedAt: 1716716000
                  breeder:
                    id: br_00010521
                    dataType: '2'
                    dataUpdatedAt: 1716715200
                    name: 社台ファーム株式会社
                    nameNoEntity: 社台ファーム
                    nameKana: ｼｬﾀﾞｲﾌｧｰﾑ
                    nameEng: Shadai Farm
                    addressCityName: 千歳市
                    stats:
                      thisYear:
                        year: 2024
                        earnings:
                          base: 12345600
                          added: 1234560
                        placings:
                          - 10
                          - 8
                          - 5
                          - 4
                          - 3
                          - 100
                      total:
                        year: 2024
                        earnings:
                          base: 12345600
                          added: 1234560
                        placings:
                          - 10
                          - 8
                          - 5
                          - 4
                          - 3
                          - 100
                    createdAt: 1716716000
                    updatedAt: 1716716000
                  foal:
                    id: sk_2021105477
                    dataType: '2'
                    dataUpdatedAt: 1716715200
                    horseId: um_2021105477
                    birthday: '20210321'
                    sexCode: '1'
                    breedCode: '1'
                    colorCode: '03'
                    importTypeCode: '0'
                    importYear: 0
                    breederId: br_00010521
                    originName: 千歳市
                    pedigreeBroodmareIds:
                      - hn_0000123456
                      - hn_0000234567
                      - hn_0000345678
                      - hn_0000456789
                      - hn_0000567890
                      - hn_0000678901
                      - hn_0000789012
                      - hn_0000890123
                      - hn_0000901234
                      - hn_0001012345
                      - hn_0001123456
                      - hn_0001234567
                      - hn_0001345678
                      - hn_0001456789
                    createdAt: 1716716000
                    updatedAt: 1716716000
                  form:
                    id: ck_20240526050212112021105477
                    dataType: '2'
                    dataUpdatedAt: 1716715200
                    raceId: ra_2024052605021211
                    horseId: um_2021105477
                    horseName: ダノンデサイル
                    stats:
                      earnings:
                        baseFlat: 81220000
                        baseObstacle: 0
                        addedFlat: 0
                        addedObstacle: 0
                        acquiredFlat: 24500000
                        acquiredObstacle: 0
                      placings:
                        overall:
                          - 2
                          - 1
                          - 0
                          - 1
                          - 0
                          - 1
                        central:
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                          - 0
                        byTrack:
                          turfStraight:
                            - 0
                          turfRight:
                            - 0
                          turfLeft:
                            - 0
                          dirtStraight:
                            - 0
                          dirtRight:
                            - 0
                          dirtLeft:
                            - 0
                          obstacle:
                            - 0
                        byCondition:
                          turfGoodToFirm:
                            - 0
                          turfGood:
                            - 0
                          turfYielding:
                            - 0
                          turfSoft:
                            - 0
                          dirtStandard:
                            - 0
                          dirtGood:
                            - 0
                          dirtMuddy:
                            - 0
                          dirtSloppy:
                            - 0
                          obstacleGoodToFirm:
                            - 0
                          obstacleGood:
                            - 0
                          obstacleYielding:
                            - 0
                          obstacleSoft:
                            - 0
                        byDistance:
                          turfUpTo1200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1201To1400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1401To1600:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1601To1800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1801To2000:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2001To2200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2201To2400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2401To2800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2801Plus:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirtUpTo1200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1201To1400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1401To1600:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1601To1800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1801To2000:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2001To2200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2201To2400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2401To2800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2801Plus:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                        byVenue:
                          sapporo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          hakodate:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          fukushima:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          niigata:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          tokyo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          nakayama:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          chukyo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          kyoto:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          hanshin:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          kokura:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                      runningStyle:
                        escape: 0
                        lead: 3
                        travel: 2
                        push: 0
                      registeredRaceCount: 4
                    jockey:
                      id: ks_05339
                      name: ''
                      thisYear:
                        year: 2024
                        earnings:
                          baseFlat: 0
                          baseObstacle: 0
                          addedFlat: 0
                          addedObstacle: 0
                        placings:
                          turf:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          obstacle:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                        byDistance:
                          turfUpTo1200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1201To1400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1401To1600:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1601To1800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1801To2000:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2001To2200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2201To2400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2401To2800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2801Plus:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirtUpTo1200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1201To1400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1401To1600:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1601To1800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1801To2000:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2001To2200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2201To2400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2401To2800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2801Plus:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                        byVenue:
                          sapporo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          hakodate:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          fukushima:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          niigata:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          tokyo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          nakayama:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          chukyo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          kyoto:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          hanshin:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          kokura:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                      total:
                        year: 2024
                        earnings:
                          baseFlat: 0
                          baseObstacle: 0
                          addedFlat: 0
                          addedObstacle: 0
                        placings:
                          turf:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          obstacle:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                        byDistance:
                          turfUpTo1200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1201To1400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1401To1600:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1601To1800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1801To2000:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2001To2200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2201To2400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2401To2800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2801Plus:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirtUpTo1200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1201To1400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1401To1600:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1601To1800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1801To2000:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2001To2200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2201To2400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2401To2800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2801Plus:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                        byVenue:
                          sapporo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          hakodate:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          fukushima:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          niigata:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          tokyo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          nakayama:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          chukyo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          kyoto:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          hanshin:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          kokura:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                    trainer:
                      id: ch_01124
                      name: ''
                      thisYear:
                        year: 2024
                        earnings:
                          baseFlat: 0
                          baseObstacle: 0
                          addedFlat: 0
                          addedObstacle: 0
                        placings:
                          turf:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          obstacle:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                        byDistance:
                          turfUpTo1200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1201To1400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1401To1600:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1601To1800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1801To2000:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2001To2200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2201To2400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2401To2800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2801Plus:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirtUpTo1200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1201To1400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1401To1600:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1601To1800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1801To2000:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2001To2200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2201To2400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2401To2800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2801Plus:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                        byVenue:
                          sapporo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          hakodate:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          fukushima:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          niigata:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          tokyo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          nakayama:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          chukyo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          kyoto:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          hanshin:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          kokura:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                      total:
                        year: 2024
                        earnings:
                          baseFlat: 0
                          baseObstacle: 0
                          addedFlat: 0
                          addedObstacle: 0
                        placings:
                          turf:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          obstacle:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                        byDistance:
                          turfUpTo1200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1201To1400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1401To1600:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1601To1800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf1801To2000:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2001To2200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2201To2400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2401To2800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          turf2801Plus:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirtUpTo1200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1201To1400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1401To1600:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1601To1800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt1801To2000:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2001To2200:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2201To2400:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2401To2800:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                          dirt2801Plus:
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                            - 0
                        byVenue:
                          sapporo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          hakodate:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          fukushima:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          niigata:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          tokyo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          nakayama:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          chukyo:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          kyoto:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          hanshin:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                          kokura:
                            turf:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            dirt:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                            obstacle:
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                              - 0
                    owner:
                      id: bn_537800
                      nameWithEntity: ''
                      nameNoEntity: ''
                      thisYear:
                        year: 2024
                        earnings:
                          base: 12345600
                          added: 1234560
                        placings:
                          - 10
                          - 8
                          - 5
                          - 4
                          - 3
                          - 100
                      total:
                        year: 2024
                        earnings:
                          base: 12345600
                          added: 1234560
                        placings:
                          - 10
                          - 8
                          - 5
                          - 4
                          - 3
                          - 100
                    breeder:
                      id: br_00010521
                      nameWithEntity: ''
                      nameNoEntity: ''
                      thisYear:
                        year: 2024
                        earnings:
                          base: 12345600
                          added: 1234560
                        placings:
                          - 10
                          - 8
                          - 5
                          - 4
                          - 3
                          - 100
                      total:
                        year: 2024
                        earnings:
                          base: 12345600
                          added: 1234560
                        placings:
                          - 10
                          - 8
                          - 5
                          - 4
                          - 3
                          - 100
                    createdAt: 1716716000
                    updatedAt: 1716716000
                  training:
                    id: hc_12024052207152021105477
                    dataType: '1'
                    dataUpdatedAt: 1716715200
                    horseId: um_2021105477
                    trainingCenterCode: '1'
                    trainingDate: '20240522'
                    trainingTime: '0715'
                    times:
                      f4: 52.4
                      f3: 38.1
                      f2: 24.5
                    lapTimes:
                      - 12.2
                      - 12.3
                      - 13.6
                      - 14.3
                    createdAt: 1716716000
                    updatedAt: 1716716000
                  createdAt: 1716716000
                  updatedAt: 1716716000
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  parameters:
    horseId:
      name: horseId
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/HorseId'
    fields:
      name: fields
      in: query
      schema:
        type: string
        maxLength: 500
      description: 取得するフィールドの絞り込み（カンマ区切り）
  schemas:
    SuccessResponse:
      type: object
      description: >-
        成功レスポンスの共通ラッパー。code は常に "SUCCESS"、data にエンドポイント固有のレスポンスボディ、extensions
        に補助情報 (pagination や統計など) を含みます。
      required:
        - code
        - data
      properties:
        code:
          type: string
          description: 処理結果コード。成功時は常に 'SUCCESS'
          example: SUCCESS
        data:
          description: 取得されたデータ本体
        extensions:
          $ref: '#/components/schemas/ResponseExtensions'
    Horse:
      type: object
      description: >-
        現役または引退後の競走記録としての馬データ。戦績や脚質統計を含みます。 拡張プロパティ: `trainer`:
        調教師情報（?include=trainer 指定時のみ含まれます）; `owner`: 馬主情報（?include=owner
        指定時のみ含まれます）; `breeder`: 生産者情報（?include=breeder 指定時のみ含まれます）; `foal`:
        産駒情報（?include=foal 指定時のみ含まれます）; `form`: レース時点での過去成績スナップショット (CK
        由来)。?include=form 指定時のみ含まれます; `training`: 坂路調教情報（?include=training
        指定時のみ含まれます）
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/HorseId'
        dataType:
          type: string
          description: データ区分。0:該当レコード削除, 1:新規馬名登録, 2:馬名変更, 3:再登録(抹消後の再登録), 4:その他更新, 9:抹消
          example: '2'
          maxLength: 1
        dataUpdatedAt:
          type: integer
          description: データ作成日時 (JV-Data UM レコード §3 由来、Unix Timestamp)
          example: 1716715200
        isRetired:
          type: boolean
          description: 競走馬抹消区分 (true:抹消, false:現役)
          example: false
        registeredAt:
          type: string
          description: 登録年月日 (yyyymmdd)
          example: '20230915'
          maxLength: 8
        retiredAt:
          type: string
          description: 抹消年月日 (yyyymmdd)
          example: null
          nullable: true
          maxLength: 8
        birthday:
          type: string
          description: 生年月日 (yyyymmdd)
          example: '20210321'
          maxLength: 8
        name:
          type: string
          description: 馬名 (全角)
          example: ダノンデサイル
          maxLength: 36
        nameKana:
          type: string
          description: 馬名半角カナ
          example: ﾀﾞﾉﾝﾃﾞｻｲﾙ
          maxLength: 36
        nameEng:
          type: string
          description: 馬名欧字
          example: DANON DECILE
          maxLength: 60
        isInJraFacility:
          type: boolean
          description: JRA施設在きゅうフラグ
          example: true
        horseSymbolCode:
          $ref: '#/components/schemas/HorseSymbolCode'
        sexCode:
          $ref: '#/components/schemas/SexCode'
        breedCode:
          $ref: '#/components/schemas/BreedCode'
        colorCode:
          $ref: '#/components/schemas/ColorCode'
        pedigreeTree:
          type: object
          description: >-
            3代血統情報 (14 ancestors)。各 position コードの意味: f=父, m=母, ff=父父, fm=父母,
            mf=母父, mm=母母, fff=父父父, ffm=父父母, fmf=父母父, fmm=父母母, mff=母父父, mfm=母父母,
            mmf=母母父, mmm=母母母 (JV-Data UM レコード『3代血統情報』14 entries 順)
          properties:
            f:
              $ref: '#/components/schemas/PedigreeAncestor'
            m:
              $ref: '#/components/schemas/PedigreeAncestor'
            ff:
              $ref: '#/components/schemas/PedigreeAncestor'
            fm:
              $ref: '#/components/schemas/PedigreeAncestor'
            mf:
              $ref: '#/components/schemas/PedigreeAncestor'
            mm:
              $ref: '#/components/schemas/PedigreeAncestor'
            fff:
              $ref: '#/components/schemas/PedigreeAncestor'
            ffm:
              $ref: '#/components/schemas/PedigreeAncestor'
            fmf:
              $ref: '#/components/schemas/PedigreeAncestor'
            fmm:
              $ref: '#/components/schemas/PedigreeAncestor'
            mff:
              $ref: '#/components/schemas/PedigreeAncestor'
            mfm:
              $ref: '#/components/schemas/PedigreeAncestor'
            mmf:
              $ref: '#/components/schemas/PedigreeAncestor'
            mmm:
              $ref: '#/components/schemas/PedigreeAncestor'
        locationCode:
          $ref: '#/components/schemas/LocationCode'
        trainerId:
          $ref: '#/components/schemas/TrainerId'
        trainerName:
          type: string
          description: 調教師名略称 (全角4文字)。フル名は `?include=trainer` で取得
          example: 安田翔伍
          maxLength: 8
        invitationRegionName:
          type: string
          description: 招待地域名 (JV-Data UM レコード §22 由来、全角10文字)。地方招待馬・外国招待馬の招待地域を示す
          example: ''
          maxLength: 20
        ownerId:
          $ref: '#/components/schemas/OwnerId'
        ownerName:
          type: string
          description: >-
            馬主名 (法人格無名称、JV-Data UM レコード #27 由来)。法人格有名称は `GET /owners/{ownerId}`
            の `name` を参照
          example: ダノックス
          maxLength: 64
        breederId:
          $ref: '#/components/schemas/BreederId'
        breederName:
          type: string
          description: >-
            生産者名 (法人格無名称、JV-Data UM レコード #24 由来)。法人格有名称は `GET
            /breeders/{breederId}` の `name` を参照
          example: 社台ファーム
          maxLength: 72
        originName:
          type: string
          description: 産地名
          example: 千歳市
          maxLength: 20
        stats:
          $ref: '#/components/schemas/HorseStats'
        trainer:
          $ref: '#/components/schemas/Trainer'
        owner:
          $ref: '#/components/schemas/Owner'
        breeder:
          $ref: '#/components/schemas/Breeder'
        foal:
          $ref: '#/components/schemas/Foal'
        form:
          $ref: '#/components/schemas/Form'
        training:
          $ref: '#/components/schemas/Training'
        createdAt:
          type: integer
          description: >-
            API 側の行作成タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (UM
            §3、データ作成年月日) とは独立した別軸
        updatedAt:
          type: integer
          description: >-
            API 側の行更新タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (UM
            §3、データ作成年月日) とは独立した別軸
    HorseId:
      type: string
      pattern: ^um_[0-9]{10}$
      example: um_2021105477
      description: Horse entity ID。JV-Data UM レコード由来の血統登録番号 (10 桁)
    ResponseExtensions:
      type: object
      description: レスポンスに関する補助情報（メタデータ）。一覧取得時にはページネーション情報が含まれます。
      properties:
        totalCount:
          type: integer
          description: 検索条件に一致する全データの総件数
          example: 150
        limit:
          type: integer
          description: 1リクエストあたりの最大取得件数
          example: 50
        page:
          type: integer
          description: 現在のページ番号
          example: 1
        totalPages:
          type: integer
          description: 全件数をlimitで割った合計ページ数
          example: 3
        dataUpdatedAt:
          type: integer
          description: 返却されたデータの最終更新日時 (Unix Timestamp)。キャッシュ制御などに利用します。
          example: 1716715200
    HorseSymbolCode:
      type: string
      description: |-
        馬の産地や購買条件を表す記号コード。2桁の数値で構成されます。

        ### 記号の意味
        - **(抽)**: 抽選馬（JRAが市場で購買し馬主に配布した馬）
        - **(父)**: 内国産種牡馬（父が内国産のサラブレッド）
        - **(市)**: せり市場で購入された馬
        - **(地)**: 地方競馬に出走歴のある馬
        - **(外)**: 外国産馬
        - **[地]**: 地方競馬所属の招待馬
        - **[外]**: 海外の競馬に出走歴のある外国産馬

        ### 主要なコード一覧
        | コード | 名称 | 略号(欧) |
        | :--- | :--- | :--- |
        | 01 | (抽) | (S) |
        | 03 | (父) | (D) |
        | 04 | (市) | (A) |
        | 05 | (地) | (R) |
        | 06 | (外) | (F) |
        | 21 | [地] | [R] |
        | 26 | [外] | [F] |
        | 00 | なし | - |
      enum:
        - '00'
        - '01'
        - '02'
        - '03'
        - '04'
        - '05'
        - '06'
        - '07'
        - '08'
        - '09'
        - '10'
        - '11'
        - '12'
        - '15'
        - '16'
        - '17'
        - '18'
        - '19'
        - '20'
        - '21'
        - '22'
        - '23'
        - '24'
        - '25'
        - '26'
        - '27'
        - '31'
        - '40'
        - '41'
      example: '06'
      maxLength: 2
    SexCode:
      type: string
      description: |-
        馬の性別を表すコード。年齢によって英語の呼称が異なります。人物の性別区分は `GenderCode` を使用します。

        | コード | 名称 | 英語(0-4歳) | 英語(5歳-) | 説明 |
        | :--- | :--- | :--- | :--- | :--- |
        | 1 | 牡 | Colt (C) | Horse (H) | オス馬 |
        | 2 | 牝 | Filly (F) | Mare (M) | メス馬 |
        | 3 | せん | Gelding (G) | Gelding (G) | 去勢されたオス馬 |
        | 0 | 未設定 | - | - | 地方・海外等の初期値 |
      enum:
        - '0'
        - '1'
        - '2'
        - '3'
      example: '1'
      maxLength: 1
    BreedCode:
      type: string
      description: |-
        馬の品種を表すコード。

        | コード | 名称 | 略称 | 内容 |
        | :--- | :--- | :--- | :--- |
        | 1 | サラブレッド | サラ | サラブレッドとして登録された馬。 |
        | 2 | サラブレッド系種 | サラ系 | アラブ血量が25%未満、または準サラ等。 |
        | 3 | 準サラブレッド | 準サラ | (旧規定) 現在はサラ系に統合。 |
        | 4 | 軽半血種 | 軽半 | 軽種と中半血種の交配など。 |
        | 5 | アングロアラブ | アア | アラブ血量25%以上。 |
        | 6 | アラブ系種 | アラ系 | アラブ血量25%以上（アアとは登録規定が異なる）。 |
        | 7 | アラブ | アラブ | 純血のアラブ。 |
        | 8 | 中半血種 | 中半 | 中間種相互の交配など。 |
        | 0 | 未設定 | - | 地方・海外等の初期値。 |
      enum:
        - '0'
        - '1'
        - '2'
        - '3'
        - '4'
        - '5'
        - '6'
        - '7'
        - '8'
      example: '1'
      maxLength: 1
    ColorCode:
      type: string
      description: |-
        馬の毛色を表すコード。

        | コード | 名称 | 英語名 | 略称 |
        | :--- | :--- | :--- | :--- |
        | 01 | 栗毛 | Chestnut | ch. |
        | 02 | 栃栗毛 | Dark Chestnut | d.ch. |
        | 03 | 鹿毛 | Bay | b. |
        | 04 | 黒鹿毛 | Dark Bay | d.b. |
        | 05 | 青鹿毛 | Brown | br. |
        | 06 | 青毛 | Black | bl. |
        | 07 | 芦毛 | Grey | g. |
        | 08 | 栗粕毛 | - | - |
        | 09 | 鹿粕毛 | - | - |
        | 10 | 青粕毛 | - | - |
        | 11 | 白毛 | White | w. |
        | 00 | 未設定 | - | - |
      enum:
        - '00'
        - '01'
        - '02'
        - '03'
        - '04'
        - '05'
        - '06'
        - '07'
        - '08'
        - '09'
        - '10'
        - '11'
      example: '03'
      maxLength: 2
    PedigreeAncestor:
      type: object
      description: >-
        3代血統情報の 1 entry。JV-Data UM レコード『3代血統情報』14 entries 構造の各要素に対応する繁殖馬マスタへのリンク
        + 繁殖名
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/BroodmareId'
        name:
          type: string
          description: 繁殖名 (全角18文字 〜 半角36文字)
          example: エピファネイア
          maxLength: 36
    LocationCode:
      type: string
      description: |-
        所属するトレーニングセンターや地域を表すコード。

        | コード | 名称1 | 名称2 | 説明 |
        | :--- | :--- | :--- | :--- |
        | 1 | 関東 | 美浦 | 美浦トレーニングセンター所属 |
        | 2 | 関西 | 栗東 | 栗東トレーニングセンター所属 |
        | 3 | 地方招待 | 招待 | 地方競馬からの招待 |
        | 4 | 外国招待 | 招待 | 外国からの招待 |
        | 0 | 未設定 | - | 地方・海外等の初期値 |
      enum:
        - '0'
        - '1'
        - '2'
        - '3'
        - '4'
      example: '1'
      maxLength: 1
    TrainerId:
      type: string
      pattern: ^ch_[0-9]{5}$
      example: ch_01124
      description: >-
        Trainer entity ID。JV-Data CH レコード由来の調教師コード (5 桁)。フリー所属
        (`Jockey.stableTrainerId`) を表す `ch_00000` (JV-Data 上の "ALL0" 相当) も
        pattern に合致する
    OwnerId:
      type: string
      pattern: ^bn_[0-9]{6}$
      example: bn_537800
      description: Owner entity ID。JV-Data BN レコード由来の馬主コード (6 桁)
    BreederId:
      type: string
      pattern: ^br_[0-9]{8}$
      example: br_00010521
      description: Breeder entity ID。JV-Data BR レコード由来の生産者コード (v4.9 で 6→8 byte 拡張)
    HorseStats:
      type: object
      description: >-
        競走馬の累計成績情報 (JV-Data UM レコード §28-62 由来)。UM 馬本体は累計のみを `{ earnings,
        placings, runningStyle, registeredRaceCount }` で直接保持する (騎手 `JockeyStats`
        / 調教師 `TrainerStats` の `{ thisYear, lastYear, total }` 周期構造とは異なる)
      properties:
        earnings:
          type: object
          description: >-
            累計賞金 (円単位)。UM は平地/障害 × (本/付加/収得) の 6 通り。key 命名は `{type}{Surface}`
            (type ∈ {base, added, acquired}, surface ∈ {Flat, Obstacle})
          properties:
            baseFlat:
              type: integer
              description: 平地本賞金累計 (UM §28、中央のみ、円)
              example: 381220000
            baseObstacle:
              type: integer
              description: 障害本賞金累計 (UM §29、中央のみ、円)
              example: 0
            addedFlat:
              type: integer
              description: 平地付加賞金累計 (UM §30、中央のみ、円)
              example: 45122000
            addedObstacle:
              type: integer
              description: 障害付加賞金累計 (UM §31、中央のみ、円)
              example: 0
            acquiredFlat:
              type: integer
              description: >-
                平地収得賞金累計 (UM §32、中央+地方+海外、円。ML 学習・ranking 用途で `baseFlat`
                と意味が異なる)
              example: 412300000
            acquiredObstacle:
              type: integer
              description: 障害収得賞金累計 (UM §33、中央+地方+海外、円。`baseObstacle` と意味が異なる)
              example: 0
        placings:
          $ref: '#/components/schemas/HorsePlacings'
        runningStyle:
          $ref: '#/components/schemas/RunningStyle'
        registeredRaceCount:
          type: integer
          description: 登録レース数 (UM §62)
          example: 8
    Trainer:
      type: object
      description: 調教師データ。所属拠点 (locationCode) や本年・前年・通算成績を含みます。
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/TrainerId'
        dataType:
          type: string
          description: データ区分 (JV-Data CH レコード §2 由来)。1:新規登録, 2:更新, 0:該当レコード削除(提供ミスなどの理由による)
          example: '2'
          maxLength: 1
        dataUpdatedAt:
          type: integer
          description: データ作成日時 (JV-Data CH レコード §3 由来、Unix Timestamp)
          example: 1716715200
        name:
          type: string
          description: 調教師名 (JV-Data CH レコード §9 由来、全角17文字。日本人調教師は姓+全角空白1文字+名、外国人調教師は連続17文字)
          example: 安田翔伍
          maxLength: 34
        nameKana:
          type: string
          description: 調教師名半角ｶﾅ (JV-Data CH レコード §10 由来、姓15文字+名15文字)
          example: ﾔｽﾀﾞ ｼｮｳｺﾞ
          maxLength: 30
        nameAbbr:
          type: string
          description: 調教師名略称 (JV-Data CH レコード §11 由来、全角4文字)
          example: 安田翔
          maxLength: 8
        nameEng:
          type: string
          description: 調教師名欧字 (JV-Data CH レコード §12 由来、姓+半角空白+名のフルネーム)
          example: YASUDA Shogo
          maxLength: 80
        birthday:
          type: string
          description: 生年月日 (JV-Data CH レコード §8 由来、yyyymmdd)
          example: '19811013'
          maxLength: 8
        isRetired:
          type: boolean
          description: 調教師抹消区分 (JV-Data CH レコード §5 由来、true:抹消, false:現役)
          example: false
        licenseIssuedAt:
          type: string
          description: 調教師免許交付年月日 (JV-Data CH レコード §6 由来、yyyymmdd)
          example: '20140301'
          maxLength: 8
        licenseRevokedAt:
          type: string
          description: 調教師免許抹消年月日 (JV-Data CH レコード §7 由来、yyyymmdd)。現役調教師は null
          example: null
          nullable: true
          maxLength: 8
        genderCode:
          $ref: '#/components/schemas/GenderCode'
        locationCode:
          $ref: '#/components/schemas/LocationCode'
        invitationRegionName:
          type: string
          description: 招待地域名 (JV-Data CH レコード §15 由来、全角10文字)
          example: ''
          maxLength: 20
        milestones:
          $ref: '#/components/schemas/TrainerMilestones'
        stats:
          $ref: '#/components/schemas/TrainerStats'
        createdAt:
          type: integer
          description: >-
            API 側の行作成タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (CH
            §3、データ作成年月日) とは独立した別軸
        updatedAt:
          type: integer
          description: >-
            API 側の行更新タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (CH
            §3、データ作成年月日) とは独立した別軸
    Owner:
      type: object
      description: 馬主データ。JV-Data BN レコード由来で、馬主名 (法人格有形式) や服色標示、本年・累計成績を含みます。
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/OwnerId'
        dataType:
          type: string
          description: データ区分 (JV-Data BN レコード §2 由来)。1:新規登録, 2:更新, 0:該当レコード削除(提供ミスなどの理由による)
          example: '2'
          maxLength: 1
        dataUpdatedAt:
          type: integer
          description: データ作成日時 (JV-Data BN レコード §3 由来、Unix Timestamp)
          example: 1716715200
        name:
          type: string
          description: >-
            馬主名 (法人格有のフルネーム形式)。JV-Data BN レコード §5 由来。短縮形 (法人格無) は
            `Owner.nameNoEntity` または `Horse.ownerName` を参照
          example: （株）ダノックス
          maxLength: 64
        nameNoEntity:
          type: string
          description: 馬主名 (法人格無、JV-Data BN レコード §6 由来)。株式会社等の法人格を示す文字列が頭または末尾にある場合に除去した短縮形
          example: ダノックス
          maxLength: 64
        nameKana:
          type: string
          description: 馬主名半角ｶﾅ (JV-Data BN レコード §7 由来、半角50文字)。外国馬主については設定されない
          example: ﾀﾞﾉｯｸｽ
          maxLength: 50
        nameEng:
          type: string
          description: 馬主名欧字 (JV-Data BN レコード §8 由来、全角と半角が混在)
          example: Danox Co.,Ltd.
          maxLength: 100
        colorsDescription:
          type: string
          description: 服色標示 (JV-Data BN レコード §9 由来、全角30文字、馬主毎に指定される騎手の勝負服の色・模様)
          example: 白，赤桃縦縞，赤袖
          maxLength: 60
        stats:
          $ref: '#/components/schemas/OwnerStats'
        createdAt:
          type: integer
          description: >-
            API 側の行作成タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (BN
            §3、データ作成年月日) とは独立した別軸
        updatedAt:
          type: integer
          description: >-
            API 側の行更新タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (BN
            §3、データ作成年月日) とは独立した別軸
    Breeder:
      type: object
      description: 生産者データ。JV-Data BR レコード由来で、生産者名 (法人格有形式) や所在地、本年・累計成績を含みます。
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/BreederId'
        dataType:
          type: string
          description: データ区分 (JV-Data BR レコード §2 由来)。1:新規登録, 2:更新, 0:該当レコード削除(提供ミスなどの理由による)
          example: '2'
          maxLength: 1
        dataUpdatedAt:
          type: integer
          description: データ作成日時 (JV-Data BR レコード §3 由来、Unix Timestamp)
          example: 1716715200
        name:
          type: string
          description: >-
            生産者名 (法人格有のフルネーム形式)。JV-Data BR レコード #5 由来。短縮形 (法人格無) は
            `Horse.breederName` を参照
          example: 社台ファーム株式会社
          maxLength: 72
        nameNoEntity:
          type: string
          description: >-
            生産者名 (法人格無、JV-Data BR レコード §6
            由来)。株式会社等の法人格を示す文字列が頭または末尾にある場合に除去した短縮形
          example: 社台ファーム
          maxLength: 72
        nameKana:
          type: string
          description: 生産者名半角ｶﾅ (JV-Data BR レコード §7 由来、半角72文字)。外国生産者については設定されない
          example: ｼｬﾀﾞｲﾌｧｰﾑ
          maxLength: 72
        nameEng:
          type: string
          description: 生産者名欧字 (JV-Data BR レコード §8 由来、全角と半角が混在)
          example: Shadai Farm
          maxLength: 168
        addressCityName:
          type: string
          description: 生産者住所自治省名 (生産者の所在地)
          example: 千歳市
          maxLength: 20
        stats:
          $ref: '#/components/schemas/BreederStats'
        createdAt:
          type: integer
          description: >-
            API 側の行作成タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (BR
            §3、データ作成年月日) とは独立した別軸
        updatedAt:
          type: integer
          description: >-
            API 側の行更新タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (BR
            §3、データ作成年月日) とは独立した別軸
    Foal:
      type: object
      description: >-
        産駒データ。競走馬登録前の個体情報と繁殖馬ベースの血統情報。`horseId` は競走馬マスタとの連携キーで、`Foal.id`
        (JV-Data SK §4 血統登録番号) と同値。産駒が競走馬として登録された時点で `Horse.id` と一致する (登録前は
        null)
      required:
        - id
        - birthday
      properties:
        id:
          $ref: '#/components/schemas/FoalId'
        dataType:
          type: string
          description: データ区分 (JV-Data SK レコード §2 由来)。1:新規登録, 2:更新, 0:該当レコード削除(提供ミスなどの理由による)
          example: '2'
          maxLength: 1
        dataUpdatedAt:
          type: integer
          description: データ作成日時 (JV-Data SK レコード §3 由来、Unix Timestamp)
          example: 1716715200
        horseId:
          $ref: '#/components/schemas/HorseId'
        birthday:
          type: string
          description: 生年月日 (JV-Data SK レコード §5 由来、yyyymmdd 形式)
          example: '20210321'
          maxLength: 8
        sexCode:
          $ref: '#/components/schemas/SexCode'
        breedCode:
          $ref: '#/components/schemas/BreedCode'
        colorCode:
          $ref: '#/components/schemas/ColorCode'
        importTypeCode:
          type: string
          description: >-
            産駒持込区分 (JV-Data SK レコード §9 由来)。0:内国産, 1:持込, 2:輸入内国産扱い,
            3:輸入。`Broodmare.importTypeCode` (HN §15 由来の繁殖馬持込区分) とは別フィールド
          example: '0'
          maxLength: 1
        importYear:
          type: integer
          description: 輸入年 (JV-Data SK レコード §10 由来、西暦4桁)。内国産は 0
          example: 0
        breederId:
          $ref: '#/components/schemas/BreederId'
        originName:
          type: string
          description: 産地名 (JV-Data SK レコード §12 由来、全角10文字)
          example: 千歳市
          maxLength: 20
        pedigreeBroodmareIds:
          type: array
          description: >-
            3代血統情報の繁殖登録番号リスト (JV-Data SK レコード §13 由来)。固定 14 要素で、順序は 父, 母, 父父,
            父母, 母父, 母母, 父父父, 父父母, 父母父, 父母母, 母父父, 母父母, 母母父, 母母母
          items:
            $ref: '#/components/schemas/BroodmareId'
          minItems: 14
          maxItems: 14
          example:
            - hn_0000123456
            - hn_0000234567
            - hn_0000345678
            - hn_0000456789
            - hn_0000567890
            - hn_0000678901
            - hn_0000789012
            - hn_0000890123
            - hn_0000901234
            - hn_0001012345
            - hn_0001123456
            - hn_0001234567
            - hn_0001345678
            - hn_0001456789
        createdAt:
          type: integer
          description: >-
            API 側の行作成タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (SK
            §3、データ作成年月日) とは独立した別軸
        updatedAt:
          type: integer
          description: >-
            API 側の行更新タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (SK
            §3、データ作成年月日) とは独立した別軸
    Form:
      type: object
      description: >-
        レース時点での競走馬・関係者の過去成績スナップショット (JV-Data CK
        レコード「出走別着度数」由来)。予測モデルや戦績分析で「このレース予測時に利用可能だった feature
        set」として参照する。馬本体の累計成績は `stats` (FormStats) 配下に集約。`/forms` 単独 endpoint
        は提供せず、`/horses/{horseId}?include=form` の embed としてのみ取得する (form は race ×
        horse の組ごとに発生し、両方の context を伴って参照されるため `Horse` 配下に集約)。
      required:
        - id
        - raceId
        - horseId
      properties:
        id:
          $ref: '#/components/schemas/FormId'
        dataType:
          type: string
          description: データ区分 (JV-Data CK レコード §2 由来)。1:新規登録, 2:更新, 0:該当レコード削除(提供ミスなどの理由による)
          example: '2'
          maxLength: 1
        dataUpdatedAt:
          type: integer
          description: データ作成日時 (JV-Data CK レコード §3 由来、Unix Timestamp)
          example: 1716715200
        raceId:
          $ref: '#/components/schemas/RaceId'
        horseId:
          $ref: '#/components/schemas/HorseId'
        horseName:
          type: string
          description: 馬名 (JV-Data CK レコード §11 由来、通常全角18文字)。レース時点での馬名スナップショット
          example: ダノンデサイル
          maxLength: 36
        stats:
          $ref: '#/components/schemas/FormStats'
        jockey:
          $ref: '#/components/schemas/FormJockey'
        trainer:
          $ref: '#/components/schemas/FormTrainer'
        owner:
          $ref: '#/components/schemas/FormOwner'
        breeder:
          $ref: '#/components/schemas/FormBreeder'
        createdAt:
          type: integer
          description: >-
            API 側の行作成タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (CK
            §3、データ作成年月日) とは独立した別軸
        updatedAt:
          type: integer
          description: >-
            API 側の行更新タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (CK
            §3、データ作成年月日) とは独立した別軸
    Training:
      type: object
      description: >-
        坂路調教タイムデータ (JV-Data HC レコード由来)。JRA トレセン (美浦/栗東) の坂路コースでの追い切り情報。ウッドチップ調教は
        `WoodChipTraining` schema を参照
      required:
        - id
        - horseId
        - trainingDate
      properties:
        id:
          $ref: '#/components/schemas/TrainingId'
        dataType:
          type: string
          description: データ区分 (JV-Data HC レコード §2 由来)。1:初期値, 0:該当レコード削除(提供ミスなどの理由による)
          example: '1'
          maxLength: 1
        dataUpdatedAt:
          type: integer
          description: データ作成日時 (JV-Data HC レコード §3 由来、Unix Timestamp)
          example: 1716715200
        horseId:
          $ref: '#/components/schemas/HorseId'
        trainingCenterCode:
          type: string
          description: トレセン区分 (JV-Data HC レコード §4 由来)。0:美浦, 1:栗東
          example: '1'
          maxLength: 1
        trainingDate:
          type: string
          description: 調教年月日 (yyyymmdd 形式、JV-Data HC レコード §5 由来)
          example: '20240522'
          minLength: 8
          maxLength: 8
          pattern: ^[0-9]{8}$
        trainingTime:
          type: string
          description: 調教時刻 (hhmm 形式、JV-Data HC レコード §6 由来)
          example: '0715'
          minLength: 4
          maxLength: 4
          pattern: ^([01][0-9]|2[0-3])[0-5][0-9]$
        times:
          type: object
          description: >-
            ハロン合計タイム (単位: 秒)。`fN` は N ハロン地点 (200m × N) から終点までの累積タイム。JV-Data 原値が
            `0000` (測定不良) の場合は該当 key が省略される
          properties:
            f4:
              type: number
              description: 4 ハロン合計 (800m 地点から終点まで、JV-Data HC レコード §8 由来)
              example: 52.4
            f3:
              type: number
              description: 3 ハロン合計 (600m 地点から終点まで、JV-Data HC レコード §10 由来)
              example: 38.1
            f2:
              type: number
              description: 2 ハロン合計 (400m 地点から終点まで、JV-Data HC レコード §12 由来)
              example: 24.5
        lapTimes:
          type: array
          description: >-
            200m ごとのラップタイム (単位: 秒、JV-Data HC レコード §14/§13/§11/§9 由来)。区間順
            [200M-0M, 400M-200M, 600M-400M, 800M-600M] (終点側から起点側、最終 200m が先頭)、最大
            4 要素。JV-Data 原値が `000` (測定不良) の場合は該当区間が省略される
          items:
            type: number
          maxItems: 4
          example:
            - 12.2
            - 12.3
            - 13.6
            - 14.3
        createdAt:
          type: integer
          description: >-
            API 側の行作成タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (HC
            §3、データ作成年月日) とは独立した別軸
        updatedAt:
          type: integer
          description: >-
            API 側の行更新タイムスタンプ (Unix 秒、内部管理メタデータ)。JV-Data 由来の `dataUpdatedAt` (HC
            §3、データ作成年月日) とは独立した別軸
    ErrorResponse:
      type: object
      description: >-
        エラーレスポンスの共通ラッパー。すべての 4xx / 5xx で同一構造を返します。トップレベルの `error`
        フィールドに、プログラム判定用の `code`、人間向け `message`、問い合わせ追跡用の `requestId` を入れます。
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: エラーコード。プログラムで判定可能な SCREAMING_SNAKE_CASE 文字列
              example: UNAUTHORIZED
            message:
              type: string
              description: エラーの内容（人間向けメッセージ）
              example: 有効なAPIアクセスキーが必要です。
            requestId:
              type: string
              description: 問い合わせ用ID
              example: req_abcd1234
    BroodmareId:
      type: string
      pattern: ^hn_[0-9]{10}$
      example: hn_1234567890
      description: >-
        Broodmare entity ID。JV-Data HN レコード由来の繁殖登録番号 (v4.9 で 8→10
        桁拡張)。`PedigreeAncestor.id` も同 namespace を共有する
    HorsePlacings:
      type: object
      description: >-
        競走馬の着回数統計 (JV-Data UM §34-60 由来)。各 array は `[1着, 2着, 3着, 4着, 5着, 着外]`
        の固定 6 要素。breakdown は `byTrack` (7 種) / `byCondition` (12 種) /
        `byDistance` (3 段)。脚質統計は別 schema
        (`RunningStyle`)。`JockeyPeriod.placings` / `TrainerPeriod.placings` は別
        schema (騎手・調教師は `byVenue` 等で breakdown 軸が異なる)
      properties:
        overall:
          type: array
          description: 総合着回数 [1着, 2着, 3着, 4着, 5着, 着外] (UM §34、中央+地方+海外)
          items:
            type: integer
          minItems: 6
          maxItems: 6
          example:
            - 2
            - 1
            - 0
            - 1
            - 0
            - 1
        central:
          type: array
          description: 中央合計着回数 [1着, 2着, 3着, 4着, 5着, 着外] (UM §35、中央のみ)
          items:
            type: integer
          minItems: 6
          maxItems: 6
          example:
            - 2
            - 1
            - 0
            - 1
            - 0
            - 1
        byTrack:
          type: object
          description: >-
            馬場別着回数 (中央のみ、UM §36-42)。7 種 (`turfStraight` / `turfRight` /
            `turfLeft` / `dirtStraight` / `dirtRight` / `dirtLeft` / `obstacle`)
          properties:
            turfStraight:
              type: array
              description: 芝・直線
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turfRight:
              type: array
              description: 芝・右回り
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turfLeft:
              type: array
              description: 芝・左回り
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirtStraight:
              type: array
              description: ダート・直線
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirtRight:
              type: array
              description: ダート・右回り
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirtLeft:
              type: array
              description: ダート・左回り
              items:
                type: integer
              minItems: 6
              maxItems: 6
            obstacle:
              type: array
              description: 障害
              items:
                type: integer
              minItems: 6
              maxItems: 6
        byCondition:
          type: object
          description: >-
            馬場状態別着回数 (中央のみ、UM §43-54)。`{surface}{Condition}` 12 種で、`{Condition}`
            は JV-Data コード表 2010 の英語表記に準拠。芝・障害 = (1.良: GoodToFirm / 2.稍重: Good /
            3.重: Yielding / 4.不良: Soft)、ダート = (1.良: Standard / 2.稍重: Good / 3.重:
            Muddy / 4.不良: Sloppy)。2.稍重 は全 surface で英語表記 `Good` に統一 (`turfGood` /
            `dirtGood` / `obstacleGood`)。1.良 は芝・障害が `GoodToFirm`、ダートのみ
            `Standard`
          properties:
            turfGoodToFirm:
              type: array
              description: 芝・良
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turfGood:
              type: array
              description: 芝・稍重
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turfYielding:
              type: array
              description: 芝・重
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turfSoft:
              type: array
              description: 芝・不良
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirtStandard:
              type: array
              description: ダート・良
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirtGood:
              type: array
              description: ダート・稍重
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirtMuddy:
              type: array
              description: ダート・重
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirtSloppy:
              type: array
              description: ダート・不良
              items:
                type: integer
              minItems: 6
              maxItems: 6
            obstacleGoodToFirm:
              type: array
              description: 障害・良
              items:
                type: integer
              minItems: 6
              maxItems: 6
            obstacleGood:
              type: array
              description: 障害・稍重
              items:
                type: integer
              minItems: 6
              maxItems: 6
            obstacleYielding:
              type: array
              description: 障害・重
              items:
                type: integer
              minItems: 6
              maxItems: 6
            obstacleSoft:
              type: array
              description: 障害・不良
              items:
                type: integer
              minItems: 6
              maxItems: 6
        byDistance:
          type: object
          description: >-
            距離別着回数 (中央のみ、UM §55-60)。3 段 bucket (`{surface}UpTo1600` /
            `{surface}1601To2200` /
            `{surface}2201Plus`)。`JockeyPeriod.placings.byDistance` /
            `TrainerPeriod.placings.byDistance` と同形式
          properties:
            turfUpTo1600:
              type: array
              description: 芝・1600m以下
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf1601To2200:
              type: array
              description: 芝・1601-2200m
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf2201Plus:
              type: array
              description: 芝・2201m以上
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirtUpTo1600:
              type: array
              description: ダート・1600m以下
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt1601To2200:
              type: array
              description: ダート・1601-2200m
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt2201Plus:
              type: array
              description: ダート・2201m以上
              items:
                type: integer
              minItems: 6
              maxItems: 6
    RunningStyle:
      type: object
      description: >-
        競走馬の脚質統計。逃げ・先行・差し・追込の出走数カウント。`Horse.stats.runningStyle` では JV-Data UM
        レコード §61 由来 (馬本体マスタの累計値)、`Form.stats.runningStyle` では JV-Data CK レコード
        §87 由来 (レース時点スナップショット) として参照される共有 shape
      properties:
        escape:
          type: integer
          description: 逃げ
          example: 0
        lead:
          type: integer
          description: 先行
          example: 3
        travel:
          type: integer
          description: 差し
          example: 2
        push:
          type: integer
          description: 追込
          example: 0
    GenderCode:
      type: string
      description: |-
        騎手・調教師など人物の性別区分。馬の性別を表す `SexCode` とは別の code table に基づきます。

        | コード | 名称 |
        | :--- | :--- |
        | 1 | 男性 |
        | 2 | 女性 |
        | 0 | 未設定 |
      enum:
        - '0'
        - '1'
        - '2'
      example: '1'
      maxLength: 1
    TrainerMilestones:
      type: object
      description: >-
        調教師のマイルストーン記録 (JV-Data CH レコード項番16 由来)。event 1 件分の primitive
        (`GradedWin`) は Jockey 側と $ref 共有する一方、top-level の `TrainerMilestones` は
        entity 別に分離 (`JockeyMilestones` とは別 schema)
      properties:
        recentGradedWins:
          type: array
          description: 最近の重賞勝利情報 (JV-Data CH レコード項番16 由来)。新しい順に保持
          items:
            $ref: '#/components/schemas/GradedWin'
    TrainerStats:
      type: object
      description: 調教師の年度別成績情報 (JV-Data CH レコード項番17 由来)。本年・前年・累計の 3 周期分を保持する。
      properties:
        thisYear:
          $ref: '#/components/schemas/TrainerPeriod'
        lastYear:
          $ref: '#/components/schemas/TrainerPeriod'
        total:
          $ref: '#/components/schemas/TrainerPeriod'
    OwnerStats:
      type: object
      description: >-
        馬主の本年・累計成績情報 (JV-Data BN レコード項番10 由来、60 byte × 2 周期)。`thisYear`
        は本年成績、`total` は累計成績。
      properties:
        thisYear:
          $ref: '#/components/schemas/OwnerPeriod'
        total:
          $ref: '#/components/schemas/OwnerPeriod'
    BreederStats:
      type: object
      description: >-
        生産者の本年・累計成績情報 (JV-Data BR レコード項番10 由来、60 byte × 2 周期)。`thisYear`
        は本年成績、`total` は累計成績。
      properties:
        thisYear:
          $ref: '#/components/schemas/BreederPeriod'
        total:
          $ref: '#/components/schemas/BreederPeriod'
    FoalId:
      type: string
      pattern: ^sk_[0-9]{10}$
      example: sk_2021105477
      description: Foal entity ID。JV-Data SK レコード由来 (産駒マスタ、血統登録番号 10 桁)
    FormId:
      type: string
      pattern: ^ck_[0-9]{26}$
      example: ck_20240526050212112021105477
      description: Form record ID。JV-Data CK レコード由来 (出走別着度数、レース ID 16 桁 + 血統登録番号 10 桁)
    RaceId:
      type: string
      pattern: ^ra_[0-9]{16}$
      example: ra_2024052605021211
      description: >-
        Race entity ID。JV-Data RA レコード由来の合成 PK (開催年月日 8 桁 + 場コード 2 桁 + 開催回 2 桁 +
        開催日目 2 桁 + レース番号 2 桁)
    FormStats:
      type: object
      description: >-
        レース時点での馬本体累計成績 (JV-Data CK レコード §12-88 由来)。`HorseStats` (UM 由来) と同様の `{
        earnings, placings, runningStyle, registeredRaceCount }` shape
        だが、placings の breakdown は CK レコードの細かい bucket 構造 (`byDistance` 9
        段、`byVenue` 10 場、`byCondition` 12 種、`byTrack` 7 種)
        を持つ。レース時点スナップショットのため、Horse master と乖離する場合がある (Horse は常に最新、Form
        はレース後に止まる)
      properties:
        earnings:
          type: object
          description: >-
            レース時点での累計賞金 (JV-Data CK §12-17、単位: 円)。key 命名は `{type}{Surface}`
            (type ∈ {base, added, acquired}, surface ∈ {Flat, Obstacle})
          properties:
            baseFlat:
              type: integer
              description: 平地本賞金累計 (CK §12、中央のみ、円)
              example: 81220000
            baseObstacle:
              type: integer
              description: 障害本賞金累計 (CK §13、中央のみ、円)
            addedFlat:
              type: integer
              description: 平地付加賞金累計 (CK §14、中央のみ、円)
            addedObstacle:
              type: integer
              description: 障害付加賞金累計 (CK §15、中央のみ、円)
            acquiredFlat:
              type: integer
              description: >-
                平地収得賞金累計 (CK §16、中央+地方+海外、円。ML 学習・ranking 用途で `baseFlat`
                と意味が異なる)
              example: 24500000
            acquiredObstacle:
              type: integer
              description: 障害収得賞金累計 (CK §17、中央+地方+海外、円。`baseObstacle` と意味が異なる)
        placings:
          $ref: '#/components/schemas/FormPlacings'
        runningStyle:
          $ref: '#/components/schemas/RunningStyle'
        registeredRaceCount:
          type: integer
          description: レース時点での通算出走数 (JV-Data CK §88 由来)
          example: 4
    FormJockey:
      type: object
      description: >-
        レース時点の騎手成績スナップショット (JV-Data CK §89-91 由来)。本年 (`thisYear`、CK §91 繰返 1 件目)
        と累計 (`total`、繰返 2 件目) の 2 周期分のみ (`lastYear` は CK
        レコードに存在しない)。`JockeyStats` (KS 由来、3 周期) とは別の概念
      properties:
        id:
          $ref: '#/components/schemas/JockeyId'
        name:
          type: string
          description: 騎手名 (CK §90、姓+全角空白+名)
          maxLength: 34
        thisYear:
          $ref: '#/components/schemas/FormJockeyPeriod'
        total:
          $ref: '#/components/schemas/FormJockeyPeriod'
    FormTrainer:
      type: object
      description: >-
        レース時点の調教師成績スナップショット (JV-Data CK §92-94 由来)。本年 (`thisYear`、CK §94 繰返 1
        件目) と累計 (`total`、繰返 2 件目) の 2 周期分のみ (`lastYear` は CK
        レコードに存在しない)。`TrainerStats` (CH 由来、3 周期) とは別の概念
      properties:
        id:
          $ref: '#/components/schemas/TrainerId'
        name:
          type: string
          description: 調教師名 (CK §93、姓+全角空白+名)
          maxLength: 34
        thisYear:
          $ref: '#/components/schemas/FormTrainerPeriod'
        total:
          $ref: '#/components/schemas/FormTrainerPeriod'
    FormOwner:
      type: object
      description: >-
        レース時点の馬主成績スナップショット (JV-Data CK レコード §95-98 由来)。本年と累計の 2 周期分のみ
        (`lastYear` は CK レコードに存在しない)。`OwnerStats` (BN 由来)
        とは別の概念で、レース予測時に利用可能だった成績を表現する 各 property の JV-Data 由来: `id`: 馬主 ID (CK
        §95 馬主コード 6 桁から導出); `thisYear`: 本年成績 (CK §98 繰返 1 件目); `total`: 累計成績 (CK
        §98 繰返 2 件目)
      properties:
        id:
          $ref: '#/components/schemas/OwnerId'
        nameWithEntity:
          type: string
          description: 馬主名 (法人格有、CK §96、姓+全角空白+名)
          maxLength: 64
        nameNoEntity:
          type: string
          description: 馬主名 (法人格無、CK §97)。株式会社等の法人格を示す文字列を除去した短縮形
          maxLength: 64
        thisYear:
          $ref: '#/components/schemas/FormStakeholderPeriod'
        total:
          $ref: '#/components/schemas/FormStakeholderPeriod'
    FormBreeder:
      type: object
      description: >-
        レース時点の生産者成績スナップショット (JV-Data CK レコード §99-101 由来)。本年と累計の 2 周期分のみ
        (`lastYear` は CK レコードに存在しない)。`BreederStats` (BR 由来)
        とは別の概念で、レース予測時に利用可能だった成績を表現する 各 property の JV-Data 由来: `id`: 生産者 ID (CK
        §95-101 範囲内の生産者コード 8 桁から導出); `thisYear`: 本年成績 (CK §101 繰返 1 件目);
        `total`: 累計成績 (CK §101 繰返 2 件目)
      properties:
        id:
          $ref: '#/components/schemas/BreederId'
        nameWithEntity:
          type: string
          description: 生産者名 (法人格有、CK §99)
          maxLength: 72
        nameNoEntity:
          type: string
          description: 生産者名 (法人格無、CK §100)。株式会社等の法人格を示す文字列を除去した短縮形
          maxLength: 72
        thisYear:
          $ref: '#/components/schemas/FormStakeholderPeriod'
        total:
          $ref: '#/components/schemas/FormStakeholderPeriod'
    TrainingId:
      type: string
      pattern: ^hc_[0-9]{23}$
      example: hc_12024052207152021105477
      description: >-
        Training record ID。JV-Data HC レコード由来 (坂路調教、トレセン区分 1 桁 + 調教年月日 8 桁 + 調教時刻
        4 桁 + 血統登録番号 10 桁、合計 23 桁)。トレセン区分は 0:美浦 / 1:栗東
    GradedWin:
      type: object
      description: >-
        重賞勝利 1 件分の event record (JV-Data KS レコード項番23 / CH レコード項番16
        由来)。Jockey/Trainer 間で $ref 共有する entity 横断 primitive。競走名 4 variants は
        Race entity の `title` 慣習に揃え `raceTitle` 系列で flat sibling として保持する (group
        化しない)
      properties:
        raceId:
          $ref: '#/components/schemas/RaceId'
        raceTitle:
          type: string
          description: 競走名本題
          example: 東京優駿
          maxLength: 60
        raceTitleShort10:
          type: string
          description: 競走名略称10文字
          example: 日本ダービー
          maxLength: 20
        raceTitleShort6:
          type: string
          description: 競走名略称6文字
          example: ダービー
          maxLength: 12
        raceTitleShort3:
          type: string
          description: 競走名略称3文字
          example: ダービー
          maxLength: 6
        gradeCode:
          $ref: '#/components/schemas/GradeCode'
        fieldSize:
          type: integer
          description: 出走頭数
          example: 18
        horseId:
          $ref: '#/components/schemas/HorseId'
        horseName:
          type: string
          description: 馬名
          example: ドウデュース
          maxLength: 36
    TrainerPeriod:
      type: object
      description: >-
        調教師の 1 周期分 (本年 / 前年 / 累計) の成績。中央のみのカウント (`earnings: { baseFlat,
        baseObstacle, addedFlat, addedObstacle }`、`placings: { flat[6],
        obstacle[6], byVenue, byDistance }`)。
      properties:
        year:
          type: integer
          description: 成績情報に設定されている年度 (西暦)
          example: 2024
        earnings:
          type: object
          description: 賞金合計 (円単位)。CH は平地/障害 × 本/付加 の 4 通り
          properties:
            baseFlat:
              type: integer
              description: 平地本賞金合計 (円)
            baseObstacle:
              type: integer
              description: 障害本賞金合計 (円)
            addedFlat:
              type: integer
              description: 平地付加賞金合計 (円)
            addedObstacle:
              type: integer
              description: 障害付加賞金合計 (円)
        placings:
          type: object
          description: 着回数群 (各 array は [1着, 2着, 3着, 4着, 5着, 着外] の固定 6 要素)
          properties:
            flat:
              type: array
              description: 平地着回数
              items:
                type: integer
              minItems: 6
              maxItems: 6
            obstacle:
              type: array
              description: 障害着回数
              items:
                type: integer
              minItems: 6
              maxItems: 6
            byVenue:
              type: object
              description: 競馬場別着回数 (中央 10 場 × 平地/障害)
              properties:
                sapporo:
                  $ref: '#/components/schemas/VenuePlacings'
                hakodate:
                  $ref: '#/components/schemas/VenuePlacings'
                fukushima:
                  $ref: '#/components/schemas/VenuePlacings'
                niigata:
                  $ref: '#/components/schemas/VenuePlacings'
                tokyo:
                  $ref: '#/components/schemas/VenuePlacings'
                nakayama:
                  $ref: '#/components/schemas/VenuePlacings'
                chukyo:
                  $ref: '#/components/schemas/VenuePlacings'
                kyoto:
                  $ref: '#/components/schemas/VenuePlacings'
                hanshin:
                  $ref: '#/components/schemas/VenuePlacings'
                kokura:
                  $ref: '#/components/schemas/VenuePlacings'
            byDistance:
              type: object
              description: >-
                距離別着回数 ({surface}UpTo1600 / {surface}1601To2200 /
                {surface}2201Plus の 3 段 bucket)
              properties:
                turfUpTo1600:
                  type: array
                  description: 芝・1600m以下
                  items:
                    type: integer
                  minItems: 6
                  maxItems: 6
                turf1601To2200:
                  type: array
                  description: 芝・1601-2200m
                  items:
                    type: integer
                  minItems: 6
                  maxItems: 6
                turf2201Plus:
                  type: array
                  description: 芝・2201m以上
                  items:
                    type: integer
                  minItems: 6
                  maxItems: 6
                dirtUpTo1600:
                  type: array
                  description: ダート・1600m以下
                  items:
                    type: integer
                  minItems: 6
                  maxItems: 6
                dirt1601To2200:
                  type: array
                  description: ダート・1601-2200m
                  items:
                    type: integer
                  minItems: 6
                  maxItems: 6
                dirt2201Plus:
                  type: array
                  description: ダート・2201m以上
                  items:
                    type: integer
                  minItems: 6
                  maxItems: 6
    OwnerPeriod:
      type: object
      description: >-
        馬主の 1 周期分 (本年 or 累計) の成績 (`earnings: { base, added }`、`placings:
        int[6]`)。
      properties:
        year:
          type: integer
          description: 設定年 (西暦)
          example: 2024
        earnings:
          type: object
          description: 賞金合計 (円単位)。BN/BR は平地/障害の breakdown を持たないため `{ base, added }` のみ
          properties:
            base:
              type: integer
              description: 本賞金合計 (円単位)
              example: 12345600
            added:
              type: integer
              description: 付加賞金合計 (円単位)
              example: 1234560
        placings:
          type: array
          description: 中央のみの着回数 [1着, 2着, 3着, 4着, 5着, 着外] の固定 6 要素
          items:
            type: integer
          minItems: 6
          maxItems: 6
          example:
            - 10
            - 8
            - 5
            - 4
            - 3
            - 100
    BreederPeriod:
      type: object
      description: >-
        生産者の 1 周期分 (本年 or 累計) の成績 (`earnings: { base, added }`、`placings:
        int[6]`)。
      properties:
        year:
          type: integer
          description: 設定年 (西暦)
          example: 2024
        earnings:
          type: object
          description: 賞金合計 (円単位)。BN/BR は平地/障害の breakdown を持たないため `{ base, added }` のみ
          properties:
            base:
              type: integer
              description: 本賞金合計 (円単位)
              example: 12345600
            added:
              type: integer
              description: 付加賞金合計 (円単位)
              example: 1234560
        placings:
          type: array
          description: 中央のみの着回数 [1着, 2着, 3着, 4着, 5着, 着外] の固定 6 要素
          items:
            type: integer
          minItems: 6
          maxItems: 6
          example:
            - 10
            - 8
            - 5
            - 4
            - 3
            - 100
    FormPlacings:
      type: object
      description: >-
        馬本体のレース時点での着回数統計 (JV-Data CK §18-86 由来)。`{ overall, central, byTrack,
        byCondition, byDistance, byVenue }` の breakdown 構造を持つ。`byDistance` は 9 段
        (Horse master の `HorsePlacings.byDistance` 3 段より細かい)、`byVenue` は中央 10 場
        × {turf, dirt, obstacle}。各 array は `[1着, 2着, 3着, 4着, 5着, 着外]` の固定 6 要素
      properties:
        overall:
          type: array
          description: 総合着回数 [1着, 2着, 3着, 4着, 5着, 着外] (中央+地方+海外、CK §18)
          items:
            type: integer
          minItems: 6
          maxItems: 6
          example:
            - 2
            - 1
            - 0
            - 1
            - 0
            - 1
        central:
          type: array
          description: 中央合計着回数 [1着, 2着, 3着, 4着, 5着, 着外] (中央のみ、CK §19)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        byTrack:
          $ref: '#/components/schemas/FormByTrack'
        byCondition:
          $ref: '#/components/schemas/FormByCondition'
        byDistance:
          $ref: '#/components/schemas/FormByDistance'
        byVenue:
          $ref: '#/components/schemas/FormByVenue'
    JockeyId:
      type: string
      pattern: ^ks_[0-9]{5}$
      example: ks_05339
      description: Jockey entity ID。JV-Data KS レコード由来の騎手コード (5 桁)
    FormJockeyPeriod:
      type: object
      description: >-
        騎手の 1 周期分 (本年 / 累計) の成績 (CK §91 の繰返 1 件分)。中央のみのカウント。距離 bucket は KS 由来の
        `JockeyPeriod` (3 段距離) より細かい 9 段 (byVenue は 10 場)。`FormTrainerPeriod` と同
        shape だが entity 別に分離 (将来の片側拡張を局所化)
      required:
        - year
      properties:
        year:
          type: integer
          description: 設定年 (西暦、CK §91 a)
          example: 2024
        earnings:
          type: object
          description: 賞金合計 (円単位、CK §91 b-e)
          properties:
            baseFlat:
              type: integer
              description: 平地本賞金合計 (中央)
            baseObstacle:
              type: integer
              description: 障害本賞金合計 (中央)
            addedFlat:
              type: integer
              description: 平地付加賞金合計 (中央)
            addedObstacle:
              type: integer
              description: 障害付加賞金合計 (中央)
        placings:
          type: object
          description: >-
            馬場種別ごとの着回数 (CK §91 f-h)。各 array は [1着, 2着, 3着, 4着, 5着, 着外] の固定 6 要素
            (中央のみ)
          properties:
            turf:
              type: array
              description: 芝着回数 [1着, 2着, 3着, 4着, 5着, 着外]
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt:
              type: array
              description: ダート着回数 [1着, 2着, 3着, 4着, 5着, 着外]
              items:
                type: integer
              minItems: 6
              maxItems: 6
            obstacle:
              type: array
              description: 障害着回数 [1着, 2着, 3着, 4着, 5着, 着外]
              items:
                type: integer
              minItems: 6
              maxItems: 6
        byDistance:
          type: object
          description: >-
            距離別着回数 (CK §91 i-z)。芝・ダート 9 段階 bucket。各 array は [1着, 2着, 3着, 4着, 5着,
            着外] の固定 6 要素
          properties:
            turfUpTo1200:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf1201To1400:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf1401To1600:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf1601To1800:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf1801To2000:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf2001To2200:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf2201To2400:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf2401To2800:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf2801Plus:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirtUpTo1200:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt1201To1400:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt1401To1600:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt1601To1800:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt1801To2000:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt2001To2200:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt2201To2400:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt2401To2800:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt2801Plus:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
        byVenue:
          type: object
          description: 競馬場別着回数 (CK §91 aa-bd、中央 10 場 × 芝/ダ/障)
          properties:
            sapporo:
              $ref: '#/components/schemas/FormVenueRecord'
            hakodate:
              $ref: '#/components/schemas/FormVenueRecord'
            fukushima:
              $ref: '#/components/schemas/FormVenueRecord'
            niigata:
              $ref: '#/components/schemas/FormVenueRecord'
            tokyo:
              $ref: '#/components/schemas/FormVenueRecord'
            nakayama:
              $ref: '#/components/schemas/FormVenueRecord'
            chukyo:
              $ref: '#/components/schemas/FormVenueRecord'
            kyoto:
              $ref: '#/components/schemas/FormVenueRecord'
            hanshin:
              $ref: '#/components/schemas/FormVenueRecord'
            kokura:
              $ref: '#/components/schemas/FormVenueRecord'
    FormTrainerPeriod:
      type: object
      description: >-
        調教師の 1 周期分 (本年 / 累計) の成績 (CK §94 の繰返 1 件分)。中央のみのカウント。距離 bucket は CH 由来の
        `TrainerPeriod` (3 段距離) より細かい 9 段 (byVenue は 10 場)。`FormJockeyPeriod` と同
        shape だが entity 別に分離 (将来の片側拡張を局所化)
      required:
        - year
      properties:
        year:
          type: integer
          description: 設定年 (西暦、CK §94 a)
          example: 2024
        earnings:
          type: object
          description: 賞金合計 (円単位、CK §94 b-e)
          properties:
            baseFlat:
              type: integer
              description: 平地本賞金合計 (中央)
            baseObstacle:
              type: integer
              description: 障害本賞金合計 (中央)
            addedFlat:
              type: integer
              description: 平地付加賞金合計 (中央)
            addedObstacle:
              type: integer
              description: 障害付加賞金合計 (中央)
        placings:
          type: object
          description: >-
            馬場種別ごとの着回数 (CK §94 f-h)。各 array は [1着, 2着, 3着, 4着, 5着, 着外] の固定 6 要素
            (中央のみ)
          properties:
            turf:
              type: array
              description: 芝着回数 [1着, 2着, 3着, 4着, 5着, 着外]
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt:
              type: array
              description: ダート着回数 [1着, 2着, 3着, 4着, 5着, 着外]
              items:
                type: integer
              minItems: 6
              maxItems: 6
            obstacle:
              type: array
              description: 障害着回数 [1着, 2着, 3着, 4着, 5着, 着外]
              items:
                type: integer
              minItems: 6
              maxItems: 6
        byDistance:
          type: object
          description: >-
            距離別着回数 (CK §94 i-z)。芝・ダート 9 段階 bucket。各 array は [1着, 2着, 3着, 4着, 5着,
            着外] の固定 6 要素
          properties:
            turfUpTo1200:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf1201To1400:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf1401To1600:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf1601To1800:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf1801To2000:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf2001To2200:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf2201To2400:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf2401To2800:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            turf2801Plus:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirtUpTo1200:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt1201To1400:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt1401To1600:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt1601To1800:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt1801To2000:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt2001To2200:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt2201To2400:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt2401To2800:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
            dirt2801Plus:
              type: array
              items:
                type: integer
              minItems: 6
              maxItems: 6
        byVenue:
          type: object
          description: 競馬場別着回数 (CK §94 aa-bd、中央 10 場 × 芝/ダ/障)
          properties:
            sapporo:
              $ref: '#/components/schemas/FormVenueRecord'
            hakodate:
              $ref: '#/components/schemas/FormVenueRecord'
            fukushima:
              $ref: '#/components/schemas/FormVenueRecord'
            niigata:
              $ref: '#/components/schemas/FormVenueRecord'
            tokyo:
              $ref: '#/components/schemas/FormVenueRecord'
            nakayama:
              $ref: '#/components/schemas/FormVenueRecord'
            chukyo:
              $ref: '#/components/schemas/FormVenueRecord'
            kyoto:
              $ref: '#/components/schemas/FormVenueRecord'
            hanshin:
              $ref: '#/components/schemas/FormVenueRecord'
            kokura:
              $ref: '#/components/schemas/FormVenueRecord'
    FormStakeholderPeriod:
      type: object
      description: >-
        馬主・生産者の 1 周期分 (本年 or 累計) の成績 (CK §98/§101 の繰返 1 件分)。`OwnerPeriod` /
        `BreederPeriod` (BN/BR 由来) と同構造だが、CK レコードのレース時点スナップショットとして独立に保持する。距離・競馬場
        bucket は持たない simple 構造 (`FormJockeyPeriod` / `FormTrainerPeriod` の rich
        構造とは別の概念)
      required:
        - year
      properties:
        year:
          type: integer
          description: 設定年 (西暦)
          example: 2024
        earnings:
          type: object
          description: 賞金合計 (円単位)。馬主・生産者は平地/障害の breakdown を持たないため `{ base, added }` のみ
          properties:
            base:
              type: integer
              description: 本賞金合計 (中央、円)
              example: 12345600
            added:
              type: integer
              description: 付加賞金合計 (中央、円)
              example: 1234560
        placings:
          type: array
          description: 中央のみの着回数 [1着, 2着, 3着, 4着, 5着, 着外] の固定 6 要素
          items:
            type: integer
          minItems: 6
          maxItems: 6
          example:
            - 10
            - 8
            - 5
            - 4
            - 3
            - 100
    GradeCode:
      type: string
      description: |-
        競走のグレードを表すコード。

        | コード | 内容 | 欧字表記 |
        | :--- | :--- | :--- |
        | A | G1（平地） | G1 |
        | B | G2（平地） | G2 |
        | C | G3（平地） | G3 |
        | D | グレードのない重賞 | - |
        | E | 重賞以外の特別競走 | - |
        | F | J・G1（障害） | J・G1 |
        | G | J・G2（障害） | J・G2 |
        | H | J・G3（障害） | J・G3 |
        | L | L（リステッド） | L |
        | _ | 一般競走 または 未設定 | - |

        ※ `_` は半角スペース(0x20)をアンダースコアに置換しています。
      enum:
        - A
        - B
        - C
        - D
        - E
        - F
        - G
        - H
        - L
        - _
      x-fern-enum:
        _:
          name: Open
          description: 一般競走 または 未設定 (元の JV-Data コードは半角スペース 0x20)
      example: A
      maxLength: 1
    VenuePlacings:
      type: object
      description: >-
        競馬場 1 場分の平地・障害着回数 (各 array は [1着, 2着, 3着, 4着, 5着, 着外] の固定 6 要素)。KS/CH 間で
        $ref 共有する entity 横断 primitive。
      properties:
        flat:
          type: array
          description: 平地
          items:
            type: integer
          minItems: 6
          maxItems: 6
        obstacle:
          type: array
          description: 障害
          items:
            type: integer
          minItems: 6
          maxItems: 6
    FormByTrack:
      type: object
      description: >-
        馬場別着回数 (JV-Data CK §20-26、中央のみ)。各 array は [1着, 2着, 3着, 4着, 5着, 着外] の固定 6
        要素
      properties:
        turfStraight:
          type: array
          description: 芝・直線 (CK §20)
          items:
            type: integer
        turfRight:
          type: array
          description: 芝・右回り (CK §21)
          items:
            type: integer
        turfLeft:
          type: array
          description: 芝・左回り (CK §22)
          items:
            type: integer
        dirtStraight:
          type: array
          description: ダート・直線 (CK §23)
          items:
            type: integer
        dirtRight:
          type: array
          description: ダート・右回り (CK §24)
          items:
            type: integer
        dirtLeft:
          type: array
          description: ダート・左回り (CK §25)
          items:
            type: integer
        obstacle:
          type: array
          description: 障害 (CK §26)
          items:
            type: integer
    FormByCondition:
      type: object
      description: >-
        馬場状態別着回数 (JV-Data CK §27-38、中央のみ)。`{surface}{Condition}` 12
        種で、`{Condition}` は JV-Data コード表 2010 の英語表記に準拠。芝・障害 = (1.良: GoodToFirm /
        2.稍重: Good / 3.重: Yielding / 4.不良: Soft)、ダート = (1.良: Standard / 2.稍重:
        Good / 3.重: Muddy / 4.不良: Sloppy)。2.稍重 は全 surface で英語表記 `Good` に統一
        (`turfGood` / `dirtGood` / `obstacleGood`)。1.良 は芝・障害が `GoodToFirm`、ダートのみ
        `Standard`。`HorsePlacings.byCondition` (UM §43-54 由来) と key 命名を揃えてあり、同名
        key は同じ馬場状態を指す。各 array は [1着, 2着, 3着, 4着, 5着, 着外] の固定 6 要素
      properties:
        turfGoodToFirm:
          type: array
          description: 芝・良 (CK §27)
          items:
            type: integer
        turfGood:
          type: array
          description: 芝・稍重 (CK §28)
          items:
            type: integer
        turfYielding:
          type: array
          description: 芝・重 (CK §29)
          items:
            type: integer
        turfSoft:
          type: array
          description: 芝・不良 (CK §30)
          items:
            type: integer
        dirtStandard:
          type: array
          description: ダート・良 (CK §31)
          items:
            type: integer
        dirtGood:
          type: array
          description: ダート・稍重 (CK §32)
          items:
            type: integer
        dirtMuddy:
          type: array
          description: ダート・重 (CK §33)
          items:
            type: integer
        dirtSloppy:
          type: array
          description: ダート・不良 (CK §34)
          items:
            type: integer
        obstacleGoodToFirm:
          type: array
          description: 障害・良 (CK §35)
          items:
            type: integer
        obstacleGood:
          type: array
          description: 障害・稍重 (CK §36)
          items:
            type: integer
        obstacleYielding:
          type: array
          description: 障害・重 (CK §37)
          items:
            type: integer
        obstacleSoft:
          type: array
          description: 障害・不良 (CK §38)
          items:
            type: integer
    FormByDistance:
      type: object
      description: >-
        距離別着回数 (JV-Data CK §39-56、中央のみ)。芝・ダートそれぞれ 9 段階 bucket。UM 由来の
        `HorsePlacings.byDistance` (3 段階) より粒度が細かい点に注意。各 array は [1着, 2着, 3着,
        4着, 5着, 着外] の固定 6 要素
      properties:
        turfUpTo1200:
          type: array
          description: 芝・1200m以下 (CK §39)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        turf1201To1400:
          type: array
          description: 芝・1201-1400m (CK §40)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        turf1401To1600:
          type: array
          description: 芝・1401-1600m (CK §41)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        turf1601To1800:
          type: array
          description: 芝・1601-1800m (CK §42)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        turf1801To2000:
          type: array
          description: 芝・1801-2000m (CK §43)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        turf2001To2200:
          type: array
          description: 芝・2001-2200m (CK §44)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        turf2201To2400:
          type: array
          description: 芝・2201-2400m (CK §45)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        turf2401To2800:
          type: array
          description: 芝・2401-2800m (CK §46)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        turf2801Plus:
          type: array
          description: 芝・2801m以上 (CK §47)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        dirtUpTo1200:
          type: array
          description: ダート・1200m以下 (CK §48)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        dirt1201To1400:
          type: array
          description: ダート・1201-1400m (CK §49)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        dirt1401To1600:
          type: array
          description: ダート・1401-1600m (CK §50)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        dirt1601To1800:
          type: array
          description: ダート・1601-1800m (CK §51)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        dirt1801To2000:
          type: array
          description: ダート・1801-2000m (CK §52)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        dirt2001To2200:
          type: array
          description: ダート・2001-2200m (CK §53)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        dirt2201To2400:
          type: array
          description: ダート・2201-2400m (CK §54)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        dirt2401To2800:
          type: array
          description: ダート・2401-2800m (CK §55)
          items:
            type: integer
          minItems: 6
          maxItems: 6
        dirt2801Plus:
          type: array
          description: ダート・2801m以上 (CK §56)
          items:
            type: integer
          minItems: 6
          maxItems: 6
    FormByVenue:
      type: object
      description: >-
        競馬場別着回数 (JV-Data CK §57-86、中央 10 場 × 芝/ダート/障害)。各 venue は `{turf, dirt,
        obstacle}` を持ち、各 array は [1着, 2着, 3着, 4着, 5着, 着外] の固定 6 要素 各 venue
        property の JV-Data 由来項番: sapporo=札幌 (CK §57/§67/§77), hakodate=函館 (CK
        §58/§68/§78), fukushima=福島 (CK §59/§69/§79), niigata=新潟 (CK
        §60/§70/§80), tokyo=東京 (CK §61/§71/§81), nakayama=中山 (CK §62/§72/§82),
        chukyo=中京 (CK §63/§73/§83), kyoto=京都 (CK §64/§74/§84), hanshin=阪神 (CK
        §65/§75/§85), kokura=小倉 (CK §66/§76/§86)
      properties:
        sapporo:
          $ref: '#/components/schemas/FormVenueRecord'
        hakodate:
          $ref: '#/components/schemas/FormVenueRecord'
        fukushima:
          $ref: '#/components/schemas/FormVenueRecord'
        niigata:
          $ref: '#/components/schemas/FormVenueRecord'
        tokyo:
          $ref: '#/components/schemas/FormVenueRecord'
        nakayama:
          $ref: '#/components/schemas/FormVenueRecord'
        chukyo:
          $ref: '#/components/schemas/FormVenueRecord'
        kyoto:
          $ref: '#/components/schemas/FormVenueRecord'
        hanshin:
          $ref: '#/components/schemas/FormVenueRecord'
        kokura:
          $ref: '#/components/schemas/FormVenueRecord'
    FormVenueRecord:
      type: object
      description: >-
        競馬場 1 場分の馬場種別ごとの着回数 (JV-Data CK §57-86 の場 × 芝/ダ/障 セット)。各 array は [1着,
        2着, 3着, 4着, 5着, 着外] の固定 6 要素
      properties:
        turf:
          type: array
          description: 芝
          items:
            type: integer
          minItems: 6
          maxItems: 6
        dirt:
          type: array
          description: ダート
          items:
            type: integer
          minItems: 6
          maxItems: 6
        obstacle:
          type: array
          description: 障害
          items:
            type: integer
          minItems: 6
          maxItems: 6
  responses:
    BadRequest:
      description: リクエストの構文エラーや型不整合
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: BAD_REQUEST
              message: リクエストの形式が正しくありません。
    Unauthorized:
      description: >-
        認証エラー（APIキー未設定、または無効）。`Authorization: Bearer <sk_live_... or
        sk_test_...>` を必ず付与してください。失敗理由（キー欠落 / 不明 / 失効）は同一 body で返します。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: UNAUTHORIZED
              message: 有効なAPIキーが必要です。
    NotFound:
      description: リソースが見つからない場合
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: NOT_FOUND
              message: 指定されたIDのリソースが見つかりませんでした。
    InternalServerError:
      description: サーバー内部エラー
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: INTERNAL_SERVER_ERROR
              message: サーバー内部で予期せぬエラーが発生しました。
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        APIダッシュボードで発行された `sk_live_...` または `sk_test_...` キーを入力してください。prefix は
        mode を示し、両 mode とも同じ API URL で利用できます (`sk_live_*` = live mode /
        本番、`sk_test_*` = test mode / 開発・自動テスト)。

````