# frontend audience: geospatial ドメイン
#
# このファイルは docs/openapi/frontend/openapi.yaml から $ref で参照される断片であり、
# 単体では有効な OpenAPI ドキュメントではない(openapi/info を持たない)。
# 横断的関心事(エラー型)は ../problem.yaml を $ref で参照する。
#
# --- x-ix-changes の使い方 ---
# Javadocの @since 相当の独自拡張。version はこのドキュメント(frontend/openapi.yaml)の
# info.version の座標系で書く。
#   kind: added      … 新規追加
#   kind: changed    … 仕様変更(note必須)
#   kind: deprecated … 非推奨(note必須。OAS標準の deprecated: true も併記される)
# 例: x-ix-changes: [{ kind: added, version: "0.1.0" }]
# バンドル時に description へのMarkdown注記や、operationへの x-badges(一覧で見つけやすいバッジ)に
# 自動変換される(property/parameterはdescription注記のみ、operationはバッジも付く)。
# 詳細: docs/openapi/policy.md の「バージョン注記と非推奨」
#
# --- タグ構成 ---
# geospatial ドメインは13エンドポイントと規模が大きいため、ドメインタグ(geospatial)に加えて
# サブタグ(FlightPlanArea/AirspaceRestriction/Telemetry)を各operationに付与し、表示側で
# カテゴリごとにグルーピングできるようにしている。ドメイン全体の概要・利用パターンの説明は
# frontend/openapi.yaml の tags[].description(geospatial)側にまとめて記載する。
#
# NOTE: 現在位置のリアルタイム購読(SSE)は frontend/geospatial-sse.yaml の
# GET /api/v1/geo/events/telemetry を参照(本ファイルとはSSEという操作の性質が異なるため断片ファイルを分けている)。

paths:
  /api/v1/geo/flight-plan-area/search:
    post:
      operationId: searchFlightPlanArea
      summary: 自組織の飛行計画領域を検索する
      tags:
        - FlightPlanArea
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: リクエストボディで指定した検索条件に該当する、自組織が閲覧可能な飛行計画領域をGeoJSONで返す（DIPS連携の計画も含む）。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FlightPlanAreaSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/FlightPlanAreaFeatureCollection"
              examples:
                route:
                  summary: 経路（Route）の例
                  description: >-
                    `areaType=ROUTE`の例。`OPERATIONAL_INTENT`（バッファ適用形状）が加わるため6件返る。
                    Z値の決まり方は`Geometry`を参照。
                  value:
                    type: FeatureCollection
                    features:
                      - type: Feature
                        geometry:
                          type: LineString
                          coordinates: [[141.3806772, 43.1430107, 36], [141.3833118, 43.1414674, 36], [141.3869668, 43.1411289, 36], [141.3919762, 43.1406145, 36], [141.3960393, 43.1403031, 36]]
                        properties:
                          flightPlanId: "a2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACTIVATED
                          reportRequired: true
                          reportStatus: REPORTED
                          dipsFlightPlanId: "AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 5
                          maxAltitudeMAmsl: 41.05
                          minAltitudeMWgs84: 36.91
                          maxAltitudeMWgs84: 72.96
                          areaType: ROUTE
                          dataType: FLIGHT_PLAN
                          bufferM: 30
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: LineString
                          coordinates: [[141.3806772, 43.1430107, 72.96], [141.3833118, 43.1414674, 72.95], [141.3869668, 43.1411289, 72.94], [141.3919762, 43.1406145, 72.92], [141.3960393, 43.1403031, 72.91]]
                        properties:
                          flightPlanId: "a2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACTIVATED
                          reportRequired: true
                          reportStatus: REPORTED
                          dipsFlightPlanId: "AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 5
                          maxAltitudeMAmsl: 41.05
                          minAltitudeMWgs84: 36.91
                          maxAltitudeMWgs84: 72.96
                          areaType: ROUTE
                          dataType: FLIGHT_PLAN
                          bufferM: 30
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: Polygon
                          coordinates: [[[141.3809084, 43.1432209, 36], [141.3834561, 43.1417155, 36], [141.3870158, 43.141396, 36], [141.3920212, 43.140882, 36], [141.3960779, 43.1405711, 36], [141.3960007, 43.1400351, 36], [141.3919312, 43.140347, 36], [141.3869178, 43.1408618, 36], [141.3831675, 43.1412193, 36], [141.380446, 43.1428005, 36], [141.3809084, 43.1432209, 36]]]
                        properties:
                          flightPlanId: "a2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACTIVATED
                          reportRequired: true
                          reportStatus: REPORTED
                          dipsFlightPlanId: "AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 5
                          maxAltitudeMAmsl: 41.05
                          minAltitudeMWgs84: 36.91
                          maxAltitudeMWgs84: 72.96
                          areaType: ROUTE
                          dataType: OPERATIONAL_INTENT
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: Polygon
                          coordinates: [[[141.3809084, 43.1432209, 72.96], [141.3834561, 43.1417155, 72.95], [141.3870158, 43.141396, 72.94], [141.3920212, 43.140882, 72.92], [141.3960779, 43.1405711, 72.91], [141.3960007, 43.1400351, 72.91], [141.3919312, 43.140347, 72.92], [141.3869178, 43.1408618, 72.94], [141.3831675, 43.1412193, 72.95], [141.380446, 43.1428005, 72.96], [141.3809084, 43.1432209, 72.96]]]
                        properties:
                          flightPlanId: "a2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACTIVATED
                          reportRequired: true
                          reportStatus: REPORTED
                          dipsFlightPlanId: "AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 5
                          maxAltitudeMAmsl: 41.05
                          minAltitudeMWgs84: 36.91
                          maxAltitudeMWgs84: 72.96
                          areaType: ROUTE
                          dataType: OPERATIONAL_INTENT
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: MultiPolygon
                          coordinates: [[[[141.3809084, 43.1432209, 36], [141.3834561, 43.1417155, 36], [141.3870158, 43.141396, 36], [141.3920212, 43.140882, 36], [141.3960779, 43.1405711, 36], [141.3960007, 43.1400351, 36], [141.3919312, 43.140347, 36], [141.3869178, 43.1408618, 36], [141.3831675, 43.1412193, 36], [141.380446, 43.1428005, 36], [141.3809084, 43.1432209, 36]]], [[[141.3809084, 43.1432209, 0], [141.3834561, 43.1417155, 0], [141.3870158, 43.141396, 0], [141.3920212, 43.140882, 0], [141.3960779, 43.1405711, 0], [141.3960007, 43.1400351, 0], [141.3919312, 43.140347, 0], [141.3869178, 43.1408618, 0], [141.3831675, 43.1412193, 0], [141.380446, 43.1428005, 0], [141.3809084, 43.1432209, 0]]]]
                        properties:
                          flightPlanId: "a2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACTIVATED
                          reportRequired: true
                          reportStatus: REPORTED
                          dipsFlightPlanId: "AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 5
                          maxAltitudeMAmsl: 41.05
                          minAltitudeMWgs84: 36.91
                          maxAltitudeMWgs84: 72.96
                          areaType: ROUTE
                          dataType: TOP_BOTTOM_3D
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: MultiPolygon
                          coordinates: [[[[141.3809084, 43.1432209, 72.96], [141.3834561, 43.1417155, 72.95], [141.3870158, 43.141396, 72.94], [141.3920212, 43.140882, 72.92], [141.3960779, 43.1405711, 72.91], [141.3960007, 43.1400351, 72.91], [141.3919312, 43.140347, 72.92], [141.3869178, 43.1408618, 72.94], [141.3831675, 43.1412193, 72.95], [141.380446, 43.1428005, 72.96], [141.3809084, 43.1432209, 72.96]]], [[[141.3809084, 43.1432209, 36.96], [141.3834561, 43.1417155, 36.95], [141.3870158, 43.141396, 36.94], [141.3920212, 43.140882, 36.92], [141.3960779, 43.1405711, 36.91], [141.3960007, 43.1400351, 36.91], [141.3919312, 43.140347, 36.92], [141.3869178, 43.1408618, 36.94], [141.3831675, 43.1412193, 36.95], [141.380446, 43.1428005, 36.96], [141.3809084, 43.1432209, 36.96]]]]
                        properties:
                          flightPlanId: "a2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACTIVATED
                          reportRequired: true
                          reportStatus: REPORTED
                          dipsFlightPlanId: "AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 5
                          maxAltitudeMAmsl: 41.05
                          minAltitudeMWgs84: 36.91
                          maxAltitudeMWgs84: 72.96
                          areaType: ROUTE
                          dataType: TOP_BOTTOM_3D
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                    totalCount: 1
                    truncated: false
                polygon:
                  summary: 領域（Polygon）の例（通報義務なしの例）
                  description: >-
                    地表が傾斜している場所の例。`altitudeReference=WGS84`のFeatureはZ値が頂点ごとに異なる。
                    Z値の決まり方は`Geometry`を参照。
                  value:
                    type: FeatureCollection
                    features:
                      - type: Feature
                        geometry:
                          type: Polygon
                          coordinates: [[[141.3913338, 43.1462741, 36], [141.3980462, 43.145662, 36], [141.3977371, 43.1432776, 36], [141.3908921, 43.1437931, 36], [141.3913338, 43.1462741, 36]]]
                        properties:
                          flightPlanId: "b2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACTIVATED
                          reportRequired: false
                          reportStatus: UNREPORTED
                          reportExemptionReason: WEIGHT_UNDER_100G
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 24.35
                          maxAltitudeMAmsl: 61
                          minAltitudeMWgs84: 64.35
                          maxAltitudeMWgs84: 101
                          areaType: POLYGON
                          dataType: FLIGHT_PLAN
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: Polygon
                          coordinates: [[[141.3913338, 43.1462741, 101], [141.3980462, 43.145662, 100.62], [141.3977371, 43.1432776, 100.35], [141.3908921, 43.1437931, 100.71], [141.3913338, 43.1462741, 101]]]
                        properties:
                          flightPlanId: "b2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACTIVATED
                          reportRequired: false
                          reportStatus: UNREPORTED
                          reportExemptionReason: WEIGHT_UNDER_100G
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 24.35
                          maxAltitudeMAmsl: 61
                          minAltitudeMWgs84: 64.35
                          maxAltitudeMWgs84: 101
                          areaType: POLYGON
                          dataType: FLIGHT_PLAN
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: MultiPolygon
                          coordinates: [[[[141.3913338, 43.1462741, 36], [141.3980462, 43.145662, 36], [141.3977371, 43.1432776, 36], [141.3908921, 43.1437931, 36], [141.3913338, 43.1462741, 36]]], [[[141.3913338, 43.1462741, 0], [141.3980462, 43.145662, 0], [141.3977371, 43.1432776, 0], [141.3908921, 43.1437931, 0], [141.3913338, 43.1462741, 0]]]]
                        properties:
                          flightPlanId: "b2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACTIVATED
                          reportRequired: false
                          reportStatus: UNREPORTED
                          reportExemptionReason: WEIGHT_UNDER_100G
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 24.35
                          maxAltitudeMAmsl: 61
                          minAltitudeMWgs84: 64.35
                          maxAltitudeMWgs84: 101
                          areaType: POLYGON
                          dataType: TOP_BOTTOM_3D
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: MultiPolygon
                          coordinates: [[[[141.3913338, 43.1462741, 101], [141.3980462, 43.145662, 100.62], [141.3977371, 43.1432776, 100.35], [141.3908921, 43.1437931, 100.71], [141.3913338, 43.1462741, 101]]], [[[141.3913338, 43.1462741, 65], [141.3980462, 43.145662, 64.62], [141.3977371, 43.1432776, 64.35], [141.3908921, 43.1437931, 64.71], [141.3913338, 43.1462741, 65]]]]
                        properties:
                          flightPlanId: "b2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACTIVATED
                          reportRequired: false
                          reportStatus: UNREPORTED
                          reportExemptionReason: WEIGHT_UNDER_100G
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 24.35
                          maxAltitudeMAmsl: 61
                          minAltitudeMWgs84: 64.35
                          maxAltitudeMWgs84: 101
                          areaType: POLYGON
                          dataType: TOP_BOTTOM_3D
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                    totalCount: 1
                    truncated: false
                circle:
                  summary: 領域（Circle）の例（通報義務ありだが未通報の例）
                  description: >-
                    `areaType=CIRCLE`の例。真円を多角形近似（疑似円）した`Polygon`として返却するため、元の中心・半径は
                    `circleCenterLng`/`circleCenterLat`/`circleRadiusM`で保持する。Z値の決まり方は`Geometry`を参照。
                  value:
                    type: FeatureCollection
                    features:
                      - type: Feature
                        geometry:
                          type: Polygon
                          coordinates: [[[141.3981446, 43.1520523, 36], [141.3980473, 43.1527758, 36], [141.397759, 43.1534715, 36], [141.3972909, 43.1541126, 36], [141.396661, 43.1546746, 36], [141.3958935, 43.1551358, 36], [141.3950178, 43.1554785, 36], [141.3940676, 43.1556896, 36], [141.3930794, 43.1557608, 36], [141.3920912, 43.1556896, 36], [141.391141, 43.1554785, 36], [141.3902653, 43.1551358, 36], [141.3894978, 43.1546746, 36], [141.3888679, 43.1541126, 36], [141.3883998, 43.1534715, 36], [141.3881115, 43.1527758, 36], [141.3880142, 43.1520523, 36], [141.3881115, 43.1513288, 36], [141.3883998, 43.1506331, 36], [141.3888679, 43.149992, 36], [141.3894978, 43.14943, 36], [141.3902653, 43.1489688, 36], [141.391141, 43.1486261, 36], [141.3920912, 43.148415, 36], [141.3930794, 43.1483438, 36], [141.3940676, 43.148415, 36], [141.3950178, 43.1486261, 36], [141.3958935, 43.1489688, 36], [141.396661, 43.14943, 36], [141.3972909, 43.149992, 36], [141.397759, 43.1506331, 36], [141.3980473, 43.1513288, 36], [141.3981446, 43.1520523, 36]]]
                        properties:
                          flightPlanId: "c2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACCEPTED
                          reportRequired: true
                          reportStatus: UNREPORTED
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 23.94
                          maxAltitudeMAmsl: 62.4
                          minAltitudeMWgs84: 63.94
                          maxAltitudeMWgs84: 102.4
                          areaType: CIRCLE
                          dataType: FLIGHT_PLAN
                          circleCenterLng: 141.3930794
                          circleCenterLat: 43.1520523
                          circleRadiusM: 412
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: Polygon
                          coordinates: [[[141.3981446, 43.1520523, 102.23], [141.3980473, 43.1527758, 102.36], [141.397759, 43.1534715, 102.4], [141.3972909, 43.1541126, 102.34], [141.396661, 43.1546746, 102.21], [141.3958935, 43.1551358, 102.01], [141.3950178, 43.1554785, 101.78], [141.3940676, 43.1556896, 101.53], [141.3930794, 43.1557608, 101.29], [141.3920912, 43.1556896, 101.08], [141.391141, 43.1554785, 100.91], [141.3902653, 43.1551358, 100.77], [141.3894978, 43.1546746, 100.67], [141.3888679, 43.1541126, 100.6], [141.3883998, 43.1534715, 100.54], [141.3881115, 43.1527758, 100.48], [141.3880142, 43.1520523, 100.42], [141.3881115, 43.1513288, 100.34], [141.3883998, 43.1506331, 100.24], [141.3888679, 43.149992, 100.14], [141.3894978, 43.14943, 100.05], [141.3902653, 43.1489688, 99.97], [141.391141, 43.1486261, 99.94], [141.3920912, 43.148415, 99.96], [141.3930794, 43.1483438, 100.05], [141.3940676, 43.148415, 100.22], [141.3950178, 43.1486261, 100.45], [141.3958935, 43.1489688, 100.75], [141.396661, 43.14943, 101.08], [141.3972909, 43.149992, 101.42], [141.397759, 43.1506331, 101.74], [141.3980473, 43.1513288, 102.02], [141.3981446, 43.1520523, 102.23]]]
                        properties:
                          flightPlanId: "c2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACCEPTED
                          reportRequired: true
                          reportStatus: UNREPORTED
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 23.94
                          maxAltitudeMAmsl: 62.4
                          minAltitudeMWgs84: 63.94
                          maxAltitudeMWgs84: 102.4
                          areaType: CIRCLE
                          dataType: FLIGHT_PLAN
                          circleCenterLng: 141.3930794
                          circleCenterLat: 43.1520523
                          circleRadiusM: 412
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: MultiPolygon
                          coordinates: [[[[141.3981446, 43.1520523, 36], [141.3980473, 43.1527758, 36], [141.397759, 43.1534715, 36], [141.3972909, 43.1541126, 36], [141.396661, 43.1546746, 36], [141.3958935, 43.1551358, 36], [141.3950178, 43.1554785, 36], [141.3940676, 43.1556896, 36], [141.3930794, 43.1557608, 36], [141.3920912, 43.1556896, 36], [141.391141, 43.1554785, 36], [141.3902653, 43.1551358, 36], [141.3894978, 43.1546746, 36], [141.3888679, 43.1541126, 36], [141.3883998, 43.1534715, 36], [141.3881115, 43.1527758, 36], [141.3880142, 43.1520523, 36], [141.3881115, 43.1513288, 36], [141.3883998, 43.1506331, 36], [141.3888679, 43.149992, 36], [141.3894978, 43.14943, 36], [141.3902653, 43.1489688, 36], [141.391141, 43.1486261, 36], [141.3920912, 43.148415, 36], [141.3930794, 43.1483438, 36], [141.3940676, 43.148415, 36], [141.3950178, 43.1486261, 36], [141.3958935, 43.1489688, 36], [141.396661, 43.14943, 36], [141.3972909, 43.149992, 36], [141.397759, 43.1506331, 36], [141.3980473, 43.1513288, 36], [141.3981446, 43.1520523, 36]]], [[[141.3981446, 43.1520523, 0], [141.3980473, 43.1527758, 0], [141.397759, 43.1534715, 0], [141.3972909, 43.1541126, 0], [141.396661, 43.1546746, 0], [141.3958935, 43.1551358, 0], [141.3950178, 43.1554785, 0], [141.3940676, 43.1556896, 0], [141.3930794, 43.1557608, 0], [141.3920912, 43.1556896, 0], [141.391141, 43.1554785, 0], [141.3902653, 43.1551358, 0], [141.3894978, 43.1546746, 0], [141.3888679, 43.1541126, 0], [141.3883998, 43.1534715, 0], [141.3881115, 43.1527758, 0], [141.3880142, 43.1520523, 0], [141.3881115, 43.1513288, 0], [141.3883998, 43.1506331, 0], [141.3888679, 43.149992, 0], [141.3894978, 43.14943, 0], [141.3902653, 43.1489688, 0], [141.391141, 43.1486261, 0], [141.3920912, 43.148415, 0], [141.3930794, 43.1483438, 0], [141.3940676, 43.148415, 0], [141.3950178, 43.1486261, 0], [141.3958935, 43.1489688, 0], [141.396661, 43.14943, 0], [141.3972909, 43.149992, 0], [141.397759, 43.1506331, 0], [141.3980473, 43.1513288, 0], [141.3981446, 43.1520523, 0]]]]
                        properties:
                          flightPlanId: "c2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACCEPTED
                          reportRequired: true
                          reportStatus: UNREPORTED
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 23.94
                          maxAltitudeMAmsl: 62.4
                          minAltitudeMWgs84: 63.94
                          maxAltitudeMWgs84: 102.4
                          areaType: CIRCLE
                          dataType: TOP_BOTTOM_3D
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                      - type: Feature
                        geometry:
                          type: MultiPolygon
                          coordinates: [[[[141.3981446, 43.1520523, 102.23], [141.3980473, 43.1527758, 102.36], [141.397759, 43.1534715, 102.4], [141.3972909, 43.1541126, 102.34], [141.396661, 43.1546746, 102.21], [141.3958935, 43.1551358, 102.01], [141.3950178, 43.1554785, 101.78], [141.3940676, 43.1556896, 101.53], [141.3930794, 43.1557608, 101.29], [141.3920912, 43.1556896, 101.08], [141.391141, 43.1554785, 100.91], [141.3902653, 43.1551358, 100.77], [141.3894978, 43.1546746, 100.67], [141.3888679, 43.1541126, 100.6], [141.3883998, 43.1534715, 100.54], [141.3881115, 43.1527758, 100.48], [141.3880142, 43.1520523, 100.42], [141.3881115, 43.1513288, 100.34], [141.3883998, 43.1506331, 100.24], [141.3888679, 43.149992, 100.14], [141.3894978, 43.14943, 100.05], [141.3902653, 43.1489688, 99.97], [141.391141, 43.1486261, 99.94], [141.3920912, 43.148415, 99.96], [141.3930794, 43.1483438, 100.05], [141.3940676, 43.148415, 100.22], [141.3950178, 43.1486261, 100.45], [141.3958935, 43.1489688, 100.75], [141.396661, 43.14943, 101.08], [141.3972909, 43.149992, 101.42], [141.397759, 43.1506331, 101.74], [141.3980473, 43.1513288, 102.02], [141.3981446, 43.1520523, 102.23]]], [[[141.3981446, 43.1520523, 66.23], [141.3980473, 43.1527758, 66.36], [141.397759, 43.1534715, 66.4], [141.3972909, 43.1541126, 66.34], [141.396661, 43.1546746, 66.21], [141.3958935, 43.1551358, 66.01], [141.3950178, 43.1554785, 65.78], [141.3940676, 43.1556896, 65.53], [141.3930794, 43.1557608, 65.29], [141.3920912, 43.1556896, 65.08], [141.391141, 43.1554785, 64.91], [141.3902653, 43.1551358, 64.77], [141.3894978, 43.1546746, 64.67], [141.3888679, 43.1541126, 64.6], [141.3883998, 43.1534715, 64.54], [141.3881115, 43.1527758, 64.48], [141.3880142, 43.1520523, 64.42], [141.3881115, 43.1513288, 64.34], [141.3883998, 43.1506331, 64.24], [141.3888679, 43.149992, 64.14], [141.3894978, 43.14943, 64.05], [141.3902653, 43.1489688, 63.97], [141.391141, 43.1486261, 63.94], [141.3920912, 43.148415, 63.96], [141.3930794, 43.1483438, 64.05], [141.3940676, 43.148415, 64.22], [141.3950178, 43.1486261, 64.45], [141.3958935, 43.1489688, 64.75], [141.396661, 43.14943, 65.08], [141.3972909, 43.149992, 65.42], [141.397759, 43.1506331, 65.74], [141.3980473, 43.1513288, 66.02], [141.3981446, 43.1520523, 66.23]]]]
                        properties:
                          flightPlanId: "c2002e22-9207-4f8f-8118-925a35e17c41"
                          createdBy: "b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11"
                          status: ACCEPTED
                          reportRequired: true
                          reportStatus: UNREPORTED
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 23.94
                          maxAltitudeMAmsl: 62.4
                          minAltitudeMWgs84: 63.94
                          maxAltitudeMWgs84: 102.4
                          areaType: CIRCLE
                          dataType: TOP_BOTTOM_3D
                          uasId: "d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa"
                    totalCount: 1
                    truncated: false
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `currentTime`と`currentTimeFrom`/`currentTimeTo`を同時指定、`currentTimeFrom`/`currentTimeTo`の片方のみ指定、等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /api/v1/geo/flight-plan-area/others/search:
    post:
      operationId: searchOtherFlightPlanArea
      summary: 近傍の他Operatorの飛行計画領域を検索する
      tags:
        - FlightPlanArea
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: リクエストボディで指定した検索条件に該当する近傍の他Operatorの飛行計画領域をGeoJSONで返す（自組織向けと別エンドポイント）。レスポンスは`createdBy`・`uasId`等の内部IDを含まない、公開可能な最小限のプロパティ（ID・時刻・高度・経路程度）のみで構成される（`OtherFlightPlanAreaFeatureCollection`）。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OtherFlightPlanAreaSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/OtherFlightPlanAreaFeatureCollection"
              examples:
                polygon:
                  summary: 領域（Polygon）の例
                  description: >-
                    地表が傾斜している場所の例。`altitudeReference=WGS84`のFeatureはZ値が頂点ごとに異なる。
                    Z値の決まり方は`Geometry`を参照。
                  value:
                    type: FeatureCollection
                    features:
                      - type: Feature
                        geometry:
                          type: Polygon
                          coordinates: [[[141.3913338, 43.1462741, 36], [141.3980462, 43.145662, 36], [141.3977371, 43.1432776, 36], [141.3908921, 43.1437931, 36], [141.3913338, 43.1462741, 36]]]
                        properties:
                          flightPlanId: "b2002e22-9207-4f8f-8118-925a35e17c41"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 24.35
                          maxAltitudeMAmsl: 61
                          minAltitudeMWgs84: 64.35
                          maxAltitudeMWgs84: 101
                          areaType: POLYGON
                          dataType: FLIGHT_PLAN
                      - type: Feature
                        geometry:
                          type: Polygon
                          coordinates: [[[141.3913338, 43.1462741, 101], [141.3980462, 43.145662, 100.62], [141.3977371, 43.1432776, 100.35], [141.3908921, 43.1437931, 100.71], [141.3913338, 43.1462741, 101]]]
                        properties:
                          flightPlanId: "b2002e22-9207-4f8f-8118-925a35e17c41"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 24.35
                          maxAltitudeMAmsl: 61
                          minAltitudeMWgs84: 64.35
                          maxAltitudeMWgs84: 101
                          areaType: POLYGON
                          dataType: FLIGHT_PLAN
                      - type: Feature
                        geometry:
                          type: MultiPolygon
                          coordinates: [[[[141.3913338, 43.1462741, 36], [141.3980462, 43.145662, 36], [141.3977371, 43.1432776, 36], [141.3908921, 43.1437931, 36], [141.3913338, 43.1462741, 36]]], [[[141.3913338, 43.1462741, 0], [141.3980462, 43.145662, 0], [141.3977371, 43.1432776, 0], [141.3908921, 43.1437931, 0], [141.3913338, 43.1462741, 0]]]]
                        properties:
                          flightPlanId: "b2002e22-9207-4f8f-8118-925a35e17c41"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 24.35
                          maxAltitudeMAmsl: 61
                          minAltitudeMWgs84: 64.35
                          maxAltitudeMWgs84: 101
                          areaType: POLYGON
                          dataType: TOP_BOTTOM_3D
                      - type: Feature
                        geometry:
                          type: MultiPolygon
                          coordinates: [[[[141.3913338, 43.1462741, 101], [141.3980462, 43.145662, 100.62], [141.3977371, 43.1432776, 100.35], [141.3908921, 43.1437931, 100.71], [141.3913338, 43.1462741, 101]]], [[[141.3913338, 43.1462741, 65], [141.3980462, 43.145662, 64.62], [141.3977371, 43.1432776, 64.35], [141.3908921, 43.1437931, 64.71], [141.3913338, 43.1462741, 65]]]]
                        properties:
                          flightPlanId: "b2002e22-9207-4f8f-8118-925a35e17c41"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 24.35
                          maxAltitudeMAmsl: 61
                          minAltitudeMWgs84: 64.35
                          maxAltitudeMWgs84: 101
                          areaType: POLYGON
                          dataType: TOP_BOTTOM_3D
                    totalCount: 1
                    truncated: false
                circle:
                  summary: 領域（Circle）の例
                  description: >-
                    `areaType=CIRCLE`の例。真円を多角形近似（疑似円）した`Polygon`として返却するため、元の中心・半径は
                    `circleCenterLng`/`circleCenterLat`/`circleRadiusM`で保持する。Z値の決まり方は`Geometry`を参照。
                  value:
                    type: FeatureCollection
                    features:
                      - type: Feature
                        geometry:
                          type: Polygon
                          coordinates: [[[141.3981446, 43.1520523, 36], [141.3980473, 43.1527758, 36], [141.397759, 43.1534715, 36], [141.3972909, 43.1541126, 36], [141.396661, 43.1546746, 36], [141.3958935, 43.1551358, 36], [141.3950178, 43.1554785, 36], [141.3940676, 43.1556896, 36], [141.3930794, 43.1557608, 36], [141.3920912, 43.1556896, 36], [141.391141, 43.1554785, 36], [141.3902653, 43.1551358, 36], [141.3894978, 43.1546746, 36], [141.3888679, 43.1541126, 36], [141.3883998, 43.1534715, 36], [141.3881115, 43.1527758, 36], [141.3880142, 43.1520523, 36], [141.3881115, 43.1513288, 36], [141.3883998, 43.1506331, 36], [141.3888679, 43.149992, 36], [141.3894978, 43.14943, 36], [141.3902653, 43.1489688, 36], [141.391141, 43.1486261, 36], [141.3920912, 43.148415, 36], [141.3930794, 43.1483438, 36], [141.3940676, 43.148415, 36], [141.3950178, 43.1486261, 36], [141.3958935, 43.1489688, 36], [141.396661, 43.14943, 36], [141.3972909, 43.149992, 36], [141.397759, 43.1506331, 36], [141.3980473, 43.1513288, 36], [141.3981446, 43.1520523, 36]]]
                        properties:
                          flightPlanId: "c2002e22-9207-4f8f-8118-925a35e17c41"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 23.94
                          maxAltitudeMAmsl: 62.4
                          minAltitudeMWgs84: 63.94
                          maxAltitudeMWgs84: 102.4
                          areaType: CIRCLE
                          dataType: FLIGHT_PLAN
                          circleCenterLng: 141.3930794
                          circleCenterLat: 43.1520523
                          circleRadiusM: 412
                      - type: Feature
                        geometry:
                          type: Polygon
                          coordinates: [[[141.3981446, 43.1520523, 102.23], [141.3980473, 43.1527758, 102.36], [141.397759, 43.1534715, 102.4], [141.3972909, 43.1541126, 102.34], [141.396661, 43.1546746, 102.21], [141.3958935, 43.1551358, 102.01], [141.3950178, 43.1554785, 101.78], [141.3940676, 43.1556896, 101.53], [141.3930794, 43.1557608, 101.29], [141.3920912, 43.1556896, 101.08], [141.391141, 43.1554785, 100.91], [141.3902653, 43.1551358, 100.77], [141.3894978, 43.1546746, 100.67], [141.3888679, 43.1541126, 100.6], [141.3883998, 43.1534715, 100.54], [141.3881115, 43.1527758, 100.48], [141.3880142, 43.1520523, 100.42], [141.3881115, 43.1513288, 100.34], [141.3883998, 43.1506331, 100.24], [141.3888679, 43.149992, 100.14], [141.3894978, 43.14943, 100.05], [141.3902653, 43.1489688, 99.97], [141.391141, 43.1486261, 99.94], [141.3920912, 43.148415, 99.96], [141.3930794, 43.1483438, 100.05], [141.3940676, 43.148415, 100.22], [141.3950178, 43.1486261, 100.45], [141.3958935, 43.1489688, 100.75], [141.396661, 43.14943, 101.08], [141.3972909, 43.149992, 101.42], [141.397759, 43.1506331, 101.74], [141.3980473, 43.1513288, 102.02], [141.3981446, 43.1520523, 102.23]]]
                        properties:
                          flightPlanId: "c2002e22-9207-4f8f-8118-925a35e17c41"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 23.94
                          maxAltitudeMAmsl: 62.4
                          minAltitudeMWgs84: 63.94
                          maxAltitudeMWgs84: 102.4
                          areaType: CIRCLE
                          dataType: FLIGHT_PLAN
                          circleCenterLng: 141.3930794
                          circleCenterLat: 43.1520523
                          circleRadiusM: 412
                      - type: Feature
                        geometry:
                          type: MultiPolygon
                          coordinates: [[[[141.3981446, 43.1520523, 36], [141.3980473, 43.1527758, 36], [141.397759, 43.1534715, 36], [141.3972909, 43.1541126, 36], [141.396661, 43.1546746, 36], [141.3958935, 43.1551358, 36], [141.3950178, 43.1554785, 36], [141.3940676, 43.1556896, 36], [141.3930794, 43.1557608, 36], [141.3920912, 43.1556896, 36], [141.391141, 43.1554785, 36], [141.3902653, 43.1551358, 36], [141.3894978, 43.1546746, 36], [141.3888679, 43.1541126, 36], [141.3883998, 43.1534715, 36], [141.3881115, 43.1527758, 36], [141.3880142, 43.1520523, 36], [141.3881115, 43.1513288, 36], [141.3883998, 43.1506331, 36], [141.3888679, 43.149992, 36], [141.3894978, 43.14943, 36], [141.3902653, 43.1489688, 36], [141.391141, 43.1486261, 36], [141.3920912, 43.148415, 36], [141.3930794, 43.1483438, 36], [141.3940676, 43.148415, 36], [141.3950178, 43.1486261, 36], [141.3958935, 43.1489688, 36], [141.396661, 43.14943, 36], [141.3972909, 43.149992, 36], [141.397759, 43.1506331, 36], [141.3980473, 43.1513288, 36], [141.3981446, 43.1520523, 36]]], [[[141.3981446, 43.1520523, 0], [141.3980473, 43.1527758, 0], [141.397759, 43.1534715, 0], [141.3972909, 43.1541126, 0], [141.396661, 43.1546746, 0], [141.3958935, 43.1551358, 0], [141.3950178, 43.1554785, 0], [141.3940676, 43.1556896, 0], [141.3930794, 43.1557608, 0], [141.3920912, 43.1556896, 0], [141.391141, 43.1554785, 0], [141.3902653, 43.1551358, 0], [141.3894978, 43.1546746, 0], [141.3888679, 43.1541126, 0], [141.3883998, 43.1534715, 0], [141.3881115, 43.1527758, 0], [141.3880142, 43.1520523, 0], [141.3881115, 43.1513288, 0], [141.3883998, 43.1506331, 0], [141.3888679, 43.149992, 0], [141.3894978, 43.14943, 0], [141.3902653, 43.1489688, 0], [141.391141, 43.1486261, 0], [141.3920912, 43.148415, 0], [141.3930794, 43.1483438, 0], [141.3940676, 43.148415, 0], [141.3950178, 43.1486261, 0], [141.3958935, 43.1489688, 0], [141.396661, 43.14943, 0], [141.3972909, 43.149992, 0], [141.397759, 43.1506331, 0], [141.3980473, 43.1513288, 0], [141.3981446, 43.1520523, 0]]]]
                        properties:
                          flightPlanId: "c2002e22-9207-4f8f-8118-925a35e17c41"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: AGL
                          altitudeUnit: m
                          minAltitudeMAmsl: 23.94
                          maxAltitudeMAmsl: 62.4
                          minAltitudeMWgs84: 63.94
                          maxAltitudeMWgs84: 102.4
                          areaType: CIRCLE
                          dataType: TOP_BOTTOM_3D
                      - type: Feature
                        geometry:
                          type: MultiPolygon
                          coordinates: [[[[141.3981446, 43.1520523, 102.23], [141.3980473, 43.1527758, 102.36], [141.397759, 43.1534715, 102.4], [141.3972909, 43.1541126, 102.34], [141.396661, 43.1546746, 102.21], [141.3958935, 43.1551358, 102.01], [141.3950178, 43.1554785, 101.78], [141.3940676, 43.1556896, 101.53], [141.3930794, 43.1557608, 101.29], [141.3920912, 43.1556896, 101.08], [141.391141, 43.1554785, 100.91], [141.3902653, 43.1551358, 100.77], [141.3894978, 43.1546746, 100.67], [141.3888679, 43.1541126, 100.6], [141.3883998, 43.1534715, 100.54], [141.3881115, 43.1527758, 100.48], [141.3880142, 43.1520523, 100.42], [141.3881115, 43.1513288, 100.34], [141.3883998, 43.1506331, 100.24], [141.3888679, 43.149992, 100.14], [141.3894978, 43.14943, 100.05], [141.3902653, 43.1489688, 99.97], [141.391141, 43.1486261, 99.94], [141.3920912, 43.148415, 99.96], [141.3930794, 43.1483438, 100.05], [141.3940676, 43.148415, 100.22], [141.3950178, 43.1486261, 100.45], [141.3958935, 43.1489688, 100.75], [141.396661, 43.14943, 101.08], [141.3972909, 43.149992, 101.42], [141.397759, 43.1506331, 101.74], [141.3980473, 43.1513288, 102.02], [141.3981446, 43.1520523, 102.23]]], [[[141.3981446, 43.1520523, 66.23], [141.3980473, 43.1527758, 66.36], [141.397759, 43.1534715, 66.4], [141.3972909, 43.1541126, 66.34], [141.396661, 43.1546746, 66.21], [141.3958935, 43.1551358, 66.01], [141.3950178, 43.1554785, 65.78], [141.3940676, 43.1556896, 65.53], [141.3930794, 43.1557608, 65.29], [141.3920912, 43.1556896, 65.08], [141.391141, 43.1554785, 64.91], [141.3902653, 43.1551358, 64.77], [141.3894978, 43.1546746, 64.67], [141.3888679, 43.1541126, 64.6], [141.3883998, 43.1534715, 64.54], [141.3881115, 43.1527758, 64.48], [141.3880142, 43.1520523, 64.42], [141.3881115, 43.1513288, 64.34], [141.3883998, 43.1506331, 64.24], [141.3888679, 43.149992, 64.14], [141.3894978, 43.14943, 64.05], [141.3902653, 43.1489688, 63.97], [141.391141, 43.1486261, 63.94], [141.3920912, 43.148415, 63.96], [141.3930794, 43.1483438, 64.05], [141.3940676, 43.148415, 64.22], [141.3950178, 43.1486261, 64.45], [141.3958935, 43.1489688, 64.75], [141.396661, 43.14943, 65.08], [141.3972909, 43.149992, 65.42], [141.397759, 43.1506331, 65.74], [141.3980473, 43.1513288, 66.02], [141.3981446, 43.1520523, 66.23]]]]
                        properties:
                          flightPlanId: "c2002e22-9207-4f8f-8118-925a35e17c41"
                          plannedStartAt: "2022-10-10T13:00:00Z"
                          plannedEndAt: "2022-10-10T14:00:00Z"
                          minAltitudeMAgl: 0
                          maxAltitudeMAgl: 36
                          altitudeReference: WGS84
                          altitudeUnit: m
                          minAltitudeMAmsl: 23.94
                          maxAltitudeMAmsl: 62.4
                          minAltitudeMWgs84: 63.94
                          maxAltitudeMWgs84: 102.4
                          areaType: CIRCLE
                          dataType: TOP_BOTTOM_3D
                    totalCount: 1
                    truncated: false
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `currentTime`と`currentTimeFrom`/`currentTimeTo`を同時指定、`currentTimeFrom`/`currentTimeTo`の片方のみ指定、等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /static/tiles/airspace-restriction/did.pmtiles:
    get:
      operationId: getDidPmtilesArchive
      summary: 空域制限（DID）のPMTilesアーカイブを取得する
      tags:
        - AirspaceRestriction
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      # 【重要】このオペレーションはコード生成の対象外にする。
      # 静的ファイル配信(CDN)であり本アプリのMVCハンドラとしては実装しないため、契約だけを残す。
      # 拡張名の制約とScalar表示との両立(ix/strip-x-internal decorator)は
      # ./geospatial-sse.yaml 側の同じ指定のコメントを参照。
      x-internal: true
      # 静的ファイルホスティング(CDN等)からの配信を想定しており、本APIサーバーのservers(openapi.yaml)とは
      # 別ホストになる想定。実際のインフラ構成(CDNプロバイダ・ドメイン等)は未確定のため、
      # ここでは配信方式の契約(パス・Range Request対応)のみを示すプレースホルダとして自ホスト相対で表現する。
      security: []
      description: |-
        DID（人口集中地区）の空域制限を、単一の静的PMTilesアーカイブ（内部レイヤー名は`did`固定）として返す。

        **配信・認証**

        - クライアント（PMTilesリーダー等）は`Range`ヘッダで必要なバイト範囲のみを取得する。`Range`未指定時はファイル全体を返す
        - 静的ファイル配信・CDNキャッシュの活用を前提とするため、他のエンドポイントと異なりBearer認証は要求しない

        **アーカイブ内のデータ形式**

        - 各タイルはMVT（Mapbox Vector Tile）形式。レイヤー名（source-layer）は`did`固定
        - geometry: `Polygon`または`MultiPolygon`（人口集中地区の境界）
        - properties: `AirspaceRestrictionProperties`に相当する内容を持つ
          - `category`は`DENSELY_INHABITED_DISTRICT`固定、`sourceKind`は`GSI`固定。`minAltitudeMAgl`/`maxAltitudeMAgl`は人口集中地区が高度の概念を持たないため設定しない
          - `externalId`は設定しない（国土地理院提供のデータセットに由来し、取得元の識別子を持たない）
          - `name`/`description`/`validFrom`/`validTo`/`status`の実際の値は、DIPSから取得できる情報を踏まえてビルド時に設定する

      parameters:
        - $ref: "#/components/parameters/Range"
        - $ref: "#/components/parameters/IfNoneMatch"
      responses:
        "200":
          description: ファイル全体（`Range`ヘッダ未指定時）。
          headers:
            Accept-Ranges:
              description: Range Requestに対応していることを自己記述的に示す。
              schema:
                type: string
              example: bytes
            Content-Length:
              description: ファイル全体のバイト数。
              schema:
                type: integer
              example: 41943040
            Cache-Control:
              description: >-
                キャッシュ方針。アーカイブ内容はDIDデータの再生成時以外は変化しないため、
                CDN・ブラウザは本ヘッダに従って長期間キャッシュしてよい（例: `public, max-age=86400, immutable`）。
              schema:
                type: string
              example: "public, max-age=86400, immutable"
            ETag:
              description: >-
                アーカイブ内容（バージョン）に対応する識別子。再生成時のみ値が変わる。
                次回以降のリクエストで`If-None-Match`に指定することで、内容に変化がなければ`304 Not Modified`を受け取り転送量を削減できる。
              schema:
                type: string
              example: "\"a1b2c3d4e5f6\""
          content:
            application/vnd.pmtiles:
              schema:
                type: string
                format: binary
        "206":
          description: 指定された`Range`に対応するバイト範囲の部分取得。
          headers:
            Content-Range:
              description: "返却したバイト範囲とファイル全体のサイズ（例: `bytes 0-16383/41943040`）。"
              schema:
                type: string
              example: "bytes 0-16383/41943040"
            Content-Length:
              description: 返却した部分のバイト数。
              schema:
                type: integer
              example: 16384
            Accept-Ranges:
              description: Range Requestに対応していることを自己記述的に示す。
              schema:
                type: string
              example: bytes
            ETag:
              description: アーカイブ内容（バージョン）に対応する識別子（`200`と同じセマンティクス）。
              schema:
                type: string
              example: "\"a1b2c3d4e5f6\""
          content:
            application/vnd.pmtiles:
              schema:
                type: string
                format: binary
        "304":
          description: >-
            Not Modified。`If-None-Match`で指定した`ETag`から内容に変化がないため、ボディなしで返す
            （CDN・ブラウザキャッシュの再検証用）。
          headers:
            ETag:
              description: 現在のアーカイブ内容に対応する識別子（`200`と同じセマンティクス）。
              schema:
                type: string
              example: "\"a1b2c3d4e5f6\""
        "416":
          description: 指定された`Range`が不正（ファイルサイズを超える等）。
          headers:
            Content-Range:
              description: "実際のファイルサイズ（例: `bytes */41943040`）。"
              schema:
                type: string
              example: "bytes */41943040"

  /api/v1/geo/airspace-restriction/airport/search:
    post:
      operationId: searchAirspaceRestrictionAirport
      summary: 空港等の周辺空域を検索する
      tags:
        - AirspaceRestriction
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: リクエストボディで指定した検索条件に該当する空港等の周辺空域（`category=AIRPORT_VICINITY`）をGeoJSONで返す（動的配信）。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AirspaceRestrictionSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/AirspaceRestrictionFeatureCollection"
              example:
                type: FeatureCollection
                features:
                  - type: Feature
                    geometry:
                      type: MultiPolygon
                      coordinates: [[[[141.39065089462355, 43.145888400071726, 150], [141.38456291446818, 43.145888400071726, 150], [141.38456291446818, 43.144063414191265, 150], [141.39065089462355, 43.144063414191265, 150], [141.39065089462355, 43.145888400071726, 150]]], [[[141.3844213335347, 43.14774776361381, 150], [141.3874181299675, 43.14774776361381, 150], [141.3874181299675, 43.14594004982257, 150], [141.3844213335347, 43.14594004982257, 150], [141.3844213335347, 43.14774776361381, 150]]]]
                    properties:
                      restrictionId: "0199f3a0-0001-7e4f-8a9b-0c1d2e3f4a01"
                      externalId: "20221105_FISSikou0001"
                      sourceKind: DIPS_FPR
                      category: AIRPORT_VICINITY
                      name: 空港等の周辺空域の例（分離した複数領域からなるMultiPolygon。天面はAGL/WGS84の2Feature）
                      geometryType: MULTIPOLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: AGL
                      altitudeUnit: m
                      minAltitudeMAmsl: 3.1
                      maxAltitudeMAmsl: 154.2
                      minAltitudeMWgs84: 35.05
                      maxAltitudeMWgs84: 186.15
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                  - type: Feature
                    geometry:
                      type: MultiPolygon
                      coordinates: [[[[141.39065089462355, 43.145888400071726, 185.33], [141.38456291446818, 43.145888400071726, 185.05], [141.38456291446818, 43.144063414191265, 186.15], [141.39065089462355, 43.144063414191265, 185.23], [141.39065089462355, 43.145888400071726, 185.33]]], [[[141.3844213335347, 43.14774776361381, 185.85], [141.3874181299675, 43.14774776361381, 185.14], [141.3874181299675, 43.14594004982257, 186.04], [141.3844213335347, 43.14594004982257, 185.45], [141.3844213335347, 43.14774776361381, 185.85]]]]
                    properties:
                      restrictionId: "0199f3a0-0001-7e4f-8a9b-0c1d2e3f4a01"
                      externalId: "20221105_FISSikou0001"
                      sourceKind: DIPS_FPR
                      category: AIRPORT_VICINITY
                      name: 空港等の周辺空域の例（分離した複数領域からなるMultiPolygon。天面はAGL/WGS84の2Feature）
                      geometryType: MULTIPOLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: WGS84
                      altitudeUnit: m
                      minAltitudeMAmsl: 3.1
                      maxAltitudeMAmsl: 154.2
                      minAltitudeMWgs84: 35.05
                      maxAltitudeMWgs84: 186.15
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                totalCount: 1
                truncated: false
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `validAt`と`validFrom`/`validTo`を同時指定、`validFrom`/`validTo`の片方のみ指定、等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /api/v1/geo/airspace-restriction/red-zone/search:
    post:
      operationId: searchAirspaceRestrictionRedZone
      summary: レッドゾーンを検索する
      tags:
        - AirspaceRestriction
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: リクエストボディで指定した検索条件に該当するレッドゾーン（`category=SMALL_UAV_PROHIBITION_RED_ZONE`）をGeoJSONで返す（動的配信）。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AirspaceRestrictionSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/AirspaceRestrictionFeatureCollection"
              example:
                type: FeatureCollection
                features:
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3930794, 43.1565439, 150], [141.3941485, 43.1564756, 150], [141.3951851, 43.156273, 150], [141.3961577, 43.1559421, 150], [141.3970368, 43.155493, 150], [141.3977957, 43.1549394, 150], [141.3984112, 43.1542981, 150], [141.3988648, 43.1535885, 150], [141.3991426, 43.1528323, 150], [141.3992361, 43.1520523, 150], [141.3991426, 43.1512723, 150], [141.3988648, 43.1505161, 150], [141.3984112, 43.1498065, 150], [141.3977957, 43.1491652, 150], [141.3970368, 43.1486116, 150], [141.3961577, 43.1481625, 150], [141.3951851, 43.1478316, 150], [141.3941485, 43.147629, 150], [141.3930794, 43.1475607, 150], [141.3920103, 43.147629, 150], [141.3909737, 43.1478316, 150], [141.3900011, 43.1481625, 150], [141.389122, 43.1486116, 150], [141.3883631, 43.1491652, 150], [141.3877476, 43.1498065, 150], [141.387294, 43.1505161, 150], [141.3870162, 43.1512723, 150], [141.3869227, 43.1520523, 150], [141.3870162, 43.1528323, 150], [141.387294, 43.1535885, 150], [141.3877476, 43.1542981, 150], [141.3883631, 43.1549394, 150], [141.389122, 43.155493, 150], [141.3900011, 43.1559421, 150], [141.3909737, 43.156273, 150], [141.3920103, 43.1564756, 150], [141.3930794, 43.1565439, 150]]]
                    properties:
                      restrictionId: "0199f3a0-0005-7e4f-8a9b-0c1d2e3f4a05"
                      externalId: "20221105_FISSikou0005"
                      sourceKind: DIPS_FPR
                      category: SMALL_UAV_PROHIBITION_RED_ZONE
                      name: レッドゾーンの例（天面はAGL/WGS84の2Feature）
                      geometryType: CIRCLE
                      circleCenterLng: 141.3930794
                      circleCenterLat: 43.1520523
                      circleRadiusM: 500
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: AGL
                      altitudeUnit: m
                      minAltitudeMAmsl: 3.6
                      maxAltitudeMAmsl: 156.9
                      minAltitudeMWgs84: 35.52
                      maxAltitudeMWgs84: 188.81
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3930794, 43.1565439, 187.72], [141.3941485, 43.1564756, 187.42], [141.3951851, 43.156273, 187.62], [141.3961577, 43.1559421, 187.41], [141.3970368, 43.155493, 187.51], [141.3977957, 43.1549394, 188.81], [141.3984112, 43.1542981, 188.51], [141.3988648, 43.1535885, 187.5], [141.3991426, 43.1528323, 187.2], [141.3992361, 43.1520523, 186.1], [141.3991426, 43.1512723, 186.2], [141.3988648, 43.1505161, 186.6], [141.3984112, 43.1498065, 186.4], [141.3977957, 43.1491652, 186.21], [141.3970368, 43.1486116, 186.01], [141.3961577, 43.1481625, 187.01], [141.3951851, 43.1478316, 186.01], [141.3941485, 43.147629, 185.52], [141.3930794, 43.1475607, 186.82], [141.3920103, 43.147629, 186.82], [141.3909737, 43.1478316, 186.73], [141.3900011, 43.1481625, 185.53], [141.389122, 43.1486116, 185.63], [141.3883631, 43.1491652, 186.84], [141.3877476, 43.1498065, 187.14], [141.387294, 43.1505161, 186.04], [141.3870162, 43.1512723, 185.94], [141.3869227, 43.1520523, 185.64], [141.3870162, 43.1528323, 185.84], [141.387294, 43.1535885, 185.64], [141.3877476, 43.1542981, 185.64], [141.3883631, 43.1549394, 188.14], [141.389122, 43.155493, 186.83], [141.3900011, 43.1559421, 186.63], [141.3909737, 43.156273, 187.23], [141.3920103, 43.1564756, 187.63], [141.3930794, 43.1565439, 187.72]]]
                    properties:
                      restrictionId: "0199f3a0-0005-7e4f-8a9b-0c1d2e3f4a05"
                      externalId: "20221105_FISSikou0005"
                      sourceKind: DIPS_FPR
                      category: SMALL_UAV_PROHIBITION_RED_ZONE
                      name: レッドゾーンの例（天面はAGL/WGS84の2Feature）
                      geometryType: CIRCLE
                      circleCenterLng: 141.3930794
                      circleCenterLat: 43.1520523
                      circleRadiusM: 500
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: WGS84
                      altitudeUnit: m
                      minAltitudeMAmsl: 3.6
                      maxAltitudeMAmsl: 156.9
                      minAltitudeMWgs84: 35.52
                      maxAltitudeMWgs84: 188.81
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                totalCount: 1
                truncated: false
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `validAt`と`validFrom`/`validTo`を同時指定、`validFrom`/`validTo`の片方のみ指定、等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /api/v1/geo/airspace-restriction/yellow-zone/search:
    post:
      operationId: searchAirspaceRestrictionYellowZone
      summary: イエローゾーンを検索する
      tags:
        - AirspaceRestriction
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: リクエストボディで指定した検索条件に該当するイエローゾーン（`category=SMALL_UAV_PROHIBITION_YELLOW_ZONE`）をGeoJSONで返す（動的配信）。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AirspaceRestrictionSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/AirspaceRestrictionFeatureCollection"
              example:
                type: FeatureCollection
                features:
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3930794, 43.1592388, 150], [141.39479, 43.1591296, 150], [141.3964485, 43.1588054, 150], [141.3980047, 43.158276, 150], [141.3994113, 43.1575575, 150], [141.4006255, 43.1566717, 150], [141.4016104, 43.1556455, 150], [141.402336, 43.1545102, 150], [141.4027804, 43.1533002, 150], [141.4029301, 43.1520523, 150], [141.4027804, 43.1508044, 150], [141.402336, 43.1495944, 150], [141.4016104, 43.1484591, 150], [141.4006255, 43.1474329, 150], [141.3994113, 43.1465471, 150], [141.3980047, 43.1458286, 150], [141.3964485, 43.1452992, 150], [141.39479, 43.144975, 150], [141.3930794, 43.1448658, 150], [141.3913688, 43.144975, 150], [141.3897103, 43.1452992, 150], [141.3881541, 43.1458286, 150], [141.3867475, 43.1465471, 150], [141.3855333, 43.1474329, 150], [141.3845484, 43.1484591, 150], [141.3838228, 43.1495944, 150], [141.3833784, 43.1508044, 150], [141.3832287, 43.1520523, 150], [141.3833784, 43.1533002, 150], [141.3838228, 43.1545102, 150], [141.3845484, 43.1556455, 150], [141.3855333, 43.1566717, 150], [141.3867475, 43.1575575, 150], [141.3881541, 43.158276, 150], [141.3897103, 43.1588054, 150], [141.3913688, 43.1591296, 150], [141.3930794, 43.1592388, 150]]]
                    properties:
                      restrictionId: "0199f3a0-0006-7e4f-8a9b-0c1d2e3f4a06"
                      externalId: "20221105_FISSikou0006"
                      sourceKind: DIPS_FPR
                      category: SMALL_UAV_PROHIBITION_YELLOW_ZONE
                      name: イエローゾーンの例（天面はAGL/WGS84の2Feature）
                      geometryType: CIRCLE
                      circleCenterLng: 141.3930794
                      circleCenterLat: 43.1520523
                      circleRadiusM: 800
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: AGL
                      altitudeUnit: m
                      minAltitudeMAmsl: 3.3
                      maxAltitudeMAmsl: 156.6
                      minAltitudeMWgs84: 35.23
                      maxAltitudeMWgs84: 188.49
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3930794, 43.1592388, 187.42], [141.39479, 43.1591296, 186.72], [141.3964485, 43.1588054, 187.31], [141.3980047, 43.158276, 187.21], [141.3994113, 43.1575575, 187.9], [141.4006255, 43.1566717, 187.2], [141.4016104, 43.1556455, 187.4], [141.402336, 43.1545102, 188.49], [141.4027804, 43.1533002, 188.09], [141.4029301, 43.1520523, 187.69], [141.4027804, 43.1508044, 186.69], [141.402336, 43.1495944, 186.39], [141.4016104, 43.1484591, 186.29], [141.4006255, 43.1474329, 186.6], [141.3994113, 43.1465471, 186.1], [141.3980047, 43.1458286, 186.0], [141.3964485, 43.1452992, 186.21], [141.39479, 43.144975, 186.12], [141.3930794, 43.1448658, 186.42], [141.3913688, 43.144975, 186.53], [141.3897103, 43.1452992, 185.23], [141.3881541, 43.1458286, 187.34], [141.3867475, 43.1465471, 185.54], [141.3855333, 43.1474329, 185.55], [141.3845484, 43.1484591, 185.85], [141.3838228, 43.1495944, 186.05], [141.3833784, 43.1508044, 186.25], [141.3832287, 43.1520523, 186.05], [141.3833784, 43.1533002, 185.95], [141.3838228, 43.1545102, 186.45], [141.3845484, 43.1556455, 186.35], [141.3855333, 43.1566717, 186.65], [141.3867475, 43.1575575, 186.34], [141.3881541, 43.158276, 186.14], [141.3897103, 43.1588054, 186.53], [141.3913688, 43.1591296, 186.53], [141.3930794, 43.1592388, 187.42]]]
                    properties:
                      restrictionId: "0199f3a0-0006-7e4f-8a9b-0c1d2e3f4a06"
                      externalId: "20221105_FISSikou0006"
                      sourceKind: DIPS_FPR
                      category: SMALL_UAV_PROHIBITION_YELLOW_ZONE
                      name: イエローゾーンの例（天面はAGL/WGS84の2Feature）
                      geometryType: CIRCLE
                      circleCenterLng: 141.3930794
                      circleCenterLat: 43.1520523
                      circleRadiusM: 800
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: WGS84
                      altitudeUnit: m
                      minAltitudeMAmsl: 3.3
                      maxAltitudeMAmsl: 156.6
                      minAltitudeMWgs84: 35.23
                      maxAltitudeMWgs84: 188.49
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                totalCount: 1
                truncated: false
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `validAt`と`validFrom`/`validTo`を同時指定、`validFrom`/`validTo`の片方のみ指定、等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /api/v1/geo/airspace-restriction/ordinance/search:
    post:
      operationId: searchAirspaceRestrictionOrdinance
      summary: 条例等で定めるエリアを検索する
      tags:
        - AirspaceRestriction
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: リクエストボディで指定した検索条件に該当する条例等で定めるエリア（`category=ORDINANCE_DESIGNATED_AREA`）をGeoJSONで返す（動的配信）。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AirspaceRestrictionSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/AirspaceRestrictionFeatureCollection"
              example:
                type: FeatureCollection
                features:
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3913338, 43.1462741, 150], [141.3980462, 43.145662, 150], [141.3977371, 43.1432776, 150], [141.3908921, 43.1437931, 150], [141.3913338, 43.1462741, 150]]]
                    properties:
                      restrictionId: "0199f3a0-0007-7e4f-8a9b-0c1d2e3f4a07"
                      externalId: "20221105_FISSikou0007"
                      sourceKind: DIPS_FPR
                      category: ORDINANCE_DESIGNATED_AREA
                      name: 条例等で定めるエリアの例（天面はAGL/WGS84の2Feature）
                      geometryType: POLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: AGL
                      altitudeUnit: m
                      minAltitudeMAmsl: 2.7
                      maxAltitudeMAmsl: 153.9
                      minAltitudeMWgs84: 34.61
                      maxAltitudeMWgs84: 185.83
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3913338, 43.1462741, 185.83], [141.3980462, 43.145662, 185.7], [141.3977371, 43.1432776, 184.61], [141.3908921, 43.1437931, 185.43], [141.3913338, 43.1462741, 185.83]]]
                    properties:
                      restrictionId: "0199f3a0-0007-7e4f-8a9b-0c1d2e3f4a07"
                      externalId: "20221105_FISSikou0007"
                      sourceKind: DIPS_FPR
                      category: ORDINANCE_DESIGNATED_AREA
                      name: 条例等で定めるエリアの例（天面はAGL/WGS84の2Feature）
                      geometryType: POLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: WGS84
                      altitudeUnit: m
                      minAltitudeMAmsl: 2.7
                      maxAltitudeMAmsl: 153.9
                      minAltitudeMWgs84: 34.61
                      maxAltitudeMWgs84: 185.83
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                totalCount: 1
                truncated: false
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `validAt`と`validFrom`/`validTo`を同時指定、`validFrom`/`validTo`の片方のみ指定、等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /api/v1/geo/airspace-restriction/manned-airport/search:
    post:
      operationId: searchAirspaceRestrictionMannedAirport
      summary: 有人機離着陸エリアを検索する
      tags:
        - AirspaceRestriction
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: リクエストボディで指定した検索条件に該当する有人機離着陸エリア（`category=MANNED_AIRCRAFT_TAKEOFF_LANDING_AREA`）をGeoJSONで返す（動的配信）。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AirspaceRestrictionSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/AirspaceRestrictionFeatureCollection"
              example:
                type: FeatureCollection
                features:
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3913338, 43.1462741, 150], [141.3980462, 43.145662, 150], [141.3977371, 43.1432776, 150], [141.3908921, 43.1437931, 150], [141.3913338, 43.1462741, 150]]]
                    properties:
                      restrictionId: "0199f3a0-0008-7e4f-8a9b-0c1d2e3f4a08"
                      externalId: "20221105_FISSikou0008"
                      sourceKind: DIPS_FPR
                      category: MANNED_AIRCRAFT_TAKEOFF_LANDING_AREA
                      name: 有人機離着陸エリアの例（天面はAGL/WGS84の2Feature）
                      geometryType: POLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: AGL
                      altitudeUnit: m
                      minAltitudeMAmsl: 2.7
                      maxAltitudeMAmsl: 153.9
                      minAltitudeMWgs84: 34.61
                      maxAltitudeMWgs84: 185.83
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3913338, 43.1462741, 185.83], [141.3980462, 43.145662, 185.7], [141.3977371, 43.1432776, 184.61], [141.3908921, 43.1437931, 185.43], [141.3913338, 43.1462741, 185.83]]]
                    properties:
                      restrictionId: "0199f3a0-0008-7e4f-8a9b-0c1d2e3f4a08"
                      externalId: "20221105_FISSikou0008"
                      sourceKind: DIPS_FPR
                      category: MANNED_AIRCRAFT_TAKEOFF_LANDING_AREA
                      name: 有人機離着陸エリアの例（天面はAGL/WGS84の2Feature）
                      geometryType: POLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: WGS84
                      altitudeUnit: m
                      minAltitudeMAmsl: 2.7
                      maxAltitudeMAmsl: 153.9
                      minAltitudeMWgs84: 34.61
                      maxAltitudeMWgs84: 185.83
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                totalCount: 1
                truncated: false
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `validAt`と`validFrom`/`validTo`を同時指定、`validFrom`/`validTo`の片方のみ指定、等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /api/v1/geo/airspace-restriction/emergency/search:
    post:
      operationId: searchAirspaceRestrictionEmergency
      summary: 緊急時用務空域を検索する
      tags:
        - AirspaceRestriction
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: リクエストボディで指定した検索条件に該当する緊急時用務空域（`category=EMERGENCY_OPERATIONS_AIRSPACE`）をGeoJSONで返す（動的配信）。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AirspaceRestrictionSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/AirspaceRestrictionFeatureCollection"
              example:
                type: FeatureCollection
                features:
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3913338, 43.1462741, 150], [141.3980462, 43.145662, 150], [141.3977371, 43.1432776, 150], [141.3908921, 43.1437931, 150], [141.3913338, 43.1462741, 150]]]
                    properties:
                      restrictionId: "0199f3a0-0009-7e4f-8a9b-0c1d2e3f4a09"
                      externalId: "20221105_FISSikou0009"
                      sourceKind: DIPS_FPR
                      category: EMERGENCY_OPERATIONS_AIRSPACE
                      name: 緊急時用務空域の例（天面はAGL/WGS84の2Feature）
                      geometryType: POLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: AGL
                      altitudeUnit: m
                      minAltitudeMAmsl: 2.7
                      maxAltitudeMAmsl: 153.9
                      minAltitudeMWgs84: 34.61
                      maxAltitudeMWgs84: 185.83
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3913338, 43.1462741, 185.83], [141.3980462, 43.145662, 185.7], [141.3977371, 43.1432776, 184.61], [141.3908921, 43.1437931, 185.43], [141.3913338, 43.1462741, 185.83]]]
                    properties:
                      restrictionId: "0199f3a0-0009-7e4f-8a9b-0c1d2e3f4a09"
                      externalId: "20221105_FISSikou0009"
                      sourceKind: DIPS_FPR
                      category: EMERGENCY_OPERATIONS_AIRSPACE
                      name: 緊急時用務空域の例（天面はAGL/WGS84の2Feature）
                      geometryType: POLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: WGS84
                      altitudeUnit: m
                      minAltitudeMAmsl: 2.7
                      maxAltitudeMAmsl: 153.9
                      minAltitudeMWgs84: 34.61
                      maxAltitudeMWgs84: 185.83
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                totalCount: 1
                truncated: false
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `validAt`と`validFrom`/`validTo`を同時指定、`validFrom`/`validTo`の片方のみ指定、等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /api/v1/geo/airspace-restriction/other1/search:
    post:
      operationId: searchAirspaceRestrictionOther1
      summary: その他１の空域制限を検索する
      tags:
        - AirspaceRestriction
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: リクエストボディで指定した検索条件に該当するその他１の空域制限（`category=OTHER_1`）をGeoJSONで返す（動的配信）。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AirspaceRestrictionSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/AirspaceRestrictionFeatureCollection"
              example:
                type: FeatureCollection
                features:
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3913338, 43.1462741, 150], [141.3980462, 43.145662, 150], [141.3977371, 43.1432776, 150], [141.3908921, 43.1437931, 150], [141.3913338, 43.1462741, 150]]]
                    properties:
                      restrictionId: "0199f3a0-0000-7e4f-8a9b-0c1d2e3f4a00"
                      externalId: "20221105_FISSikou0000"
                      sourceKind: DIPS_FPR
                      category: OTHER_1
                      name: その他１の空域制限の例（天面はAGL/WGS84の2Feature）
                      geometryType: POLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: AGL
                      altitudeUnit: m
                      minAltitudeMAmsl: 2.7
                      maxAltitudeMAmsl: 153.9
                      minAltitudeMWgs84: 34.61
                      maxAltitudeMWgs84: 185.83
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3913338, 43.1462741, 185.83], [141.3980462, 43.145662, 185.7], [141.3977371, 43.1432776, 184.61], [141.3908921, 43.1437931, 185.43], [141.3913338, 43.1462741, 185.83]]]
                    properties:
                      restrictionId: "0199f3a0-0000-7e4f-8a9b-0c1d2e3f4a00"
                      externalId: "20221105_FISSikou0000"
                      sourceKind: DIPS_FPR
                      category: OTHER_1
                      name: その他１の空域制限の例（天面はAGL/WGS84の2Feature）
                      geometryType: POLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: WGS84
                      altitudeUnit: m
                      minAltitudeMAmsl: 2.7
                      maxAltitudeMAmsl: 153.9
                      minAltitudeMWgs84: 34.61
                      maxAltitudeMWgs84: 185.83
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                totalCount: 1
                truncated: false
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `validAt`と`validFrom`/`validTo`を同時指定、`validFrom`/`validTo`の片方のみ指定、等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /api/v1/geo/airspace-restriction/other2/search:
    post:
      operationId: searchAirspaceRestrictionOther2
      summary: その他２の空域制限を検索する
      tags:
        - AirspaceRestriction
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: リクエストボディで指定した検索条件に該当するその他２の空域制限（`category=OTHER_2`）をGeoJSONで返す（動的配信）。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AirspaceRestrictionSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/AirspaceRestrictionFeatureCollection"
              example:
                type: FeatureCollection
                features:
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3913338, 43.1462741, 150], [141.3980462, 43.145662, 150], [141.3977371, 43.1432776, 150], [141.3908921, 43.1437931, 150], [141.3913338, 43.1462741, 150]]]
                    properties:
                      restrictionId: "0199f3a0-0002-7e4f-8a9b-0c1d2e3f4a02"
                      externalId: "20221105_FISSikou0002"
                      sourceKind: DIPS_FPR
                      category: OTHER_2
                      name: その他２の空域制限の例（天面はAGL/WGS84の2Feature）
                      geometryType: POLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: AGL
                      altitudeUnit: m
                      minAltitudeMAmsl: 2.7
                      maxAltitudeMAmsl: 153.9
                      minAltitudeMWgs84: 34.61
                      maxAltitudeMWgs84: 185.83
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                  - type: Feature
                    geometry:
                      type: Polygon
                      coordinates: [[[141.3913338, 43.1462741, 185.83], [141.3980462, 43.145662, 185.7], [141.3977371, 43.1432776, 184.61], [141.3908921, 43.1437931, 185.43], [141.3913338, 43.1462741, 185.83]]]
                    properties:
                      restrictionId: "0199f3a0-0002-7e4f-8a9b-0c1d2e3f4a02"
                      externalId: "20221105_FISSikou0002"
                      sourceKind: DIPS_FPR
                      category: OTHER_2
                      name: その他２の空域制限の例（天面はAGL/WGS84の2Feature）
                      geometryType: POLYGON
                      minAltitudeMAgl: 0
                      maxAltitudeMAgl: 150
                      altitudeReference: WGS84
                      altitudeUnit: m
                      minAltitudeMAmsl: 2.7
                      maxAltitudeMAmsl: 153.9
                      minAltitudeMWgs84: 34.61
                      maxAltitudeMWgs84: 185.83
                      validFrom: "2022-10-01T00:00:00Z"
                      validTo: "9999-12-31T23:59:00Z"
                      status: ACTIVE
                totalCount: 1
                truncated: false
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `validAt`と`validFrom`/`validTo`を同時指定、`validFrom`/`validTo`の片方のみ指定、等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /api/v1/geo/telemetry/{flightPlanId}:
    get:
      operationId: getFlightTrajectory
      summary: 飛行軌跡（直近60秒分）を取得する
      tags:
        - Telemetry
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: >-
        指定した飛行計画IDの直近60秒分の飛行軌跡をGeoJSON LineStringで返す。
        各頂点の計測時刻は`properties.telemetryTimes`（`geometry`の頂点順と1:1対応、古い順）で提供され、
        各頂点が直近60秒以内かどうかを判定できる。
      parameters:
        - $ref: "#/components/parameters/FlightPlanIdPath"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/TelemetryTrackFeatureCollection"
              example:
                type: FeatureCollection
                features:
                  # 同一flightPlanIdに対し、Z値の基準ごとに2件返す（geometryのZ値以外は同一）
                  - type: Feature
                    geometry:
                      type: LineString
                      coordinates: [[141.3806772, 43.1430107, 100], [141.3833118, 43.1414674, 120], [141.3869668, 43.1411289, 135], [141.3919762, 43.1406145, 140], [141.3960393, 43.1403031, 150]]
                    properties:
                      flightPlanId: "a2002e22-9207-4f8f-8118-925a35e17c41"
                      uasId: "JU00012345"
                      uasNickname: "PD4B"
                      uasEntityId: "7c1e9a2b-3d4f-4b5a-8c6d-9e0f1a2b3c4d"
                      operatorId: "3f9a6b2c-8e1d-4a3b-9c5e-7d2f1b6a4e90"
                      operatorName: "サンプルドローン株式会社"
                      latestTelemetryTime: "2023-05-02T12:00:00.000Z"
                      telemetryTimes: ["2023-05-02T11:59:10.120Z", "2023-05-02T11:59:25.340Z", "2023-05-02T11:59:40.560Z", "2023-05-02T11:59:55.780Z", "2023-05-02T12:00:00.000Z"]
                      latestSpeed: 8.5
                      speedUnit: "m/s"
                      latestDirection: 45
                      directionUnit: "degree"
                      altitudeReference: AGL
                      altitudeUnit: m
                      status: ACTIVATED
                  - type: Feature
                    geometry:
                      type: LineString
                      coordinates: [[141.3806772, 43.1430107, 152.4], [141.3833118, 43.1414674, 171.8], [141.3869668, 43.1411289, 185.2], [141.3919762, 43.1406145, 189.6], [141.3960393, 43.1403031, 198.3]]
                    properties:
                      flightPlanId: "a2002e22-9207-4f8f-8118-925a35e17c41"
                      uasId: "JU00012345"
                      uasNickname: "PD4B"
                      uasEntityId: "7c1e9a2b-3d4f-4b5a-8c6d-9e0f1a2b3c4d"
                      operatorId: "3f9a6b2c-8e1d-4a3b-9c5e-7d2f1b6a4e90"
                      operatorName: "サンプルドローン株式会社"
                      latestTelemetryTime: "2023-05-02T12:00:00.000Z"
                      telemetryTimes: ["2023-05-02T11:59:10.120Z", "2023-05-02T11:59:25.340Z", "2023-05-02T11:59:40.560Z", "2023-05-02T11:59:55.780Z", "2023-05-02T12:00:00.000Z"]
                      latestSpeed: 8.5
                      speedUnit: "m/s"
                      latestDirection: 45
                      directionUnit: "degree"
                      altitudeReference: WGS84
                      altitudeUnit: m
                      status: ACTIVATED
        "400":
          description: リクエストパラメータ不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "404":
          description: >-
            指定した飛行計画が存在しない。他組織の飛行計画等、閲覧権限がない場合も同じ404を返す
            （存在するが権限がないケースと存在しないケースを区別しない。IDの存在有無が漏れることを避けるため）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

  /api/v1/geo/telemetry/position/search:
    post:
      operationId: searchFlyingDronePositions
      summary: 飛行中ドローンの位置情報一覧を検索する
      tags:
        - Telemetry
      x-ix-changes: [{ kind: added, version: "0.1.0" }]
      description: >-
        リクエストボディで指定した日時・範囲における飛行中の全ドローン（自組織・他Operatorを問わず）の位置情報を取得する
        （任意空域の状況確認用、およびSSE購読が切断された際のスナップショット取得用）。


        取得対象は`bbox`（表示範囲）と`flightPlanIds`/`uasEntityIds`（名指しした追跡対象）の和集合で決まる。
        ID指定時は`bbox`を省略でき、地図の表示範囲と無関係に特定の機体だけを取得できる。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FlyingDronePositionsSearchRequest"
      responses:
        "200":
          description: GeoJSON FeatureCollection
          content:
            application/geo+json:
              schema:
                $ref: "#/components/schemas/TelemetryPositionFeatureCollection"
        "400":
          description: リクエストボディがJSONとして不正、またはプロパティの型が不正。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"
        "422":
          description: >-
            リクエストボディの値が業務ルールに違反している（bboxが上限(幅50km・高さ50km・面積2500km²)を超える、
            `bbox`・`flightPlanIds`・`uasEntityIds`をいずれも指定していない、IDの指定件数が上限(各100件)を超える等）。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ValidationProblemDetail"
        "401":
          description: 未認証。
          content:
            application/problem+json:
              schema:
                $ref: "../problem.yaml#/components/schemas/ProblemDetail"

components:
  parameters:
    Range:
      name: Range
      in: header
      required: false
      description: >-
        取得したいバイト範囲（例: `bytes=0-16383`）。PMTilesリーダーがアーカイブのヘッダ部・該当タイルのみを
        取得する際に使用する。未指定の場合はファイル全体を返す（`200`）。指定時は該当範囲のみを`206`で返し、
        ファイルサイズを超える等の不正な範囲は`416`を返す。
      schema:
        type: string
      example: "bytes=0-16383"
    FlightPlanIdPath:
      name: flightPlanId
      in: path
      required: true
      description: 飛行計画ID
      schema:
        type: string
        format: uuid
      example: "a2002e22-9207-4f8f-8118-925a35e17c41"
    IfNoneMatch:
      name: If-None-Match
      in: header
      required: false
      description: 前回取得時の`ETag`を指定した条件付きリクエスト。アーカイブ内容（PMTilesアーカイブのバージョン）に変化がない場合は`304 Not Modified`が返る。DIDアーカイブのCDN/ブラウザキャッシュ活用を前提とした契約の一部。
      schema:
        type: string
      example: "\"a1b2c3d4e5f6\""
    BboxQuery:
      name: bbox
      in: query
      required: false
      description: >-
        表示範囲を絞り込むバウンディングボックス（`minLon,minLat,maxLon,maxLat`のカンマ区切り）。制約は`Bbox`スキーマと同じ。
        `flightPlanIds`または`uasEntityIds`を指定する場合は省略可（IDで対象を特定できるため）。
        併用した場合は和集合（`bbox`範囲内の機体 ＋ IDで名指しした機体）が対象となる。
      style: form
      explode: false
      schema:
        $ref: "#/components/schemas/Bbox"
      x-ix-changes:
        - kind: changed
          version: "0.4.0"
          note: "`flightPlanIds`/`uasEntityIds`の追加に伴い必須を解除した（ID指定時は省略可）"
    FlightPlanIdsQuery:
      name: flightPlanIds
      in: query
      required: false
      description: >-
        追跡対象の飛行計画ID（カンマ区切り）。制約は`FlightPlanIdFilter`スキーマと同じ。
        地図の表示範囲（`bbox`）の外に出た機体を追い続ける場合に指定する。
        値が空（`flightPlanIds=`）の場合は指定なしと同じ扱いとする。
      style: form
      explode: false
      schema:
        $ref: "#/components/schemas/FlightPlanIdFilter"
      x-ix-changes: [{ kind: added, version: "0.4.0" }]
    UasEntityIdsQuery:
      name: uasEntityIds
      in: query
      required: false
      description: >-
        追跡対象のUASエンティティID（カンマ区切り）。制約は`UasEntityIdFilter`スキーマと同じ。
        飛行計画をまたいで同一機体を追い続ける場合に指定する。
        値が空（`uasEntityIds=`）の場合は指定なしと同じ扱いとする。
      style: form
      explode: false
      schema:
        $ref: "#/components/schemas/UasEntityIdFilter"
      x-ix-changes: [{ kind: added, version: "0.4.0" }]

  schemas:
    Bbox:
      type: array
      description: >-
        検索範囲を表すバウンディングボックス（minLon,minLat,maxLon,maxLat、WGS84）。
        指定可能な範囲には上限があり、幅50km・高さ50km・面積2500km²のいずれかを超えるbboxは指定不可
        （リクエストボディで指定する検索系APIは`422`、クエリパラメータで指定するSSE（`GET /api/v1/geo/events/telemetry`）は`400`となる）。
        また、この上限内のbboxであっても返却件数は`limit`の上限（デフォルト1000、最大10000）を超えない
        （数える単位は`Limit`のdescriptionを参照）。
      items:
        type: number
      minItems: 4
      maxItems: 4
      example: [139.7671, 35.6812, 139.8671, 35.7812]

    Limit:
      type: integer
      description: >-
        検索系APIにて、一度に返却する件数の上限数。数える単位は各`FeatureCollection`の`totalCount`と同じ
        （飛行計画／空域制限／機体の件数）であり、1件が複数のFeatureに展開されるため`features`の要素数はこれを上回りうる。
      minimum: 1
      maximum: 10000
      default: 1000

    FlightPlanStatusFilter:
      type: array
      description: |
        運航状態でのフィルタ（指定した運航状態の飛行計画のみ取得）。
        省略時は本項目での絞り込みを行わない（すべての運航状態が対象）。

        **`DRAFT`を指定した場合、飛行計画領域の検索結果は常に0件になる。** 一時保存中（`DRAFT`）の
        飛行計画は飛行領域を正規化して保持せず、検索対象となる行が存在しないためである（データモデルは
        入力途中の全項目を`FLIGHT_PLAN_DRAFT.draft_fields`に`jsonb`でまとめて保持する）。
        値域は`FlightPlanStatus`と揃えたまま維持し、`DRAFT`を除いた独立のenumにはしない。

        **他Operatorの飛行計画領域検索（`/api/v1/geo/flight-plan-area/others/search`）では本項目による絞り込みを
        行わない。** 他Operatorの飛行計画はDIPSから収集したものであり、DIPSの飛行計画参照APIは運航状態を
        返さないため、UTM側で状態を保持していない。指定しても無視される。
      items:
        $ref: "./flight-planning.yaml#/components/schemas/FlightPlanStatus"

    FlightPlanIdFilter:
      type: array
      description: >-
        飛行計画IDでの追跡対象指定（指定した飛行計画の機体を対象に含める）。地図の表示範囲によらず特定の機体を追い続ける用途で使用する。
        `bbox`と併用した場合は和集合（`bbox`範囲内の機体 ＋ 本IDで名指しした機体）となる。


        存在しないID・飛行中でないIDを含めてもエラーにはならず、該当分が結果に現れないだけ
        （追跡対象の飛行終了によって検索やSSE接続そのものが失敗しないようにするため）。
        空配列は「本条件の指定なし」と同じ扱いとする（追跡対象が0件の状態でも同じリクエスト形を送れるようにするため。
        ただし`bbox`も指定がなければ検索は`422`、SSEは`400`となる）。
        指定件数の上限は100件（SSEではクエリパラメータとして指定するため、カンマ区切りのURL長が
        CDN/ロードバランサのURL長制限に収まる範囲に揃えている）。
      items:
        type: string
        format: uuid
      maxItems: 100
      example: ["a2002e22-9207-4f8f-8118-925a35e17c41"]

    UasEntityIdFilter:
      type: array
      description: >-
        UASエンティティID（UTM側で発行する機体のID）での追跡対象指定。飛行計画をまたいで同一機体を追い続けたい場合に
        `flightPlanIds`の代わりに使用する。それ以外の扱い（`bbox`との和集合、存在しないIDの扱い、上限100件）は
        `FlightPlanIdFilter`と同じ。
      items:
        type: string
        format: uuid
      maxItems: 100
      example: ["7c1e9a2b-3d4f-4b5a-8c6d-9e0f1a2b3c4d"]

    Position:
      type: array
      x-ix-changes:
        - kind: changed
          version: "0.11.0"
          note: "要素数を3固定から2または3へ緩めた（高度を持たない空域制限は2次元の座標を返すため。RFC 7946のpositionに合わせる）"
      description: >-
        座標点 [経度, 緯度] または [経度, 緯度, 高度]（RFC 7946のposition）。
        高度の基準は当該Featureの`properties.altitudeReference`（`AGL`または`WGS84`）に自己記述的に示される。
        高度を持たないFeatureでは`altitudeReference`も未設定となり、座標は2要素になる。
        **2要素を返すのは空域制限検索のみで、飛行計画領域検索の形状は常に3要素である。**
      minItems: 2
      maxItems: 3
      items:
        type: number
      example: [139.7671, 35.6812, 150]

    AltitudeReference:
      type: string
      description: >-
        `geometry`のZ値（高度）が準拠する高度基準を自己記述的に示すプロパティ。
        将来的に基準追加・変更がありうるため、クライアント側は本値を確認したうえでZ値を解釈することを推奨する。
      enum:
        - AGL
        - WGS84
      x-enum-descriptions:
        - 対地高度（地表面からの高さ）
        - WGS84楕円体高

    AltitudeUnit:
      type: string
      description: >-
        `geometry`のZ値が準拠する高度単位を自己記述的に示すプロパティ。現時点では`m`のみ。
        将来的に単位追加・変更がありうるため、クライアント側は本値を確認したうえで高度を解釈することを推奨する。
      enum:
        - m
      x-enum-descriptions:
        - メートル

    PointGeometry:
      type: object
      description: GeoJSON Point ジオメトリ。
      properties:
        type:
          type: string
          enum:
            - Point
        coordinates:
          $ref: "#/components/schemas/Position"
      required:
        - type
        - coordinates

    LineStringGeometry:
      type: object
      description: GeoJSON LineString ジオメトリ。
      properties:
        type:
          type: string
          example: LineString
        coordinates:
          type: array
          description: 頂点列（2点以上）。
          minItems: 2
          items:
            $ref: "#/components/schemas/Position"
          example: [[141.3806772, 43.1430107, 100], [141.3833118, 43.1414674, 120], [141.3869668, 43.1411289, 135], [141.3919762, 43.1406145, 140], [141.3960393, 43.1403031, 150]]
      required:
        - type
        - coordinates

    PolygonGeometry:
      type: object
      description: GeoJSON Polygon ジオメトリ。
      properties:
        type:
          type: string
          example: Polygon
        coordinates:
          type: array
          description: 環（リング）のリスト。先頭が外環、以降は内環（穴）。各環は始点と終点が一致する閉じた点列（4点以上）。
          minItems: 1
          items:
            type: array
            minItems: 4
            items:
              $ref: "#/components/schemas/Position"
          example: [[[141.3913338, 43.1462741, 30], [141.3980462, 43.145662, 30], [141.3977371, 43.1432776, 30], [141.3908921, 43.1437931, 30], [141.3913338, 43.1462741, 30]]]
      required:
        - type
        - coordinates

    MultiPolygonGeometry:
      type: object
      description: GeoJSON MultiPolygon ジオメトリ。空港周辺の規制空域等、単一の閉じた輪郭（穴を含む）では表現できない、互いに分離した複数のPolygonから成る形状に用いる（`geometryType=MULTIPOLYGON`に対応）。
      properties:
        type:
          type: string
          example: MultiPolygon
        coordinates:
          type: array
          description: Polygonごとの環（リング）のリストの配列。各Polygonの構造は`PolygonGeometry.coordinates`と同一（先頭が外環、以降は内環）。
          minItems: 1
          items:
            type: array
            minItems: 1
            items:
              type: array
              minItems: 4
              items:
                $ref: "#/components/schemas/Position"
          example: [[[[141.39065089462355, 43.145888400071726, 30], [141.38456291446818, 43.145888400071726, 30], [141.38456291446818, 43.144063414191265, 30], [141.39065089462355, 43.144063414191265, 30], [141.39065089462355, 43.145888400071726, 30]]], [[[141.3844213335347, 43.14774776361381, 30], [141.3874181299675, 43.14774776361381, 30], [141.3874181299675, 43.14594004982257, 30], [141.3844213335347, 43.14594004982257, 30], [141.3844213335347, 43.14774776361381, 30]]]]
      required:
        - type
        - coordinates

    AirspaceRestrictionGeometry:
      description: >-
        空域制限（AirspaceRestrictionFeature）のジオメトリ表現。`geometryType`と1対1で対応する
        （`CIRCLE`/`POLYGON`→`Polygon`、`MULTIPOLYGON`→`MultiPolygon`）。
      oneOf:
        - $ref: "#/components/schemas/PolygonGeometry"
        - $ref: "#/components/schemas/MultiPolygonGeometry"
      discriminator:
        propertyName: type
        mapping:
          Polygon: "#/components/schemas/PolygonGeometry"
          MultiPolygon: "#/components/schemas/MultiPolygonGeometry"

    Geometry:
      description: |-
        飛行計画領域（`FlightPlanAreaFeature`/`OtherFlightPlanAreaFeature`）のジオメトリ表現。
        `geometry.type`は`properties`の`dataType`と`areaType`の組み合わせで決まる。

        | `dataType` | `areaType` | `geometry.type` |
        |---|---|---|
        | `FLIGHT_PLAN` | `ROUTE` | `LineString` |
        | `FLIGHT_PLAN` | `POLYGON` / `CIRCLE` | `Polygon` |
        | `OPERATIONAL_INTENT` | `ROUTE` | `Polygon` |
        | `TOP_BOTTOM_3D` | すべて | `MultiPolygon`（`coordinates[0]`が上面、`coordinates[1]`が下面のリング） |

        **高度（Z値）**

        座標（`Position`）の3つ目の要素が準拠する高度基準は、同一Featureの`properties.altitudeReference`に従う。
        用いる対地高度は、そのリング（線・面）が天面か床面かで決まる。天面は`maxAltitudeMAgl`、床面は`minAltitudeMAgl`。
        床面を返すのは`dataType=TOP_BOTTOM_3D`の下面リングのみで、それ以外はすべて天面である。

        - `altitudeReference=AGL`: 上記の対地高度をそのままZ値とする。リングごとに全頂点が同一の値になる
        - `altitudeReference=WGS84`: 頂点ごとに `上記の対地高度 + その頂点の地表標高（ジオイド基準の標高）+ ジオイド高`
          を算出した楕円体高をZ値とする。地表が傾斜している場所では頂点ごとにZ値が異なり、地形に追従した線・面になる

        いずれの基準でも、`dataType=TOP_BOTTOM_3D`では各頂点で
        上面のZ値 − 下面のZ値 = `maxAltitudeMAgl` − `minAltitudeMAgl` が成り立つ。
        `properties`の`minAltitudeMWgs84`/`maxAltitudeMWgs84`は領域全体の代表値であり、個々の頂点のZ値と一致するとは限らない。

        **`dataType=TOP_BOTTOM_3D`の水平方向の形状**

        `areaType=ROUTE`では同一`flightPlanId`の`OPERATIONAL_INTENT`Feature（バッファ適用形状）と同一、
        `areaType=POLYGON`/`CIRCLE`では`OPERATIONAL_INTENT`が存在しないため`FLIGHT_PLAN`Feature（元の形状）と同一。
      oneOf:
        - $ref: "#/components/schemas/LineStringGeometry"
        - $ref: "#/components/schemas/PolygonGeometry"
        - $ref: "#/components/schemas/MultiPolygonGeometry"
      discriminator:
        propertyName: type
        mapping:
          LineString: "#/components/schemas/LineStringGeometry"
          Polygon: "#/components/schemas/PolygonGeometry"
          MultiPolygon: "#/components/schemas/MultiPolygonGeometry"
      # areaType=ROUTE(LineString)・areaType=ROUTEのbufferM適用形状(Polygon)・dataType=TOP_BOTTOM_3D(MultiPolygon)の例は
      # 各operationのレスポンスexample(route/polygon/circle)を参照。ここではareaType=POLYGON/CIRCLEの代表例のみを示す
      # (OAS 3.0のスキーマは単一のexampleのみ許容するため)。
      example:
        type: Polygon
        coordinates: [[[141.3913338, 43.1462741, 150], [141.3980462, 43.145662, 150], [141.3977371, 43.1432776, 150], [141.3908921, 43.1437931, 150], [141.3913338, 43.1462741, 150]]]

    FlightPlanAreaType:
      type: string
      description: 飛行領域の形状種別。同一`flightPlanId`の複数Featureで共通の値（`dataType`によらず変化しない）。
      enum:
        - POLYGON
        - ROUTE
        - CIRCLE
      x-enum-descriptions:
        - 頂点座標で直接指定した多角形の領域
        - 経路（LineString）。`bufferM`分だけ水平方向に膨らませた帯状のPolygonが飛行計画領域となる
        - 中心点（`circleCenterLng`/`circleCenterLat`）と半径（`circleRadiusM`）で指定した円の領域

    FlightPlanAreaDataType:
      type: string
      description: >-
        同一`flightPlanId`に対して返却される複数のFeatureが、それぞれどの形状を表すかを示す
        （各値の意味と返却条件は値ごとの説明を参照）。
        `altitudeReference=WGS84`のFeatureでは各面が地形に追従するため平面にはならない（`Geometry`のdescription参照）。
      enum:
        - FLIGHT_PLAN
        - OPERATIONAL_INTENT
        - TOP_BOTTOM_3D
      x-enum-descriptions:
        - フロントエンドから入力された元の形状（`areaType`によらず常に返却される）
        - 元の形状を`bufferM`分だけ水平方向に外側へ膨らませた形状（`bufferM`が設定される`areaType=ROUTE`の場合のみ返却される）
        - 3D表示補助用に上面（天井）・下面（床面）を2枚のリングで表したMultiPolygon（`areaType`によらず常に返却される）

    FlightPlanAreaSearchCommonProperties:
      type: object
      description: 飛行計画領域検索の共通検索条件（`FlightPlanAreaSearchRequest`/`OtherFlightPlanAreaSearchRequest`で共有。`flightPlanId`/`dipsFlightPlanId`は両者で意味合いが異なるため各自で定義する）。
      properties:
        bbox:
          allOf:
            - $ref: "#/components/schemas/Bbox"
          description: 検索範囲。`flightPlanId`または`dipsFlightPlanId`を指定する場合は省略可（IDで一意に特定できるため）。
        status:
          $ref: "#/components/schemas/FlightPlanStatusFilter"
        limit:
          $ref: "#/components/schemas/Limit"
        currentTime:
          type: string
          format: date-time
          description: >-
            指定時刻に有効な飛行計画のみ取得（plannedStartAt <= currentTime AND plannedEndAt >= currentTime）。
            期間で指定したい場合は`currentTimeFrom`/`currentTimeTo`を使用する（`currentTime`と同時指定はしない）。
          example: "2023-05-02T12:00:00Z"
        currentTimeFrom:
          type: string
          format: date-time
          description: >-
            指定期間内のいずれかの時点で有効な飛行計画を取得するための期間開始時刻（`currentTimeTo`と併用。片方のみの指定は不可）。
            判定は区間の重なりで行う（plannedStartAt <= currentTimeTo AND plannedEndAt >= currentTimeFrom）。
            `currentTime`（単一時点指定）とは併用しない。
          example: "2023-05-02T09:00:00Z"
        currentTimeTo:
          type: string
          format: date-time
          description: 指定期間内のいずれかの時点で有効な飛行計画を取得するための期間終了時刻（`currentTimeFrom`と併用。片方のみの指定は不可）。
          example: "2023-05-02T18:00:00Z"

    FlightPlanAreaSearchRequest:
      description: >-
        自組織の飛行計画領域の検索条件。`bbox`・`flightPlanId`・`dipsFlightPlanId`のいずれか一方の指定が必須
        （`flightPlanId`または`dipsFlightPlanId`指定時は`bbox`省略可。いずれも省略した組織内全件検索は許可しない）。
      allOf:
        - $ref: "#/components/schemas/FlightPlanAreaSearchCommonProperties"
        - type: object
          properties:
            flightPlanId:
              type: string
              format: uuid
              description: 飛行計画IDでのフィルタ（指定した飛行計画のみ取得）。指定時は`bbox`を省略可。
              example: "a2002e22-9207-4f8f-8118-925a35e17c41"
            dipsFlightPlanId:
              type: string
              description: >-
                DIPS飛行計画IDでのフィルタ（指定した飛行計画のみ取得）。UTMの`flightPlanId`（UUID）とは異なる、
                DIPSへの通報後にDIPS側で払い出される識別子形式（例: `AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001`）で検索したい場合に使用する。
                `reportStatus=REPORTED`の計画のみ本IDを持つため、未通報の計画は検索できない（通報義務の有無は問わない。`reportRequired=false`の計画も通報できる）。指定時は`bbox`を省略可。
              example: "AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001"
      anyOf:
        - required: [bbox]
        - required: [flightPlanId]
        - required: [dipsFlightPlanId]

    OtherFlightPlanAreaSearchRequest:
      description: >-
        近傍の他Operatorの飛行計画領域の検索条件。`bbox`・`flightPlanId`・`dipsFlightPlanId`のいずれか一方の指定が必須
        （`flightPlanId`または`dipsFlightPlanId`指定時は`bbox`省略可。いずれも省略した全件検索は許可しない）。
      allOf:
        - $ref: "#/components/schemas/FlightPlanAreaSearchCommonProperties"
        - type: object
          properties:
            flightPlanId:
              type: string
              format: uuid
              description: >-
                飛行計画IDでのフィルタ（指定した他Operator/他UTMの飛行計画のみ取得）。運航調整のため特定の他Operator計画を直接参照したい場合に使用する
                （近傍の他Operator計画を一覧表示するだけの用途では不要のため任意項目とする）。指定時は`bbox`を省略可。
              example: "a2002e22-9207-4f8f-8118-925a35e17c41"
            dipsFlightPlanId:
              type: string
              description: >-
                DIPS飛行計画IDでのフィルタ（指定した他Operator/他UTMの飛行計画のみ取得）。UTMの`flightPlanId`（UUID）とは異なる、
                DIPSへの通報後にDIPS側で払い出される識別子形式（例: `AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001`）で検索したい場合に使用する。指定時は`bbox`を省略可。
              example: "AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001"
      anyOf:
        - required: [bbox]
        - required: [flightPlanId]
        - required: [dipsFlightPlanId]

    FlightPlanAreaProperties:
      description: >-
        自組織の飛行計画領域のGeoJSON Featureに付随するプロパティ。`OtherFlightPlanAreaProperties`（他Operator向け、
        公開可能な最小限のプロパティ。`dipsFlightPlanId`もこちらで共通定義）に、内部ID・通報情報（`createdBy`/
        `reportRequired`/`reportStatus`/`reportExemptionReason`/`uasId`）を追加したもの。
      allOf:
        - $ref: "#/components/schemas/OtherFlightPlanAreaProperties"
        - type: object
          properties:
            createdBy:
              type: string
              format: uuid
              description: 作成者のユーザーID。
              example: b6dcd9d3-2b7d-4e0f-8a2b-1a6dfe0e6f11
            reportRequired:
              type: boolean
              description: 航空局（DIPS）への通報義務の有無。飛行領域・重量・カテゴリ等から判定され、領域・高度の変更で`true`⇄`false`に変動しうる（運航状態`status`とは直交する別軸）。
              example: true
            reportStatus:
              allOf:
                - $ref: "./flight-planning.yaml#/components/schemas/ReportStatus"
              description: >-
                DIPS通報状態。通報要否（`reportRequired`）とは独立した軸であり、`reportRequired=false`（通報不要）の計画も
                `UNREPORTED`として設定される（各状態の意味は`ReportStatus`を参照）。
            reportExemptionReason:
              type: string
              description: >-
                通報義務なし（`reportRequired=false`）の根拠。`reportRequired=true`の場合は未設定。
                例: `WEIGHT_UNDER_100G`（100g未満）、`INDOOR_ONLY`（屋内飛行のみ）。
                これらは例示であり、取りうる値の全体はデータモデル側でまだ確定していない（enum化は値が確定してから行う）。
              example: WEIGHT_UNDER_100G
            uasId:
              type: string
              format: uuid
              description: >-
                使用UASのアセットID。UASを一意に示すUTM発行のUUIDで、`TelemetryPositionProperties.uasEntityId`と同義の値
                （名称の統一は行わない方針のため、同義でも別名のままとする）。
                テレメトリの`uasId`（Remote ID由来の値。`TelemetryTrackProperties`/`TelemetryPositionProperties`）とは別物であり、
                値を直接突き合わせてはならない。
              example: d3a1e502-9d7b-4b76-8b3d-6b6a2b9f10aa
            bufferM:
              type: number
              format: double
              minimum: 0
              description: |-
                水平（lateral）方向の安全マージン幅 [m]。`areaType=ROUTE`の場合のみ設定される（描画したLineStringを
                この幅だけ外側に膨らませた帯状のPolygonで飛行計画領域が決まるため）。`areaType=POLYGON`/`CIRCLE`は
                頂点座標（または中心点・半径）で領域そのものを直接指定するため、本項目は常に未設定。

                設定時、膨らませた帯状のPolygonが、同一`flightPlanId`の追加Feature（`dataType=OPERATIONAL_INTENT`）として
                `FeatureCollection`に含まれる。`areaType`は追加Featureでも元の値のまま変化せず、高度・時刻も
                `dataType=FLIGHT_PLAN`側と変わらない。
          required:
            # 親(OtherFlightPlanAreaProperties)で必須から外したstatusを、ここで必須に戻す
            # (自組織の計画では常に設定されるため)
            - status
            - createdBy
            - reportRequired
            - reportStatus
            - uasId

    FlightPlanAreaFeature:
      type: object
      description: |-
        自組織の飛行計画領域のGeoJSON Feature。同一`flightPlanId`に対し、
        `properties.dataType`（形状の種別。詳細は`FlightPlanAreaDataType`を参照）と
        `properties.altitudeReference`（`AGL`/`WGS84`）の組み合わせごとに1件ずつ返却される。
        組み合わせ違いのFeatureは`geometry`のZ値のみが異なる。

        `FlightPlanAreaFeatureCollection.features`に含まれる件数は、同一`flightPlanId`につき
        `areaType=ROUTE`なら6件（`dataType`3種 × `altitudeReference`2種）、
        `POLYGON`/`CIRCLE`なら4件（`OPERATIONAL_INTENT`が存在しないため2種 × 2種）。
        詳細はサンプルレスポンス参照。
      properties:
        type:
          type: string
          enum:
            - Feature
        geometry:
          $ref: "#/components/schemas/Geometry"
        properties:
          $ref: "#/components/schemas/FlightPlanAreaProperties"
      required:
        - type
        - geometry
        - properties

    FlightPlanAreaFeatureCollection:
      type: object
      description: 自組織の飛行計画領域のGeoJSON FeatureCollection（0件以上のFeatureを含む）。
      properties:
        type:
          type: string
          enum:
            - FeatureCollection
        features:
          type: array
          items:
            $ref: "#/components/schemas/FlightPlanAreaFeature"
        totalCount:
          type: integer
          description: |-
            検索条件に該当した飛行計画の件数。（`features`配列の要素数ではない）

            - `truncated=true`の場合、`features`配列に含まれる飛行計画の件数 < `totalCount`となる。
          example: 1
        truncated:
          type: boolean
          description: "`totalCount`が`limit`を超え、`features`が上限で切り詰められたかどうか。trueの場合、bboxを絞る・複数回に分けて取得する等の対応が必要。"
          example: false
      required:
        - type
        - features
        - totalCount
        - truncated

    OtherFlightPlanAreaProperties:
      type: object
      x-ix-changes:
        - kind: changed
          version: "0.8.0"
          note: "`status`（運航状態）の必須を解除した（他Operatorの計画では設定されないため）"
        - kind: changed
          version: "0.9.0"
          note: "`bufferM`を削除し自組織向け（`FlightPlanAreaProperties`）へ移した（DIPSから収集した計画は経路を持たないため）"
      description: |
        他Operatorの飛行計画領域のGeoJSON Featureに付随するプロパティ。`FlightPlanAreaProperties`から公開可能な最小限のプロパティ（ID・時刻・高度・形状程度）のみを抜粋したもので、`createdBy`（作成者のユーザーID）・`uasId`（使用UASのアセットID）等、他Operatorに公開すべきでない内部IDは含まない。

        **`areaType=ROUTE`と`dataType=OPERATIONAL_INTENT`は返却されない。** 他Operatorの飛行計画はDIPSから
        収集したものであり、DIPSの飛行計画参照APIが返す形状はCircle/Polygonのみで経路（ROUTE）に相当する区分を
        持たないため、バッファ幅とその適用形状も存在しない。したがって`areaType`は`POLYGON`/`CIRCLE`、`dataType`は
        `FLIGHT_PLAN`/`TOP_BOTTOM_3D`のみを取り、Featureは同一`flightPlanId`につき最大4件になる
        （`altitudeReference=WGS84`の2件が返らない場合があることは`minAltitudeMAmsl`のdescription参照）。
        両プロパティの値域の宣言は自組織向け（`FlightPlanAreaProperties`）と共有しているため`ROUTE`・
        `OPERATIONAL_INTENT`を含むが、本スキーマでは返却されない（`allOf`で継承しているため、親側で値域を
        狭めると自組織向けからも`ROUTE`が失われる）。バッファ幅（`bufferM`）は自組織向けにのみ存在する。

        **`status`（運航状態）は設定されない。** 他Operatorの飛行計画はDIPSから収集したものであり、DIPSの
        飛行計画参照APIは運航状態を返さないため、UTM側で状態を保持しておらず、飛行時間帯からの導出も
        行わない。自組織の飛行計画（`FlightPlanAreaProperties`）では設定される。
      properties:
        flightPlanId:
          type: string
          format: uuid
          description: 飛行計画ID。
          example: a2002e22-9207-4f8f-8118-925a35e17c41
        dipsFlightPlanId:
          type: string
          description: >-
            DIPSへの通報後にDIPS側で払い出される飛行計画ID。UTMの`flightPlanId`（UUID）とは異なる識別子形式
            （例: `AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001`）。未通報の場合は未設定。
          example: "AAAAAAAAAAAAAAAAAAA.FP20221125042709013.001"
        status:
          $ref: "./flight-planning.yaml#/components/schemas/FlightPlanStatus"
        plannedStartAt:
          type: string
          format: date-time
          description: 飛行開始日時（UTC）。
          example: "2023-05-02T09:00:00Z"
        plannedEndAt:
          type: string
          format: date-time
          description: 飛行終了日時（UTC）。
          example: "2023-05-02T12:00:00Z"
        minAltitudeMAgl:
          type: number
          format: double
          description: >-
            最低対地高度 [m AGL]。`areaType=ROUTE`の場合は`0`（地表）固定となる（飛行計画全体で1つの飛行高度のみを
            入力する仕様であり、DIPS側の制約により経路の下限は常に地表として扱われるため）。`areaType=POLYGON`/`CIRCLE`は
            床面（floor）〜天井（ceiling）の高度範囲として`minAltitudeMAgl`/`maxAltitudeMAgl`が異なる値を取りうる。

            **10月デモ向け補足**: 床面（底面）の高度指定には対応せず、床面高度は地表固定とする。したがってデモの範囲では
            `areaType`によらず本項目は常に`0`となる。
          example: 150
        maxAltitudeMAgl:
          type: number
          format: double
          description: 最高対地高度 [m AGL]。`areaType=ROUTE`の場合はフロントエンドから入力される飛行計画全体の飛行高度。`areaType=POLYGON`/`CIRCLE`は天井（ceiling）の高度。
          example: 150
        altitudeReference:
          $ref: "#/components/schemas/AltitudeReference"
        altitudeUnit:
          $ref: "#/components/schemas/AltitudeUnit"
        minAltitudeMAmsl:
          type: number
          format: double
          description: >-
            最低高度 [m AMSL]（平均海面高度）。地表の標高データを用いて`minAltitudeMAgl`から換算した参考値で、領域内の全頂点における換算値の最小値
            （領域内の地表標高は一様でないため、領域全体の代表値であり個々の頂点のZ値と一致するとは限らない）。
            自組織の飛行計画（`FlightPlanAreaProperties`）は登録・更新時に地表標高データが当該地点をカバーしていない場合は
            その登録・更新自体が拒否されるため、本Featureが存在する時点で本値は常に設定済みである。他Operatorの飛行計画
            （本スキーマ。DIPSからの収集時点で換算する）は地表標高データが当該地点をカバーしていない場合、本値は未設定。
            `areaType=ROUTE`の場合、`minAltitudeMAgl`は`0`（地表）固定のため、本値は経路上の地表標高そのものに相当する。
          example: 178
        maxAltitudeMAmsl:
          type: number
          format: double
          description: >-
            最高高度 [m AMSL]（平均海面高度）。地表の標高データを用いて`maxAltitudeMAgl`から換算した参考値で、領域内の全頂点における換算値の最大値
            （領域内の地表標高は一様でないため、領域全体の代表値であり個々の頂点のZ値と一致するとは限らない）。
            自組織の飛行計画（`FlightPlanAreaProperties`）は登録・更新時に地表標高データが当該地点をカバーしていない場合は
            その登録・更新自体が拒否されるため、本Featureが存在する時点で本値は常に設定済みである。他Operatorの飛行計画
            （本スキーマ。DIPSからの収集時点で換算する）は地表標高データが当該地点をカバーしていない場合、本値は未設定。
          example: 181
        minAltitudeMWgs84:
          type: number
          format: double
          description: >-
            最低高度 [m]（WGS84楕円体高）。ジオイド高を用いて`minAltitudeMAmsl`から換算した参考値で、領域内の全頂点における換算値の最小値。
            `altitudeReference=WGS84`のFeatureの`geometry`のZ値は頂点ごとに地表標高を反映するため、本値は領域全体の代表値であり
            個々の頂点のZ値と一致するとは限らない（`Geometry`のdescription参照）。
            自組織の飛行計画（`FlightPlanAreaProperties`）は登録・更新時に地表標高データ・ジオイド高データが当該地点を
            カバーしていない場合はその登録・更新自体が拒否されるため、本Featureが存在する時点で本値は常に設定済みである。
            他Operatorの飛行計画（本スキーマ。DIPSからの収集時点で換算する）は地表標高データ・ジオイド高データが
            当該地点をカバーしていない場合、本値は未設定。
            `areaType=ROUTE`の場合、`minAltitudeMAgl`は`0`（地表）固定のため、本値は経路上の地表のWGS84楕円体高そのものに相当する。
          example: 218
        maxAltitudeMWgs84:
          type: number
          format: double
          description: >-
            最高高度 [m]（WGS84楕円体高）。ジオイド高を用いて`maxAltitudeMAmsl`から換算した参考値で、領域内の全頂点における換算値の最大値。
            `altitudeReference=WGS84`のFeatureの`geometry`のZ値は頂点ごとに地表標高を反映するため、本値は領域全体の代表値であり
            個々の頂点のZ値と一致するとは限らない（`Geometry`のdescription参照）。
            自組織の飛行計画（`FlightPlanAreaProperties`）は登録・更新時に地表標高データ・ジオイド高データが当該地点を
            カバーしていない場合はその登録・更新自体が拒否されるため、本Featureが存在する時点で本値は常に設定済みである。
            他Operatorの飛行計画（本スキーマ。DIPSからの収集時点で換算する）は地表標高データ・ジオイド高データが
            当該地点をカバーしていない場合、本値は未設定。
          example: 221
        areaType:
          $ref: "#/components/schemas/FlightPlanAreaType"
        dataType:
          $ref: "#/components/schemas/FlightPlanAreaDataType"
        circleCenterLng:
          type: number
          format: double
          description: 円の中心経度（areaType=CIRCLEの場合のみ設定）。`geometry`はCIRCLEもPolygon近似で表現するため、元の中心・半径を再現するにはこの値を使用する。
        circleCenterLat:
          type: number
          format: double
          description: 円の中心緯度（areaType=CIRCLEの場合のみ設定）。`geometry`はCIRCLEもPolygon近似で表現するため、元の中心・半径を再現するにはこの値を使用する。
        circleRadiusM:
          type: number
          format: double
          minimum: 0
          description: 円の半径 [m]（areaType=CIRCLEの場合のみ設定）。`geometry`はCIRCLEもPolygon近似で表現するため、元の中心・半径を再現するにはこの値を使用する。
      required:
        - flightPlanId
        - plannedStartAt
        - plannedEndAt
        - minAltitudeMAgl
        - maxAltitudeMAgl
        - altitudeReference
        - altitudeUnit
        - areaType
        - dataType

    OtherFlightPlanAreaFeature:
      type: object
      description: |-
        他Operatorの飛行計画領域のGeoJSON Feature。同一`flightPlanId`に対し、
        `properties.dataType`（形状の種別。詳細は`FlightPlanAreaDataType`を参照）と
        `properties.altitudeReference`（`AGL`/`WGS84`）の組み合わせごとに1件ずつ返却される。
        組み合わせ違いのFeatureは`geometry`のZ値のみが異なる。

        `OtherFlightPlanAreaFeatureCollection.features`に含まれる件数は、同一`flightPlanId`につき
        最大4件（`dataType`2種 × `altitudeReference`2種）である。

        ただし`altitudeReference=WGS84`の2件は、DIPSからの収集時点で地表標高データ（DEM）・ジオイド高
        データが当該地点をカバーしておらず高度換算できなかった場合、および`elevation.enabled=false`の
        環境では返却されない（その計画は`AGL`の2件のみになる）。自組織向け（`FlightPlanAreaFeature`）は
        換算できない場合に登録・更新自体を拒否するため、この欠落は他Operatorの計画にのみ起こる。
        欠落の有無は`totalCount`・`truncated`には現れないため、クライアントは`flightPlanId`ごとの
        Feature数を前提にせず、`properties.altitudeReference`で判別すること。

        `areaType`は`POLYGON`/`CIRCLE`のみで、`dataType=OPERATIONAL_INTENT`は存在しない
        （理由は`OtherFlightPlanAreaProperties`のdescription参照）。詳細はサンプルレスポンス参照。
      properties:
        type:
          type: string
          enum:
            - Feature
        geometry:
          $ref: "#/components/schemas/Geometry"
        properties:
          $ref: "#/components/schemas/OtherFlightPlanAreaProperties"
      required:
        - type
        - geometry
        - properties

    OtherFlightPlanAreaFeatureCollection:
      type: object
      description: 他Operatorの飛行計画領域のGeoJSON FeatureCollection（0件以上のFeatureを含む）。
      properties:
        type:
          type: string
          enum:
            - FeatureCollection
        features:
          type: array
          items:
            $ref: "#/components/schemas/OtherFlightPlanAreaFeature"
        totalCount:
          type: integer
          description: |-
            検索条件に該当した飛行計画の件数。（`features`配列の要素数ではない）

            - `truncated=true`の場合、`features`配列に含まれる飛行計画の件数 < `totalCount`となる。
          example: 1
        truncated:
          type: boolean
          description: "`totalCount`が`limit`を超え、`features`が上限で切り詰められたかどうか。trueの場合、bboxを絞る・複数回に分けて取得する等の対応が必要。"
          example: false
      required:
        - type
        - features
        - totalCount
        - truncated

    AirspaceSourceKind:
      type: string
      description: 提供元種別。
      enum:
        - DIPS_FPR
        - GSI
        - MANUAL
      x-enum-descriptions:
        - DIPS 2.0 API（FPR）の飛行禁止エリア情報取得APIから取得したもの
        - 国土地理院（GSI）提供のデータセットから取得したもの（人口集中地区が該当。静的PMTilesアーカイブとして配信するため検索対象の行としては存在しない）
        - 手動で登録したもの（登録手段・運用の詳細は未確定）

    AirspaceRestrictionType:
      $ref: "../domain.yaml#/components/schemas/AirspaceRestrictionType"

    AirspaceGeometryType:
      type: string
      description: >-
        元データの形状種別。`geometry.type`と1対1で対応する（対応関係は値ごとの説明を参照）。
      enum:
        - CIRCLE
        - POLYGON
        - MULTIPOLYGON
      x-enum-descriptions:
        - 中心点と半径で表される円。単一の連続領域のため`geometry.type`は常に`Polygon`（多角形近似）となり、元の中心・半径は`circleCenterLng`/`circleCenterLat`/`circleRadiusM`に保持される
        - 単一の閉じた輪郭（穴を含みうる）で表される領域。`geometry.type`は`Polygon`
        - 互いに分離した複数の領域から成る形状（空港周辺の規制空域等）。`geometry.type`は`MultiPolygon`

    AirspaceRestrictionStatus:
      type: string
      description: 取得元での存在状態。
      enum:
        - ACTIVE
        - DISAPPEARED
      x-enum-descriptions:
        - 取得元に存在している状態
        - 取得元の取得結果から消失した状態（論理削除。取得元に再出現した場合は`ACTIVE`に戻る）

    AirspaceRestrictionSearchRequest:
      type: object
      description: 空域制限の検索条件（`category`ごとの検索エンドポイントに共通のリクエストボディ。カテゴリ自体はエンドポイントで指定するためボディには含まない）。
      properties:
        bbox:
          $ref: "#/components/schemas/Bbox"
        status:
          allOf:
            - $ref: "#/components/schemas/AirspaceRestrictionStatus"
          default: ACTIVE
          description: >-
            取得元での存在状態でのフィルタ（指定した状態の空域制限のみ取得）。省略時は`ACTIVE`のみを対象とする
            （地図表示では現存する制限のみを見るのが通常のため）。取得元から消失した制限を見たい場合は`DISAPPEARED`を明示指定する。
        limit:
          $ref: "#/components/schemas/Limit"
        validAt:
          type: string
          format: date-time
          description: >-
            指定日時に有効な空域制限のみ取得
            （空域制限側の`AirspaceRestrictionProperties.validFrom` <= 本パラメータ AND `AirspaceRestrictionProperties.validTo` >= 本パラメータ）。
            期間で指定したい場合は`validFrom`/`validTo`を使用する（`validAt`と同時指定はしない）。
          example: "2023-05-02T12:00:00Z"
        validFrom:
          type: string
          format: date-time
          description: >-
            指定期間内のいずれかの時点で有効な空域制限を取得するための期間開始時刻（`validTo`と併用。片方のみの指定は不可）。
            判定は、空域制限側の有効期間と指定期間の重なりで行う
            （`AirspaceRestrictionProperties.validFrom` <= 指定した`validTo` AND `AirspaceRestrictionProperties.validTo` >= 指定した`validFrom`）。
            検索条件と空域制限側のプロパティが同名のため、判定式では前者を「指定した〜」、後者を`AirspaceRestrictionProperties`付きで表記している。
            `validAt`（単一時点指定）とは併用しない。
          example: "2023-05-02T12:00:00Z"
        validTo:
          type: string
          format: date-time
          description: 指定期間内のいずれかの時点で有効な空域制限を取得するための期間終了時刻（`validFrom`と併用。片方のみの指定は不可）。
          example: "2023-05-02T13:00:00Z"
      required:
        - bbox

    AirspaceRestrictionProperties:
      type: object
      description: 空域制限（DIDを除く）のGeoJSON Featureに付随するプロパティ。
      properties:
        restrictionId:
          type: string
          format: uuid
          x-ix-changes: [{ kind: changed, version: "0.10.0", note: "DIPS由来の識別子を返す形をやめ、UTMが採番した`format: uuid`へ戻した（データソースが増えても同一性の判定を1系統のIDで行うため）" }]
          description: |
            空域制限ID。**UTMが採番した識別子**を返す。データソースが増えても同一性の判定を
            1系統のIDで行えるようにするためである。取得元の識別子は`externalId`で別途参照できる。
            飛行計画APIの`AirspaceRestrictionConflict.airspaceRestrictionId`と同じ値である。
          example: "0199f3a0-1c2d-7e4f-8a9b-0c1d2e3f4a5b"
        externalId:
          type: string
          maxLength: 255
          x-ix-changes: [{ kind: added, version: "0.10.0" }]
          description: |
            **取得元における識別子**（DIPSの`flightProhibitedAreaId`。例: `"20221105_FISSikou0015"`）。
            取得元の資料と突き合わせる用途で参照できる。同一性の判定には`restrictionId`を使うこと。
            外部IDを持たないデータソースでは未設定になる（`sourceKind`が`GSI`・`MANUAL`の場合）。
            書式は取得元の仕様に依存するため`pattern`は設定しない。
          example: "20221105_FISSikou0015"
        sourceKind:
          $ref: "#/components/schemas/AirspaceSourceKind"
        category:
          allOf:
            - $ref: "#/components/schemas/AirspaceRestrictionType"
          x-ix-changes: [{ kind: changed, version: "0.10.0", note: "GeoSpatial固有の`AirspaceCategory`を廃止し、飛行計画ドメインと共有する`AirspaceRestrictionType`へ統一した（列挙値が`AIRPORT`→`AIRPORT_VICINITY`等に変わる）" }]
        name:
          type: string
          description: 名称。
          example: レッドゾーンの例
        description:
          type: string
          description: 詳細説明。未設定の場合あり。
          example: 対象エリアの詳細は関連情報URLを参照。
        infoUrl:
          type: string
          format: uri
          description: 詳細情報URL。未設定の場合あり。
          example: "https://example.com/airspace/info/20221105_FISSikou0015"
        geometryType:
          $ref: "#/components/schemas/AirspaceGeometryType"
        circleCenterLng:
          type: number
          format: double
          description: 円の中心経度（`geometryType=CIRCLE`の場合のみ設定）。`geometry`はCIRCLEもPolygon近似で表現するため、元の中心・半径を再現するにはこの値を使用する。
        circleCenterLat:
          type: number
          format: double
          description: 円の中心緯度（`geometryType=CIRCLE`の場合のみ設定）。`geometry`はCIRCLEもPolygon近似で表現するため、元の中心・半径を再現するにはこの値を使用する。
        circleRadiusM:
          type: number
          format: double
          minimum: 0
          description: 円の半径 [m]（`geometryType=CIRCLE`の場合のみ設定）。`geometry`はCIRCLEもPolygon近似で表現するため、元の中心・半径を再現するにはこの値を使用する。
        minAltitudeMAgl:
          type: number
          format: double
          x-ix-changes: [{ kind: changed, version: "0.10.0", note: "必須から外し、固定値（0mAGL）を返す形をやめて取得元が提供する値を返す形にした" }]
          description: >-
            **床面（floor）の対地高度**。取得元が提供する値を返す。
            空域制限の床面は地表として扱うため通常は`0`。取得元が高度を持たない場合、および種別により
            高度の概念がない場合（レッドゾーン・イエローゾーン等）は未設定。単位は`altitudeUnit`に従う。
          example: 0
        maxAltitudeMAgl:
          type: number
          format: double
          x-ix-changes: [{ kind: changed, version: "0.10.0", note: "必須から外し、固定値（150mAGL）を返す形をやめて取得元が提供する値を返す形にした" }]
          description: >-
            **天面（ceiling）の対地高度**。取得元が提供する値を返す。
            取得元が高度を持たない場合、および種別により高度の概念がない場合は未設定。
            空港周辺の制限表面のように天面が傾斜する領域では本値は領域全体の最大値であり、
            頂点ごとの高度は`geometry`のZ値が表す（詳細は`AirspaceRestrictionFeature`を参照）。
            単位は`altitudeUnit`に従う。
          example: 150
        altitudeReference:
          allOf:
            - $ref: "#/components/schemas/AltitudeReference"
          x-ix-changes: [{ kind: changed, version: "0.10.0", note: "必須から外した。高度の概念がない種別（レッドゾーン等）では`geometry`がZ値を持たず、基準を示す対象がないため" }]
          description: >-
            `geometry`のZ値が準拠する高度基準。`geometry`がZ値を持たない場合（高度の概念がない種別、
            および取得元が高度を提供しない場合）は未設定。
        altitudeUnit:
          allOf:
            - $ref: "#/components/schemas/AltitudeUnit"
          x-ix-changes: [{ kind: changed, version: "0.10.0", note: "必須から外した。高度をまったく持たない種別では単位を示す対象がないため" }]
          description: >-
            高度関連プロパティおよび`geometry`のZ値が準拠する単位。高度をまったく持たない場合は未設定。
        minAltitudeMAmsl:
          type: number
          format: double
          description: >-
            最低高度 [m AMSL]（平均海面高度）。地表の標高データを用いて`minAltitudeMAgl`から換算した参考値で、
            領域内の全頂点における換算値の最小値（領域全体の代表値。床面は返却しないため`geometry`のZ値には現れない）。
            地表標高データ未取得の場合は未設定。
          example: 3.1
        maxAltitudeMAmsl:
          type: number
          format: double
          description: >-
            最高高度 [m AMSL]（平均海面高度）。地表の標高データを用いて`maxAltitudeMAgl`から換算した参考値で、
            領域内の全頂点における換算値の最大値（領域全体の代表値であり、個々の頂点のZ値と一致するとは限らない）。
            地表標高データ未取得の場合は未設定。
          example: 154.2
        minAltitudeMWgs84:
          type: number
          format: double
          description: >-
            最低高度 [m]（WGS84楕円体高）。ジオイド高を用いて`minAltitudeMAmsl`から換算した参考値で、
            領域内の全頂点における換算値の最小値（領域全体の代表値。床面は返却しないため`geometry`のZ値には現れない）。
            地表標高データ未取得の場合は未設定。
          example: 35.05
        maxAltitudeMWgs84:
          type: number
          format: double
          description: >-
            最高高度 [m]（WGS84楕円体高）。ジオイド高を用いて`maxAltitudeMAmsl`から換算した参考値で、領域内の全頂点における換算値の最大値。
            `altitudeReference=WGS84`のFeatureでは、地表標高データ（GSJ統合DEM＋ジオイド高JPGEO2024）を用いて頂点ごとに地表標高を算出し、
            天面（`geometry`のZ値）を地形に追従させるため、本プロパティは領域全体の代表値であり個々の頂点のZ値と一致するとは限らない。
            地表標高データ未取得の場合は未設定。
          example: 186.15
        validFrom:
          type: string
          format: date-time
          description: 制限の有効開始日時（DIPSのstartTime、UTC正規化済みISO8601）。
          example: "2022-10-01T00:00:00Z"
        validTo:
          type: string
          format: date-time
          description: >-
            制限の有効終了日時（DIPSのfinishTime）。無期限の場合`9999-12-31T23:59:00Z`相当の値になるが、
            これは本APIが定めた規約ではなく、外部システムDIPSの`finishTime`表現をそのまま透過しているものである。
          example: "9999-12-31T23:59:00Z"
        status:
          $ref: "#/components/schemas/AirspaceRestrictionStatus"
      required:
        - restrictionId
        - sourceKind
        - category
        - name
        - geometryType
        - validFrom
        - validTo
        - status

    AirspaceRestrictionFeature:
      type: object
      x-ix-changes:
        - kind: changed
          version: "0.11.0"
          note: "同一`restrictionId`に対し常に2件返すという記述を、1件または2件へ是正した（天面がZ値を持たない行と、取得元がWGS84基準の値を持たない行では`WGS84`のFeatureを返せないため）"
      description: |-
        空域制限（DIDを除く）のGeoJSON Feature。`geometry.type`は`properties.geometryType`と1対1で対応する
        （対応関係は`AirspaceGeometryType`を参照）。

        `geometry`は3D表示補助として天面（ceiling）を表し、水平方向は元の形状のまま。
        床面（floor）は返却しないため、クライアント側で地表面に沿わせて表示する。

        天面の高度は**取得元が提供する値**に従う。天面が一様な場合は`maxAltitudeMAgl`がその高度を表す。
        空港周辺の制限表面のように傾斜した面では頂点ごとに高度が異なり、`maxAltitudeMAgl`は領域全体の
        最大値にとどまるため、頂点ごとの高度は`geometry`のZ値で表す。
        取得元が高度を持たない場合、および種別により高度の概念がない場合（レッドゾーン・イエローゾーン等）は
        `minAltitudeMAgl`/`maxAltitudeMAgl`とも未設定となり、`geometry`のZ値も持たない（2次元の座標を返す）。

        同一`restrictionId`に対し返るFeatureは**1件または2件**である。複数返る場合、異なるのは
        `geometry`のZ値と`properties.altitudeReference`だけで、水平方向の形状は基準によらず同一である。

        | 天面 | 返却されるFeature |
        |---|---|
        | Z値を持たない | 1件のみ。`altitudeReference`は未設定で、`geometry`は2次元の座標を返す |
        | Z値を持つ | `altitudeReference=AGL`が1件。取得元がWGS84基準の天面も与えている場合は`WGS84`が加わり2件になる |

        - `AGL`: 取得元が与えた対地高度をZ値とする
        - `WGS84`: 取得元が与えた楕円体高をZ値とする。地表が傾斜している場所では頂点ごとにZ値が異なり、
          地形に追従した天面になる

        **`WGS84`のFeatureが返らないことは、取得元がWGS84基準の値を持たないことを意味する。**
        応答からその理由は区別できないため、クライアントは`altitudeReference`を確認したうえでZ値を解釈すること。

        `properties`の`maxAltitudeMWgs84`は天面全体の代表値であり、個々の頂点のZ値と一致するとは限らない。
        `minAltitudeMWgs84`は返却しない床面側の値のため、`geometry`のZ値には現れない。
      properties:
        type:
          type: string
          enum:
            - Feature
        geometry:
          $ref: "#/components/schemas/AirspaceRestrictionGeometry"
        properties:
          $ref: "#/components/schemas/AirspaceRestrictionProperties"
      required:
        - type
        - geometry
        - properties

    AirspaceRestrictionFeatureCollection:
      type: object
      description: 空域制限（DIDを除く）のGeoJSON FeatureCollection（0件以上のFeatureを含む）。
      properties:
        type:
          type: string
          enum:
            - FeatureCollection
        features:
          type: array
          items:
            $ref: "#/components/schemas/AirspaceRestrictionFeature"
        totalCount:
          type: integer
          description: |-
            検索条件に該当した空域制限の件数。（`features`配列の要素数ではない）

            - `truncated=true`の場合、`features`配列に含まれる空域制限の件数 < `totalCount`となる。
          example: 1
        truncated:
          type: boolean
          description: "`totalCount`が`limit`を超え、返却される空域制限が上限で切り詰められたかどうか。trueの場合、bboxを絞る・複数回に分けて取得する等の対応が必要。"
          example: false
      required:
        - type
        - features
        - totalCount
        - truncated

    TelemetryTrackProperties:
      type: object
      description: 飛行軌跡のGeoJSON Feature（LineString）に付随するプロパティ。
      properties:
        flightPlanId:
          type: string
          format: uuid
          description: 飛行計画ID。
          example: a2002e22-9207-4f8f-8118-925a35e17c41
        uasId:
          type: string
          description: >-
            UAS ID（テレメトリ入力（ASTM F3411 Remote ID）由来の識別子。`uasRegistrationId`/`uasSerialNumber`/`uasUtmId`/
            `uasSpecificSessionId`の優先順で採用するため、いずれが入っているかは値からは判別できない）。
            表示用の識別子であり、UASを一意に指定・突合する用途には`uasEntityId`を使用する。
            飛行計画領域の`FlightPlanAreaProperties.uasId`（UTM発行のアセットID＝UUID）とは別物。
          example: JU00012345
        uasNickname:
          type: string
          description: >-
            運航者が機体に付けた名前（`ASSET.nickname`）。テレメトリ画面で機体を見分けるために表示する。
            機体を特定・突合する用途には`uasEntityId`を使用する。
          example: PD4B
          x-ix-changes: [{ kind: added, version: "0.12.0" }]
        uasEntityId:
          type: string
          format: uuid
          description: >-
            UTM側で発行するUASエンティティのID。UASを一意に示す正式なIDであり、飛行計画をまたいで同一機体の軌跡を
            突き合わせる場合はこのIDを使用する。飛行計画領域の`FlightPlanAreaProperties.uasId`（アセットID）と同義の値
            （名称の統一は行わない方針のため、同義でも別名のままとする）。
          example: 7c1e9a2b-3d4f-4b5a-8c6d-9e0f1a2b3c4d
          x-ix-changes: [{ kind: added, version: "0.5.0" }]
        operatorId:
          type: string
          description: オペレーターID。
          example: 3f9a6b2c-8e1d-4a3b-9c5e-7d2f1b6a4e90
        operatorName:
          type: string
          description: オペレーター名。
          example: サンプルドローン株式会社
        latestTelemetryTime:
          type: string
          format: date-time
          description: >-
            直近のテレメトリ時刻。`geometry`の最終頂点の計測時刻（＝`telemetryTimes`の末尾要素）と同一。
            ミリ秒（小数点以下3桁）を含むISO8601形式で返却する（高頻度データの順序性・一意性を保つため）。
          example: "2023-05-02T12:00:00.000Z"
        telemetryTimes:
          type: array
          description: >-
            `geometry`（LineString）の頂点順と1:1で対応する、各頂点のテレメトリ計測時刻（UTC）。
            頂点順＝時系列の古い順で並び、末尾要素が最新（`latestTelemetryTime`と同一時刻）。
            `latestTelemetryTime`と同様、ミリ秒（小数点以下3桁）を含むISO8601形式で返却する。
          items:
            type: string
            format: date-time
          minItems: 2
          example: ["2023-05-02T11:59:10.120Z", "2023-05-02T11:59:25.340Z", "2023-05-02T11:59:40.560Z", "2023-05-02T11:59:55.780Z", "2023-05-02T12:00:00.000Z"]
        latestSpeed:
          type: number
          format: double
          minimum: 0
          description: 直近の速度。
          example: 12.5
        speedUnit:
          type: string
          enum:
            - m/s
          description: >-
            `latestSpeed`が準拠する速度単位を自己記述的に示すプロパティ。現時点では`m/s`（メートル毎秒）のみ。
            将来的に単位追加・変更がありうるため、クライアント側は本値を確認したうえで速度を解釈することを推奨する。
        latestDirection:
          type: number
          format: double
          minimum: 0
          maximum: 360
          description: 直近の方位角（真北基準の時計回り進角）。
          example: 135.0
        directionUnit:
          type: string
          enum:
            - degree
          description: >-
            `latestDirection`が準拠する方位角単位を自己記述的に示すプロパティ。現時点では`degree`（度）のみ。
            将来的に単位追加・変更がありうるため、クライアント側は本値を確認したうえで方位角を解釈することを推奨する。
        altitudeReference:
          $ref: "#/components/schemas/AltitudeReference"
        altitudeUnit:
          $ref: "#/components/schemas/AltitudeUnit"
        status:
          $ref: "./flight-planning.yaml#/components/schemas/FlightPlanStatus"
      required:
        - flightPlanId
        - uasId
        - uasEntityId
        - operatorId
        - operatorName
        - latestTelemetryTime
        - telemetryTimes
        - latestSpeed
        - speedUnit
        - latestDirection
        - directionUnit
        - altitudeReference
        - altitudeUnit
        - status

    TelemetryTrackFeature:
      type: object
      description: 飛行軌跡のGeoJSON Feature（geometry.type = LineString、座標は[経度,緯度,高度]。高度の基準・単位は`properties.altitudeReference`/`properties.altitudeUnit`参照）。
      properties:
        type:
          type: string
          enum:
            - Feature
        geometry:
          $ref: "#/components/schemas/LineStringGeometry"
        properties:
          $ref: "#/components/schemas/TelemetryTrackProperties"
      required:
        - type
        - geometry
        - properties

    TelemetryTrackFeatureCollection:
      type: object
      description: |-
        飛行軌跡のGeoJSON FeatureCollection（0件以上のFeatureを含む）。

        同一`flightPlanId`に対し、`properties.altitudeReference`が`AGL`のFeatureと`WGS84`のFeatureを最大2件返す。
        2件は`geometry`のZ値のみが異なり、`telemetryTimes`等の他のプロパティは同一。

        - 直近60秒分の軌跡が存在しない場合は0件
        - 対地高度は地表標高データから算出する導出値のため、全頂点の対地高度が揃った場合にのみ`AGL`のFeatureを返す。
          算出できない頂点がある場合は`WGS84`の1件のみ

        パスパラメータで単一の飛行計画を指定するため、他の`FeatureCollection`が持つ`totalCount`/`truncated`は持たない。
      properties:
        type:
          type: string
          enum:
            - FeatureCollection
        features:
          type: array
          items:
            $ref: "#/components/schemas/TelemetryTrackFeature"
      required:
        - type
        - features

    FlyingDronePositionsSearchRequest:
      type: object
      x-ix-changes:
        - kind: changed
          version: "0.4.0"
          note: "`flightPlanIds`/`uasEntityIds`を追加し、ID指定時は`bbox`を省略できるよう必須を解除した"
      description: >-
        飛行中ドローンの位置情報一覧の検索条件。`bbox`・`flightPlanIds`・`uasEntityIds`のいずれか1つ以上の指定が必須
        （ID指定時は`bbox`省略可。いずれも省略した全件検索は許可しない。空配列のIDは「条件なし」と同じ扱いであり、
        `bbox`もなければ`422`）。


        `bbox`とIDを併用した場合、取得対象は和集合（`bbox`範囲内の機体 ＋ IDで名指しした機体）となる。
        SSE購読（`GET /api/v1/geo/events/telemetry`）と同じ意味論であり、接続断からの再接続時に本APIで取得する
        スナップショットが購読中のストリームと同じ集合になることを保証する。


        `status`・`currentTime`はこの和集合に対して適用される（AND）。
        特定機体の追跡目的では`status`を指定しないこと（運航状態が遷移した瞬間に追跡対象が結果から消えるため）。


        `limit`による切り詰めは`bbox`由来の機体にのみ適用し、IDで名指しした機体は常に返す
        （追跡対象が`bbox`内の機体数に押し出されて消えないようにするため）。`totalCount`は和集合の全件数、
        `truncated`は`bbox`由来分が切り詰められたかを示す。
      properties:
        bbox:
          allOf:
            - $ref: "#/components/schemas/Bbox"
          description: 検索範囲。`flightPlanIds`または`uasEntityIds`を指定する場合は省略可（IDで対象を特定できるため）。
          x-ix-changes:
            - kind: changed
              version: "0.4.0"
              note: "`flightPlanIds`/`uasEntityIds`の追加に伴い必須を解除した（ID指定時は省略可）"
        flightPlanIds:
          allOf:
            - $ref: "#/components/schemas/FlightPlanIdFilter"
          x-ix-changes: [{ kind: added, version: "0.4.0" }]
        uasEntityIds:
          allOf:
            - $ref: "#/components/schemas/UasEntityIdFilter"
          x-ix-changes: [{ kind: added, version: "0.4.0" }]
        status:
          $ref: "#/components/schemas/FlightPlanStatusFilter"
        limit:
          $ref: "#/components/schemas/Limit"
        currentTime:
          type: string
          format: date-time
          description: 指定時刻時点の位置情報を取得（telemetryTimeが指定時刻以前の直近値。未指定時は現在時刻）。
          example: "2023-05-02T12:00:00Z"
      anyOf:
        - required: [bbox]
        - required: [flightPlanIds]
        - required: [uasEntityIds]

    TelemetryPositionProperties:
      type: object
      description: |-
        飛行中ドローンの現在位置のGeoJSON Featureに付随するプロパティ。

        `geometry`のZ値は原則として対地高度（`altitudeReference=AGL`）で返す。ただし対地高度は地表標高データを
        参照して算出する導出値であり、参照に失敗した場合は当該Featureのみ`altitudeReference=WGS84`として
        `geometry`のZ値に楕円体高を入れて返す（位置情報そのものを落とさないため）。いずれの場合も、絶対高度は
        `altitudeMWgs84`から取得できる。
      properties:
        uasId:
          type: string
          description: >-
            UAS ID（テレメトリ入力（ASTM F3411 Remote ID）由来の識別子。`uasRegistrationId`/`uasSerialNumber`/`uasUtmId`/
            `uasSpecificSessionId`の優先順で採用するため、いずれが入っているかは値からは判別できない）。
            表示用の識別子であり、UASを一意に指定・突合する用途には`uasEntityId`を使用する。
            飛行計画領域の`FlightPlanAreaProperties.uasId`（UTM発行のアセットID＝UUID）とは別物。
          example: JU00012345
        uasNickname:
          type: string
          description: >-
            運航者が機体に付けた名前（`ASSET.nickname`）。テレメトリ画面で機体を見分けるために表示する。
            機体を特定・突合する用途には`uasEntityId`を使用する。
          example: PD4B
          x-ix-changes: [{ kind: added, version: "0.12.0" }]
        uasEntityId:
          type: string
          format: uuid
          description: >-
            UTM側で発行するUASエンティティのID。UASを一意に示す正式なIDであり、フロントエンドからUASを指定する場合
            （`uasEntityIds`）もこのIDを使用する。飛行計画領域の`FlightPlanAreaProperties.uasId`（アセットID）と同義の値
            （名称の統一は行わない方針のため、同義でも別名のままとする）。
          example: 7c1e9a2b-3d4f-4b5a-8c6d-9e0f1a2b3c4d
        flightPlanId:
          type: string
          format: uuid
          description: 飛行計画ID。
          example: a2002e22-9207-4f8f-8118-925a35e17c41
        operatorId:
          type: string
          description: オペレーターID。
          example: 3f9a6b2c-8e1d-4a3b-9c5e-7d2f1b6a4e90
        operatorName:
          type: string
          description: オペレーター名。
          example: サンプルドローン株式会社
        telemetryTime:
          type: string
          format: date-time
          description: テレメトリ時刻。ミリ秒（小数点以下3桁）を含むISO8601形式で返却する（高頻度データの順序性・一意性を保つため）。
          example: "2023-05-02T12:00:00.000Z"
        speed:
          type: number
          format: double
          minimum: 0
          description: 速度。
          example: 12.5
        speedUnit:
          type: string
          enum:
            - m/s
          description: >-
            `speed`が準拠する速度単位を自己記述的に示すプロパティ。現時点では`m/s`（メートル毎秒）のみ。
            将来的に単位追加・変更がありうるため、クライアント側は本値を確認したうえで速度を解釈することを推奨する。
        direction:
          type: number
          format: double
          minimum: 0
          maximum: 360
          description: 方位角（真北基準の時計回り進角）。
          example: 135.0
        directionUnit:
          type: string
          enum:
            - degree
          description: >-
            `direction`が準拠する方位角単位を自己記述的に示すプロパティ。現時点では`degree`（度）のみ。
            将来的に単位追加・変更がありうるため、クライアント側は本値を確認したうえで方位角を解釈することを推奨する。
        altitudeReference:
          $ref: "#/components/schemas/AltitudeReference"
        altitudeUnit:
          $ref: "#/components/schemas/AltitudeUnit"
        altitudeMWgs84:
          type: number
          format: double
          description: |-
            現在位置の高度 [m]（WGS84楕円体高）。テレメトリ入力（ASTM F3411 Remote ID）の測地高度そのままの実測値であり、
            地表標高データによる換算を伴わない。`altitudeReference=AGL`のとき、`geometry`のZ値（対地高度）に対応する
            絶対高度を併記する目的で提供する（3D表示や、`WGS84`基準のFeatureで提供される飛行計画領域・空域制限との
            重ね合わせに使用できる）。

            測地高度が「値なし」特殊値のテレメトリは取り込み時の入力チェックで弾かれ保持されないため、
            Featureが返る場合は常に設定される。`altitudeReference=WGS84`のFeatureでは`geometry`のZ値と同値。
          example: 152.4
          x-ix-changes: [{ kind: added, version: "0.3.0" }]
        status:
          $ref: "./flight-planning.yaml#/components/schemas/FlightPlanStatus"
      required:
        - uasId
        - uasEntityId
        - flightPlanId
        - operatorId
        - operatorName
        - telemetryTime
        - speed
        - speedUnit
        - direction
        - directionUnit
        - altitudeReference
        - altitudeUnit
        - altitudeMWgs84
        - status

    TelemetryPositionFeature:
      type: object
      description: 飛行中ドローンの現在位置のGeoJSON Feature（geometry.type = Point、座標は[経度,緯度,高度]。高度の基準・単位は`properties.altitudeReference`/`properties.altitudeUnit`参照）。
      properties:
        type:
          type: string
          enum:
            - Feature
        geometry:
          $ref: "#/components/schemas/PointGeometry"
        properties:
          $ref: "#/components/schemas/TelemetryPositionProperties"
      required:
        - type
        - geometry
        - properties

    TelemetryPositionFeatureCollection:
      type: object
      description: 飛行中ドローンの現在位置のGeoJSON FeatureCollection（0件以上のFeatureを含む）。
      properties:
        type:
          type: string
          enum:
            - FeatureCollection
        features:
          type: array
          items:
            $ref: "#/components/schemas/TelemetryPositionFeature"
        totalCount:
          type: integer
          description: |-
            検索条件に該当したドローン位置情報の件数。（`features`配列の要素数ではない）

            - `truncated=true`の場合、`features`配列に含まれるドローン位置情報の件数 < `totalCount`となる。
          example: 1
        truncated:
          type: boolean
          description: "`totalCount`が`limit`を超え、返却されるドローン位置情報が上限で切り詰められたかどうか。trueの場合、bboxを絞る・複数回に分けて取得する等の対応が必要。"
          example: false
      required:
        - type
        - features
        - totalCount
        - truncated
