openapi: '3.0.2'
info:
  title: CONTENTS 公開 API
  description: ''
  version: 2.1.0
tags:
  - name: contents-v2
  - name: contents
paths:
  /v2/{contractId}/{apiendpoint}/definition:
    get:
      summary: モデル定義取得 API
      deprecated: false
      description: コンテンツモデルの定義を取得する
      operationId: get-v2-contractId-apiendpoint-definition
      tags:
        - contents-v2
      parameters:
        - name: contractId
          in: path
          description: 契約ID
          required: true
          example: ''
          schema:
            type: string
        - name: apiendpoint
          in: path
          description: コンテンツモデルのAPIエンドポイント
          required: true
          example: ''
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  ID:
                    type: string
                    format: uuid
                    description: コンテンツモデルID
                  ApiName:
                    type: string
                    description: コンテンツ名(API名)
                  Fields:
                    description: コンテンツモデルに含まれるフィールドリスト
                    type: array
                    items:
                      type: object
                      properties:
                        ID:
                          type: string
                          format: uuid
                          description: フィールド ID
                        FieldType:
                          type: string
                          enum:
                            - Text
                            - Textarea
                            - Editor
                            - Number
                            - Counter
                            - Datetime
                            - Checkbox
                            - Radio
                            - Dropdown
                            - Toggle
                            - Picture
                            - PhoneNumber
                            - Address
                            - Reference
                            - MultiReference
                          description: |-
                            フィールドの種類

                            - `Text`: テキスト（1行）
                            - `Textarea`: テキストエリア
                            - `Editor`: リッチエディター
                            - `Number`: 数値
                            - `Counter`: カウンター
                            - `Datetime`: 日時
                            - `Checkbox`: チェックボックス
                            - `Radio`: ラジオボタン
                            - `Dropdown`: ドロップダウン
                            - `Toggle`: トグルスイッチ
                            - `Picture`: 画像
                            - `PhoneNumber`: 電話番号（3分割）
                            - `Address`: 住所入力
                            - `Reference`: コンテンツ参照
                            - `MultiReference`: 複数コンテンツ参照
                        FieldName:
                          type: string
                          description: 項目名
                        FieldID:
                          type: string
                          description: 項目識別子
                        Sortable:
                          type: boolean
                          description: ソート可能フィールドか
                        EnableAggregate:
                          type: boolean
                          description: 集約可能フィールドか
                        Description:
                          type: string
                          description: 説明文
                        Items:
                          type: array
                          description: |-
                            選択肢の一覧

                            フィールドが「チェックボックス」「ラジオボタン」「ドロップダウン」の場合のみ
                          items:
                            type: object
                            properties:
                              ID:
                                type: string
                                format: uuid
                                description: 選択肢 ID
                              Label:
                                type: string
                                description: 選択肢
                            required:
                              - ID
                              - Label
                        Reference:
                          type: object
                          format: uuid
                          description: |-
                            参照先詳細

                            フィールドが「コンテンツ参照」「複数コンテンツ参照」の場合のみ
                          properties:
                            ApiEndpoint:
                              type: string
                              description: API エンドポイント
                            FieldID:
                              type: string
                              description: フィールド ID
                          required:
                            - ApiEndpoint
                            - FieldID
                        ValidFilterOperators:
                          type: array
                          description: |-
                            Filter クエリで利用可能な演算子の一覧
                          items:
                            type: string
                            enum:
                              - equals
                              - starts_with
                              - contains
                              - all_of
                              - any_of
                              - between
                            description: 演算子
                      required:
                        - ID
                        - FieldType
                        - FieldName
                        - FieldID
                        - Sortable
                        - EnableAggregate
                        - ValidFilterOperators
                required:
                  - ID
                  - ApiName
                  - Fields
              examples:
                '1':
                  summary: 成功例
                  value:
                    ID: a3f0bebb-f6b6-4df5-b3b5-1fdf68b7e1a0
                    ApiName: example-api
                    Fields:
                      - ID: c33e6d65-fb82-4c5e-bf22-94871dcd0176
                        FieldType: Text
                        FieldName: Text-name
                        FieldID: Text-id
                        Sortable: true
                        EnableAggregate: true
                        Description: Text description
                        ValidFilterOperators:
                          - equals
                          - starts_with
                          - contains
                      - ID: 3b82a3e4-fb32-40d5-94d8-b4ac37047e1a
                        FieldType: Textarea
                        FieldName: Textarea-name
                        FieldID: Textarea-id
                        Sortable: true
                        EnableAggregate: false
                        Description: Textarea description
                        ValidFilterOperators: []
                      - ID: 8d2a982f-0b45-4054-b35c-f2cbf2b5b1a6
                        FieldType: Editor
                        FieldName: Editor-name
                        FieldID: Editor-id
                        Sortable: false
                        EnableAggregate: false
                        Description: Editor description
                        ValidFilterOperators: []
                      - ID: c9e3fb59-5d87-47c3-bd39-4a730ec55506
                        FieldType: Number
                        FieldName: Number-name
                        FieldID: Number-id
                        Sortable: true
                        EnableAggregate: true
                        Description: Number description
                        ValidFilterOperators:
                          - equals
                          - between
                      - ID: eb9070cc-53c6-495a-9b84-1a0cc08beb70
                        FieldType: Counter
                        FieldName: Counter-name
                        FieldID: Counter-id
                        Sortable: true
                        EnableAggregate: false
                        Description: Counter description
                        ValidFilterOperators:
                          - equals
                          - between
                      - ID: d7d9ab7d-01c2-4878-bb5f-8dc69e5c8330
                        FieldType: Picture
                        FieldName: Picture-name
                        FieldID: Picture-id
                        Sortable: false
                        EnableAggregate: false
                        Description: Picture description
                        ValidFilterOperators: []
                      - ID: 0b1b7f96-ea85-4c94-b881-2185e196a9b0
                        FieldType: Checkbox
                        FieldName: Checkbox-name
                        FieldID: Checkbox-id
                        Sortable: false
                        EnableAggregate: true
                        Description: Checkbox description
                        Items:
                          - ID: 755ff607-5fd8-4e67-a8c8-64cbfb64a431
                            Label: Option1
                          - ID: a6a6b0a0-ead1-429d-b1c5-4f804bc44683
                            Label: Option2
                          - ID: fabe36c1-1d93-4f80-bb8d-ea2a8a1f3fa4
                            Label: Option3
                        ValidFilterOperators:
                          - all_of
                          - any_of
                      - ID: 2a88c20b-08bc-49f7-ae1d-263e4b1f18c3
                        FieldType: Radio
                        FieldName: Radio-name
                        FieldID: Radio-id
                        Sortable: true
                        EnableAggregate: true
                        Description: Radio description
                        Items:
                          - ID: 78e27d2f-0b61-4e21-99d6-47c1f6c5ae6b
                            Label: Option1
                          - ID: f8228b99-12da-4ef0-84be-cf7081cfb09d
                            Label: Option2
                          - ID: 70c9db4b-3ad0-40d6-bf10-6814c5c7ae65
                            Label: Option3
                        ValidFilterOperators:
                          - equals
                      - ID: 9e1e3f5b-3288-4ff4-a5de-39a2ff2bfc71
                        FieldType: Dropdown
                        FieldName: Dropdown-name
                        FieldID: Dropdown-id
                        Sortable: false
                        EnableAggregate: true
                        Description: Dropdown description
                        Items:
                          - ID: da3dfb61-10ed-482f-98b1-536f18f9abcb
                            Label: Option1
                          - ID: ef44a84c-61ad-4b63-b3f1-9d728b6c17d2
                            Label: Option2
                          - ID: e14ebf1d-3073-44a8-9be7-bf1936171c80
                            Label: Option3
                        ValidFilterOperators:
                          - all_of
                          - any_of
                      - ID: f5c769f0-3f37-4b62-b845-2709a1a7273a
                        FieldType: Toggle
                        FieldName: Toggle-name
                        FieldID: Toggle-id
                        Sortable: true
                        EnableAggregate: true
                        Description: Toggle description
                        ValidFilterOperators:
                          - equals
                      - ID: aa3d1f17-23d4-45e6-8c60-bfa6483d5e5f
                        FieldType: PhoneNumber
                        FieldName: PhoneNumber-name
                        FieldID: PhoneNumber-id
                        Sortable: true
                        EnableAggregate: false
                        Description: PhoneNumber description
                        ValidFilterOperators:
                          - equals
                      - ID: d053b0c1-8dd4-46e6-89f0-e0b2a35f2825
                        FieldType: Address
                        FieldName: Address-name
                        FieldID: Address-id
                        Sortable: false
                        EnableAggregate: true
                        Description: Address description
                        ValidFilterOperators:
                          - equals
                      - ID: 0d9b22c8-5b39-4dbd-a1c8-fd78e78117a0
                        FieldType: Datetime
                        FieldName: Datetime-name
                        FieldID: Datetime-id
                        Sortable: true
                        EnableAggregate: true
                        Description: Datetime description
                        ValidFilterOperators:
                          - equals
                          - between
                      - ID: be8f6b4b-32d8-4c8f-bd75-43c29eb9b96d
                        FieldType: Reference
                        FieldName: Reference-name
                        FieldID: Reference-id
                        Sortable: true
                        EnableAggregate: true
                        Description: Reference description
                        Reference:
                          ApiEndpoint: example-api-ref
                          FieldID: Text-id-ref
                        ValidFilterOperators:
                          - equals
                      - ID: cd6246e1-58d0-4e3e-bae8-d2cc3b126d48
                        FieldType: MultiReference
                        FieldName: MultiReference-name
                        FieldID: MultiReference-id
                        Sortable: true
                        EnableAggregate: true
                        Description: MultiReference description
                        Reference:
                          ApiEndpoint: example-api-ref
                          FieldID: Text-id-ref
                        ValidFilterOperators:
                          - all_of
                          - any_of
        '400':
          description: Bad Request
          content:
            application/json:
              schema: &ref_0
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '1':
                  summary: 異常例_契約IDが未指定
                  value:
                    message: '''contractId'' is required.'
                '2':
                  summary: 異常例_APIエンドポイントが未指定
                  value:
                    message: '''apiendpoint'' is required.'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              examples:
                '1':
                  summary: データが存在しない
                  value:
                    message: NOT_FOUND
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              examples:
                '1':
                  summary: 異常例_サーバーエラーが発生
                  value:
                    message: An unexpected error has occurred
      security: []
  /{contractId}/{apiendpoint}:
    get:
      summary: コンテンツ一覧
      deprecated: true
      description: コンテンツ一覧を取得
      operationId: getContents
      tags:
        - contents
      parameters:
        - name: contractId
          in: path
          description: 契約ID
          required: true
          schema:
            type: string
            format: uuid
        - name: apiendpoint
          in: path
          description: 管理画面で作成したAPIのエンドポイント
          required: true
          example: 'artwork'
          schema:
            type: string
        - name: Offset
          in: query
          description: |
            一覧取得のページング時のオフセット。指定した場合、指定された数値から `PerPage` で指定された件数分だけデータを取得する

            `Page` と `Offset` の両方を指定した場合、 `Offset` が優先して使用される
          required: false
          schema:
            type: integer
            default: 0
        - name: Page
          in: query
          description: |
            一覧取得のページング時のページ番号。指定した場合、 `PerPage` で指定した値から自動で `Offset` を計算する
          required: false
          schema:
            type: integer
            default: 0
            minimum: 0
        - name: PerPage
          in: query
          description: |
            一覧取得時のページあたり件数指定

            最大値は100
          required: false
          schema:
            type: integer
            default: 20
            minimum: 1
            maximum: 200
        - name: Sort
          in: query
          description: |
            ソート項目

            ソート項目が複数の場合、カンマ区切りで複数指定可

            例: `UpdatedAt,CreatedAt,YourCustomItemName`

            コンテンツモデルに含まれる「テキスト項目」の「項目識別子」は管理画面でソート可能な項目のみ有効
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - ID
                - SortOrder
                - UpdatedAt
                - CreatedAt
                - PublishedStartTime
                - PublishedEndTime
                - コンテンツモデルに含まれる「テキスト項目」の「項目識別子」(※管理画面でソート可能な項目のみ指定可能)
            default:
              - UpdatedAt
        - name: Orders
          in: query
          description: |
            ソートの昇順/降順

            ソート項目が複数の場合、カンマ区切りで複数指定可

            例 (`Sort` に 3 項目指定する場合): `desc,asc,desc`

            ソートと項目数が合わない場合はdefault値のdescが適用される
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - asc
                - desc
            default:
              - desc
        - name: ContentIDs
          in: query
          description: >
            コンテンツIDで絞り込み(カンマ区切りで複数指定可)


            例:
            `a873a527-0c04-4a67-837b-23d389f6434e,37943cc8-e7b4-4af8-bd16-bf62e5d791a2,f35968ae-d46f-4e08-9f09-cdc14a253e31`
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
            example:
              - a873a527-0c04-4a67-837b-23d389f6434e
              - 37943cc8-e7b4-4af8-bd16-bf62e5d791a2
              - f35968ae-d46f-4e08-9f09-cdc14a253e31
        - name: Q
          in: query
          description: |
            ワイルドカード検索キーワード

            複数項目を半角スペース区切りで指定することにより、 AND 検索が可能(コンテンツ参照は UUID でのみ指定可能)

            例: `雪晴 日本橋 71e40c3c-e989-4220-81de-5191b7dad329`
          required: false
          example:
            - 雪晴
            - 日本橋
            - 71e40c3c-e989-4220-81de-5191b7dad329
          schema:
            type: array
            items:
              type: string
        - name: OQ
          in: query
          description: |
            ワイルドカード検索キーワード

            複数項目を半角スペース区切りで指定することにより、 OR 検索が可能(コンテンツ参照は UUID でのみ指定可能)

            例: `日本橋雪晴 霞がせき 71e40c3c-e989-4220-81de-5191b7dad329`
          required: false
          example:
            - 日本橋雪晴
            - 霞がせき
            - 71e40c3c-e989-4220-81de-5191b7dad329
          schema:
            type: array
            items:
              type: string
        - name: EXC
          in: query
          description: |
            除外キーワード

            複数項目を半角スペース区切りで指定することにより、 AND で除外が可能(コンテンツ参照は UUID でのみ指定可能)

            例: `霞がせき 江戸日本橋 71e40c3c-e989-4220-81de-5191b7dad329`
          required: false
          example:
            - 霞がせき
            - 江戸日本橋
            - 71e40c3c-e989-4220-81de-5191b7dad329
          schema:
            type: array
            items:
              type: string
        - name: EQ
          in: query
          description: |
            完全一致検索キーワード

            コンテンツ参照はUUIDでのみ検索可能
          required: false
          schema:
            type: string
            example: 日本橋雪晴
      responses:
        '200':
          description: コンテンツ一覧の取得に成功
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentsList'
        '400':
          description: リクエストが正しくない
          content:
            application/json:
              schema: *ref_0
        '500':
          description: システムエラー
          content:
            application/json:
              schema: *ref_0
      security: []
  /v2/{contractId}/{apiendpoint}/search:
    get:
      summary: コンテンツ検索 API
      deprecated: false
      description: コンテンツを検索する
      operationId: get-v2-contractId-apiendpoint-search
      tags:
        - contents-v2
      parameters:
        - name: contractId
          in: path
          description: 契約ID
          required: true
          example: ''
          schema:
            type: string
            format: uuid
        - name: apiendpoint
          in: path
          description: コンテンツモデルのAPIエンドポイント
          required: true
          example: ''
          schema:
            type: string
        - name: PerPage
          in: query
          description: 取得件数
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
        - name: Page
          in: query
          description: ページ番号
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: FullTextQuery
          in: query
          description: 「Schemas」>「SearchFullTextQuery」のスキーマを URL エンコードした文字列
          required: false
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchFullTextQuery"
        - name: Filter
          in: query
          description: 「Schemas」>「Filter」のスキーマを URL エンコードした文字列
          required: false
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Filter"
        - name: Operator
          in: query
          description: |
            FullTextQuery, Filter を両方指定した場合の結合条件

            - `and`: and検索
            - `or`: or検索
          required: false
          schema:
            type: string
            enum:
              - and
              - or
            default: and
        - name: Sort
          in: query
          description: |-
            「Schemas」>「SearchSort」のスキーマを URL エンコードした文字列

            Sort を指定しない場合の挙動は以下の通り
              - FullTextQuery, Filter のいずれかが指定されている場合: 関連度が高い順
              - FullTextQuery, Filter の両方が指定されていない場合: UpdatedAt の降順 > ID 昇順
          required: false
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchSort"
      responses:
        '200':
          description: 成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  TotalCount:
                    type: integer
                    description: 検索条件にヒットした総件数
                  PerPage:
                    type: integer
                    description: ページ当たりの件数
                  Page:
                    type: integer
                    description: ページ番号
                  Contents:
                    type: array
                    items:
                      $ref: '#/components/schemas/ContentV2'
                required:
                  - TotalCount
                  - PerPage
                  - Page
                  - Contents
              examples:
                '1':
                  summary: 成功例
                  value:
                    TotalCount: 10
                    PerPage: 1
                    Page: 3
                    Contents:
                      - UUID: 79e70e58-8214-13be-b21b-55852b58dda9
                        ID: example-contents
                        CreatedAt: '2024-05-26T16:50:35Z'
                        UpdatedAt: '2024-05-26T02:30:06Z'
                        FieldValues:
                          Text-id: Text-value
                          Textarea-id: Textarea-value
                          Editor-id: Editor-value
                          Number-id:
                            Prefix: NumPrefix
                            Suffix: NumSuffix
                            Value: 123.45
                          Counter-id:
                            Prefix: NumPrefix
                            Suffix: NumSuffix
                            Value: 123
                          Picture-id:
                            URL: https://example.com/path/to/image
                            Alt: example-alt
                            Caption: example-caption
                          Checkbox-id:
                            - Option1
                            - Option2
                          Radio-id: Option1
                          Dropdown-id:
                            - Option1
                            - Option2
                          Toggle-id: true
                          PhoneNumber-id:
                            - '03'
                            - '1234'
                            - '5678'
                          Address-id:
                            ZipCode: 100-0001
                            Prefecture: 東京都
                            Municipality: 千代田区千代田
                            StreetNumber: 1-1
                            BuildingName: ''
                          Datetime-id: '2024-05-26T16:50:35Z'
                          Reference-id:
                            ApiEndpoint: 'reference-model-apiendpoint'
                            ID: ed831ecf-7b0d-404a-9712-4c8970a036f6
                            DisplayValue: 'reference-content-display-value'
                          MultiReference-id:
                            -
                              ApiEndpoint: 'reference-model-apiendpoint'
                              ID: 5eb3493a-3ce1-4508-a2d9-b94095d5bd1b
                              DisplayValue: 'reference-content-display-value'
        '400':
          description: Bad Request
          content:
            application/json:
              schema: *ref_0
              examples:
                '1':
                  summary: 異常例_契約IDが未指定
                  value:
                    message: '''contractId'' is required.'
                '2':
                  summary: 異常例_APIエンドポイントが未指定
                  value:
                    message: '''apiendpoint'' is required.'
                '3':
                  summary: 異常例_検索値の指定が正しくない
                  value:
                    error:
                      message: ValidationErrors
                      errors:
                        - tag:    "required"
                          field:  "FullTextQuery.Keywords"
                          detail: "'FullTextQuery.Keywords' is required."
                        - tag:    "filter_validate"
                          field:  "Filter.Conditions[0]"
                          detail: "The value of 'Filter.Conditions[0]' violates validation rules."
                '4':
                  summary: 異常例_使用できない演算子が指定された
                  value:
                    error:
                      message: ValidationErrors
                      errors:
                        - tag:    "oneof"
                          field:  "FullTextQuery.Operator"
                          detail: "'FullTextQuery.Operator' must be one of the permitted values."
                        - tag:    "oneof"
                          field:  "Filter.Operator"
                          detail: "'Filter.Operator' must be one of the permitted values."
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              examples:
                '1':
                  summary: データが存在しない
                  value:
                    message: NOT_FOUND
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              examples:
                '1':
                  summary: 異常例_サーバーエラーが発生
                  value:
                    message: An unexpected error has occurred
      security: []
  /{contractId}/{apiendpoint}/{contentId}:
    get:
      summary: コンテンツ一件取得
      deprecated: true
      description: コンテンツを ID 指定で取得する
      operationId: getContent
      tags:
        - contents
      parameters:
        - name: contractId
          in: path
          description: 契約ID
          required: true
          schema:
            type: string
            format: uuid
        - name: apiendpoint
          in: path
          description: コンテンツモデルのAPIエンドポイント
          required: true
          example: ''
          schema:
            type: string
            example: artwork
        - name: contentId
          in: path
          description: コンテンツのID
          required: true
          schema:
            type: string
        - name: PreviewKey
          in: query
          description: |
            プレビュー用のキー

            管理画面で取得したプレビューキーをここで指定することで、非公開データを表示することができる

            公開データに対して指定した場合は、何も起こらない。
          required: false
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: コンテンツの取得に成功
          content:
            application/json:
              schema: &ref_1
                $ref: '#/components/schemas/Content'
        '400':
          description: リクエストが正しくない
          content:
            application/json:
              schema: *ref_0
        '404':
          description: リソースが存在しない
          content:
            application/json:
              schema: *ref_0
        '500':
          description: システムエラー
          content:
            application/json:
              schema: *ref_0
      security: []
  /v2/{contractId}/{apiendpoint}/{contentId}:
    get:
      summary: コンテンツ詳細 API
      deprecated: false
      description: コンテンツをID指定で取得する
      tags:
        - contents-v2
      parameters:
        - name: contractId
          in: path
          description: 契約ID
          required: true
          schema:
            type: string
            format: uuid
        - name: apiendpoint
          in: path
          description: コンテンツモデルのAPIエンドポイント
          required: true
          schema:
            type: string
        - name: contentId
          in: path
          description: コンテンツのID
          required: true
          schema:
            type: string
        - name: PreviewKey
          in: header
          description: 非公開コンテンツに対して発行されるプレビューキー
          required: false
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: 成功
          content:
            application/json:
              schema:
                  $ref: '#/components/schemas/ContentV2'
              examples:
                '1':
                  summary: 成功例
                  value:
                    UUID: 79e70e58-8214-13be-b21b-55852b58dda9
                    ID: example-contents
                    CreatedAt: '2024-05-26T16:50:35Z'
                    UpdatedAt: '2024-05-26T02:30:06Z'
                    FieldValues:
                      Text-id: Text-value
                      Textarea-id: Textarea-value
                      Editor-id: Editor-value
                      Number-id:
                        Prefix: NumPrefix
                        Suffix: NumSuffix
                        Value: 123.45
                      Counter-id:
                        Prefix: NumPrefix
                        Suffix: NumSuffix
                        Value: 123
                      Picture-id:
                        URL: https://example.com/path/to/image
                        Alt: example-alt
                        Caption: example-caption
                      Checkbox-id:
                        - Option1
                        - Option2
                      Radio-id: Option1
                      Dropdown-id:
                        - Option1
                        - Option2
                      Toggle-id: true
                      PhoneNumber-id:
                        - '03'
                        - '1234'
                        - '5678'
                      Address-id:
                        ZipCode: 100-0001
                        Prefecture: 東京都
                        Municipality: 千代田区千代田
                        StreetNumber: 1-1
                        BuildingName: ''
                      Datetime-id: '2024-05-26T16:50:35Z'
                      Reference-id:
                        ApiEndpoint: 'reference-model-apiendpoint'
                        ID: ed831ecf-7b0d-404a-9712-4c8970a036f6
                        DisplayValue: 'reference-content-display-value'
                      MultiReference-id:
                        -
                          ApiEndpoint: 'reference-model-apiendpoint'
                          ID: 5eb3493a-3ce1-4508-a2d9-b94095d5bd1b
                          DisplayValue: 'reference-content-display-value'
        '400':
          description: Bad Request
          content:
            application/json:
              schema: *ref_0
              examples:
                '1':
                  summary: 異常例_契約IDが未指定
                  value:
                    message: '''contractId'' is required.'
                '2':
                  summary: 異常例_APIエンドポイントが未指定
                  value:
                    message: '''apiendpoint'' is required.'
                '3':
                  summary: 異常例_コンテンツIDが未指定
                  value:
                    message: '''contentId'' is required.'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              examples:
                '1':
                  summary: データが存在しない
                  value:
                    message: NOT_FOUND
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              examples:
                '1':
                  summary: 異常例_サーバーエラーが発生
                  value:
                    message: An unexpected error has occurred
      security: []
  /v2/{contractId}/{apiendpoint}/aggs:
    get:
      summary: コンテンツ集計 API
      deprecated: false
      description: |
        フィールド毎の値を集約した結果を取得する。

        - 取得上限はフィールド毎に上位 100 件
        - ただし日時フィールドについては上限無し
      tags:
        - contents-v2
      parameters:
        - name: contractId
          in: path
          description: 契約ID
          required: true
          schema:
            type: string
            format: uuid
        - name: apiendpoint
          in: path
          description: コンテンツモデルのAPIエンドポイント
          required: true
          schema:
            type: string
        - name: FullTextQuery
          in: query
          description: 「Schemas」>「SearchFullTextQuery」のスキーマを URL エンコードした文字列
          required: false
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchFullTextQuery"
        - name: Filter
          in: query
          description: 「Schemas」>「Filter」のスキーマを URL エンコードした文字列
          required: false
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Filter"
        - name: Operator
          in: query
          description: |
            FullTextQuery, Filter を両方指定した場合の結合条件

            - `and`: and検索
            - `or`: or検索
          required: false
          schema:
            type: string
            enum:
              - and
              - or
            default: and
      responses:
        '200':
          description: 成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  Result:
                    type: object
                    description: 集約対象のフィールド識別子
                    properties: {}
                    additionalProperties:
                      type: object
                      description: フィールドの値
                      properties: {}
                      additionalProperties:
                        type: integer
                        description: 値毎の件数
                required:
                  - Result
              examples:
                '1':
                  summary: 成功例
                  value:
                    Result:
                      TextFieldId-1:
                        value-1: 5
                        value-2: 6
                        value-3: 10
                      TextFieldId-2:
                        value-21: 5
                        value-22: 6
                        value-23: 10
                      DatetimeFieldId-1:
                        '2024-05-01': 5
                        '2024-05-02': 10
                        '2024-05-03': 6
                        '2024-05-04': 11
                        '2024-05-05': 10
                        '2024-05-06': 8
                        '2024-05-07': 7
                        '2024-05-08': 6
                        '2024-05-09': 5
                        '2024-05-10': 5
                      NumberFieldId-1:
                        '1': 5
                        '2': 7
                        '1.5': 8
                      ToggleFieldId-1:
                        'true': 1
                        'false': 2
                      ReferenceFieldId-1:
                        '00000000-0000-4000-a000-000000000001': 1
                        '00000000-0000-4000-a000-000000000002': 2
                        '00000000-0000-4000-a000-000000000003': 3
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties: {}
              examples:
                '1':
                  summary: 異常例_契約IDが未指定 {
                  value:
                    message: '''contractId'' is required.'
                '2':
                  summary: 異常例_APIエンドポイントが未指定
                  value:
                    message: '''apiendpoint'' is required.'
                '3':
                  summary: 異常例_検索値の指定が正しくない
                  value:
                    error:
                      message: ValidationErrors
                      errors:
                        - tag:    "required"
                          field:  "FullTextQuery.Keywords"
                          detail: "'FullTextQuery.Keywords' is required."
                        - tag:    "filter_validate"
                          field:  "Filter.Conditions[0]"
                          detail: "The value of 'Filter.Conditions[0]' violates validation rules"
                '4':
                  summary: 異常例_使用できない演算子が指定された
                  value:
                    error:
                      message: ValidationErrors
                      errors:
                        - tag:    "oneof"
                          field:  "FullTextQuery.Operator"
                          detail: "'FullTextQuery.Operator' must be one of the permitted values"
                        - tag:    "oneof"
                          field:  "Filter.Operator"
                          detail: "'Filter.Operator' must be one of the permitted values"
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              examples:
                '1':
                  summary: データが存在しない
                  value:
                    message: NOT_FOUND
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              examples:
                '1':
                  summary: 異常例_サーバーエラーが発生
                  value:
                    message: An unexpected error has occurred
      security: []
  /v2/{contractId}/{apiendpoint}/{contentId}/{fieldId}/count:
    post:
      summary: カウント API
      deprecated: false
      description: コンテンツのカウントを更新する
      tags:
        - contents-v2
      parameters:
        - name: contractId
          in: path
          description: 契約ID
          required: true
          schema:
            type: string
            format: uuid
        - name: apiendpoint
          in: path
          description: コンテンツモデルのAPIエンドポイント
          required: true
          schema:
            type: string
        - name: contentId
          in: path
          description: コンテンツのID
          required: true
          schema:
            type: string
        - name: fieldId
          in: path
          description: カウンターフィールドの項目識別子
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                Value:
                  type: integer
                  description: 加算する数値。負数を指定した場合は減算となる
                  example: 123
              required:
                - Value
      responses:
        '200':
          description: 成功
          content:
            application/json:
              schema:
                type: object
                description: 加算後の「カウンター」のフィールド情報
                properties:
                  Prefix:
                    type: string
                    description: プレフィックス
                  Suffix:
                    type: string
                    description: サフィックス
                  Value:
                    type: integer
                    description: 値
                required:
                  - Prefix
                  - Suffix
                  - Value
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '1':
                  summary: 異常例_契約IDが未指定
                  value:
                    message: '''contractId'' is required.'
                '2':
                  summary: 異常例_APIエンドポイントが未指定
                  value:
                    message: '''apiendpoint'' is required.'
                '3':
                  summary: 異常例_コンテンツIDが未指定
                  value:
                    message: '''contentId'' is required.'
                '4':
                  summary: 異常例_カウンターフィールドの項目識別子が未指定
                  value:
                    message: '''fieldId'' is required.'
                '5':
                  summary: 異常例_加算する数値が未指定
                  value:
                    error:
                      message: ValidationErrors
                      errors:
                        - tag:    "required"
                          field:  "Value"
                          detail: "'Value' is required."
                '6':
                  summary: 異常例_リクエストボディが不適切
                  value:
                    error:
                      message: "Invalid request body."
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '1':
                  summary: 異常例_カウント後の値が上限値(20億)を超えているか、下限値(-20億または負数を許可しない場合は0)を下回っている
                  value:
                    message: '''fieldId'' value exceeds the count limit or is below the minimum.'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              examples:
                '1':
                  summary: 指定されたコンテンツが存在しない
                  value:
                    message: NOT_FOUND
                '2':
                  summary: 指定されたフィールドが存在しないか、カウンターフィールドでない
                  value:
                    message: '''fieldId'' is not found.'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              examples:
                '1':
                  summary: 異常例_サーバーエラーが発生
                  value:
                    message: An unexpected error has occurred
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '1':
                  summary: 異常例_カウント処理中にリソース不足が発生した
                  value:
                    message: 'A temporary error has occurred, Please try again.'
      security: []
components:
  schemas:
    Content:
      type: object
      required:
        - UUID
        - ID
        - CreatedAt
        - UpdatedAt
        - PublishedEndTime
        - PublishedStartTime
        - SortOrder
      additionalProperties: true
      properties:
        UUID:
          type: string
          format: uuid
          description: |
            内部コンテンツID

            参照したコンテンツで絞り込み検索を行う場合に使用する
        ID:
          type: string
          format: string
          description: コンテンツID
        SortOrder:
          type: number
          description: ソート順
        PublishedStartTime:
          type: string
          format: date-time
          description: 公開開始日時
        PublishedEndTime:
          type: string
          format: date-time
          description: 公開終了日時
        CreatedAt:
          type: string
          format: date-time
          description: 作成日時
        UpdatedAt:
          type: string
          format: date-time
          description: 最終更新日時
      example:
        UUID: 51eab40b-3b45-4ab6-92d9-34f8731d3566
        ID: your_contents_id
        SortOrder: 1
        CreatedAt: '2000-01-01T00:00:00Z'
        UpdatedAt: '2000-01-01T00:00:00Z'
        PublishedEndTime: '2000-01-01T00:00:00Z'
        PublishedStartTime: '2000-01-01T00:00:00Z'
        your_custom_contents_key: your_custom_contents_value
    ContentsList:
      type: object
      required:
        - TotalCount
        - Offset
        - PerPage
        - Contents
      properties:
        TotalCount:
          type: integer
          description: 件数
        Offset:
          type: integer
          description: ページ番号
        PerPage:
          type: integer
          description: 1ページあたりの取得件数
        Contents:
          type: array
          description: ユーザー作成コンテンツ
          items: *ref_1
    ContentV2:
      type: object
      properties:
        UUID:
          type: string
          format: uuid
          description: |
            内部コンテンツID

            参照したコンテンツで絞り込み検索を行う場合に使用する
        ID:
          type: string
          format: string
          description: コンテンツID
        CreatedAt:
          type: string
          format: date-time
          description: 作成日時
        UpdatedAt:
          type: string
          format: date-time
          description: 最終更新日時
        FieldValues:
          type: object
          additionalProperties: true
          anyOf:
            - type: string
              description: 「テキスト（1行）」のフィールド情報
            - type: string
              description: 「テキストエリア」のフィールド情報
            - type: string
              description: 「リッチエディター」のフィールド情報
            - type: object
              properties:
                Prefix:
                  type: string
                  description: プレフィックス
                Suffix:
                  type: string
                  description: サフィックス
                Value:
                  type: number
                  description: 値
              description: 「数値」のフィールド情報
            - type: object
              properties:
                Prefix:
                  type: string
                  description: プレフィックス
                Suffix:
                  type: string
                  description: サフィックス
                Value:
                  type: integer
                  description: 値
              description: 「カウンター」のフィールド情報
            - type: object
              properties:
                URL:
                  type: string
                  description: 画像 URL
                Alt:
                  type: string
                Caption:
                  type: string
              description: 「画像」のフィールド情報
              required:
                - URL
            - type: array
              items:
                type: string
                description: ラベル名
              description: 「チェックボックス」のフィールド情報
            - type: string
              description: 「ラジオボタン」のフィールド情報
            - type: array
              items:
                type: string
                description: ラベル名
              description: 「ドロップダウン」のフィールド情報
            - type: boolean
              description: 「トグルスイッチ」のフィールド情報
            - type: array
              items:
                type: string
              description: 「電話番号（3分割）」のフィールド情報
            - type: object
              properties:
                ZipCode:
                  type: string
                  description: 郵便番号
                Prefecture:
                  type: string
                  description: 都道府県
                Municipality:
                  type: string
                  description: 市区町村
                StreetNumber:
                  type: string
                  description: 番地
                BuildingName:
                  type: string
                  description: 建物名
              description: 「住所入力」のフィールド情報
              required:
                - Municipality
                - ZipCode
                - Prefecture
            - type: string
              description: 「日時」のフィールド情報
              format: date-time
            - type: object
              properties:
                ApiEndpoint:
                  type: string
                  description: 参照先のコンテンツモデルの ApiEndpoint
                ID:
                  type: string
                  format: uuid
                  description: 参照先のコンテンツ ID
                DisplayValue:
                  description: |
                    参照先のモデルに定義されている表示項目の値。
                    フィールドタイプにより型が異なる:
                    - Text, Textarea, Editor: string
                    - Counter: { Prefix, Suffix, Value }
                  oneOf:
                    - type: string
                    - type: object
                      properties:
                        Prefix:
                          type: string
                          description: プレフィックス
                        Suffix:
                          type: string
                          description: サフィックス
                        Value:
                          type: integer
                          description: 値
                      required:
                        - Prefix
                        - Suffix
                        - Value
              description: 「コンテンツ参照」のフィールド情報
            - type: array
              items:
                type: object
                properties:
                  ApiEndpoint:
                    type: string
                    description: 参照先のコンテンツモデルの ApiEndpoint
                  ID:
                    type: string
                    format: uuid
                    description: 参照先のコンテンツ ID
                  DisplayValue:
                    description: |
                      参照先のモデルに定義されている表示項目の値。
                      フィールドタイプにより型が異なる:
                      - Text, Textarea, Editor: string
                      - Counter: { Prefix, Suffix, Value }
                    oneOf:
                      - type: string
                      - type: object
                        properties:
                          Prefix:
                            type: string
                            description: プレフィックス
                          Suffix:
                            type: string
                            description: サフィックス
                          Value:
                            type: integer
                            description: 値
                        required:
                          - Prefix
                          - Suffix
                          - Value
              description: 「複数コンテンツ参照」のフィールド情報
          description: コンテンツモデルの定義に基づくフィールド情報
      required:
        - UUID
        - ID
        - CreatedAt
        - UpdatedAt
        - FieldValues
      example:
        UUID: 51eab40b-3b45-4ab6-92d9-34f8731d3566
        ID: your_contents_id
        CreatedAt: '2000-01-01T00:00:00Z'
        UpdatedAt: '2000-01-01T00:00:00Z'
        FieldValues:
          your_custom_contents_key: your_custom_contents_value
    Filter:
      type: object
      properties:
        Operator:
          type: string
          description: |-
            `Conditions` に指定した検索条件の接続演算子

            - `and`: and検索
            - `or`: or検索
          default: and
          enum:
            - and
            - or
        Conditions:
          type: array
          description: フィールドごとの詳細な検索条件
          items:
            anyOf:
              - description: 「テキスト（1行）」フィールドにtの検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    description: |-
                      検索演算子

                      - `equals`: 完全一致検索
                      - `starts_with`: 前方一致検索
                      - `contains`: 部分一致検索
                    enum:
                      - equals
                      - starts_with
                      - contains
                  Value:
                    type: string
                    description: 検索に使用する文字列
                required:
                  - FieldID
                  - Operator
                  - Value
                type: object
              - description: 「チェックボックス」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    enum:
                      - all_of
                      - any_of
                    description: |-
                      検索演算子

                      - `all_of`: 指定した値を全て含む
                      - `any_of`: 指定した値のいずれかを含む
                  Values:
                    type: array
                    description: 選択肢 ID のリスト
                    items:
                      type: string
                      format: uuid
                required:
                  - FieldID
                  - Operator
                  - Values
                type: object
              - description: 「ラジオボタン」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    description: |-
                      検索演算子

                      - `equals`: 完全一致検索
                    enum:
                      - equals
                  Value:
                    type: string
                    description: 選択肢 ID のリスト
                    format: uuid
                required:
                  - FieldID
                  - Operator
                  - Value
                type: object
              - description: 「ドロップダウン」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    enum:
                      - all_of
                      - any_of
                    description: |-
                      検索演算子

                      - `all_of`: 指定した値を全て含む
                      - `any_of`: 指定した値のいずれかを含む
                  Values:
                    type: array
                    description: 選択肢 ID のリスト
                    items:
                      type: string
                      format: uuid
                required:
                  - FieldID
                  - Operator
                  - Values
                type: object
              - description: 「トグルスイッチ」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    description: |-
                      検索演算子

                      - `equals`: 完全一致検索
                    enum:
                      - equals
                  Value:
                    type: boolean
                    description: 検索する値
                required:
                  - FieldID
                  - Operator
                  - Value
                type: object
              - description: 「電話番号（3分割）」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    description: |-
                      検索演算子

                      - `equals`: 完全一致検索
                    enum:
                      - equals
                  Value:
                    type: string
                    description: |-
                      検索する電話番号

                      検索の際、半角ハイフンは無視されます。
                      `03-1234-5678` と `0312345678` は同様の検索となります。
                    example: 03-1234-5678
                required:
                  - FieldID
                  - Operator
                  - Value
                type: object
              - description: 「住所入力」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    description: |-
                      検索演算子

                      - `equals`: 都道府県に対する完全一致検索
                    enum:
                      - equals
                  Value:
                    type: string
                    description: |-
                      検索する都道府県名

                      以下の「良い例」のように正式な都道府県名を指定してください。
                      - 良い例: "東京都", "北海道", "大阪府", "沖縄県"
                      - 悪い例: "東京", "大阪", "沖縄"
                    example: 東京都
                required:
                  - FieldID
                  - Operator
                  - Value
                type: object
              - description: 「コンテンツ参照」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    description: |-
                      検索演算子

                      - `equals`: 完全一致検索
                    enum:
                      - equals
                  Value:
                    type: string
                    description: 参照先のコンテンツ ID
                    format: uuid
                required:
                  - FieldID
                  - Operator
                  - Value
                type: object
              - description: 「複数コンテンツ参照」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    description: |-
                      検索演算子

                      - `all_of`: 指定した値を全て含む
                      - `any_of`: 指定した値のいずれかを含む
                    enum:
                      - all_of
                      - any_of
                  Values:
                    type: array
                    description: 参照先のコンテンツ ID
                    format: uuid
                    items:
                      type: string
                      format: uuid
                required:
                  - FieldID
                  - Operator
                  - Values
                type: object
              - description: 「日時」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    description: |-
                      検索演算子

                      - `equals`: 完全一致検索
                      - `between`: 範囲検索（入力値を含む）
                    enum:
                      - equals
                      - between
                  Value:
                    type: string
                    description: |-
                      検索日時

                      `Operator` に `equals` を指定した場合は必須
                    format: date-time
                    pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$
                    example: "2024-05-26T17:05:12Z"
                  Range:
                    type: object
                    description: |-
                      検索日時の範囲

                      `Operator` に `between` を指定した場合は必須
                      `Min` もしくは `Max` のいずれか、もしくは両方を指定する
                    additionalProperties: false
                    properties:
                      Min:
                        type: string
                        format: date-time
                        pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$
                        example: "2024-05-26T17:05:12Z"
                      Max:
                        type: string
                        format: date-time
                        pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$
                        example: "2024-05-27T00:02:47Z"
                required:
                  - FieldID
                  - Operator
                type: object
              - description: 「数値」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    description: |-
                      検索演算子

                      - `equals`: 完全一致検索
                      - `between`: 範囲検索（入力値を含む）
                    enum:
                      - equals
                      - between
                  Value:
                    type: number
                    description: |-
                      検索数値

                      `Operator` に `equals` を指定した場合は必須
                  Range:
                    type: object
                    description: |-
                      検索数値の範囲

                      `Operator` に `between` を指定した場合は必須
                      `Min` もしくは `Max` のいずれか、もしくは両方を指定する
                    additionalProperties: false
                    properties:
                      Min:
                        type: number
                      Max:
                        type: number
                required:
                  - FieldID
                  - Operator
                type: object
              - description: 「カウンター」に対する検索条件
                properties:
                  FieldID:
                    type: string
                    description: 項目識別子
                  Operator:
                    type: string
                    description: |-
                      検索演算子

                      - `equals`: 完全一致検索
                      - `between`: 範囲検索（入力値を含む）
                    enum:
                      - equals
                      - between
                  Value:
                    type: integer
                    minimum: -2000000000
                    maximum: 2000000000
                    description: |-
                      検索数値

                      `Operator` に `equals` を指定した場合は必須
                  Range:
                    type: object
                    description: |-
                      検索数値の範囲

                      `Operator` に `between` を指定した場合は必須
                      `Min` もしくは `Max` のいずれか、もしくは両方を指定する
                    additionalProperties: false
                    properties:
                      Min:
                        type: integer
                        minimum: -2000000000
                        maximum: 2000000000
                      Max:
                        type: integer
                        minimum: -2000000000
                        maximum: 2000000000
                required:
                  - FieldID
                  - Operator
                type: object
      description: 項目ごとの詳細なフィルタリング条件
      required:
        - Conditions
      example:
        Operator: and
        Conditions:
          - FieldID: Text-id
            Operator: equals
            Value: dummy-value
          - FieldID: Checkbox-id
            Operator: any_of
            Values:
              - 5eb3493a-3ce1-4508-a2d9-b94095d5bd1b
          - FieldID: Radio-id
            Operator: equals
            Value:
              5eb3493a-3ce1-4508-a2d9-b94095d5bd1b
          - FieldID: Dropdown-id
            Operator: any_of
            Values:
              - 5eb3493a-3ce1-4508-a2d9-b94095d5bd1b
          - FieldID: Toggle-id
            Operator: equals
            Value: true
          - FieldID: PhoneNumber-id
            Operator: equals
            Value: 03-1234-5678
          - FieldID: Address-id
            Operator: equals
            Value: 東京都
          - FieldID: Reference-id
            Operator: equals
            Value: ed831ecf-7b0d-404a-9712-4c8970a036f6
          - FieldID: Reference-id
            Operator: any_of
            Values:
              - ed831ecf-7b0d-404a-9712-4c8970a036f6
          - FieldID: Datetime-id
            Operator: between
            Range:
              Min: '2024-05-26T17:05:12Z'
              Max: '2024-05-27T00:02:47Z'
          - FieldID: Number-id
            Operator: between
            Range:
              Min: 5
              Max: 10
          - FieldID: Counter-id
            Operator: between
            Range:
              Min: 5
              Max: 10
    SearchFullTextQuery:
      type: object
      properties:
        Keywords:
          type: string
          description: |-
            全文検索キーワード

            複数のキーワードによる全文検索を行う場合、半角スペース区切りで指定してください。
        Operator:
          type: string
          description: |-
            `Keywords` に指定した検索条件の接続演算子

            - `fuzzy_match`: マッチ検索
            - `exclude`: 除外検索
          enum:
            - fuzzy_match
            - exclude
          default: fuzzy_match
      description: >-
        全文検索条件


        特定のフィールドに対する検索ではなく、複数のフィールドをまたぐ横断的な検索を行います。

        対応するフィールドは「テキスト（1行）」「テキストエリア」「リッチエディター」「住所入力（都道府県を除く）」です。

        このパラメータによる検索は形態素解析を利用して行われ、一定の関連度を持つと判断されたコンテンツを返却します。

        全文検索を使用し、かつ `Sort`
        パラメータを指定しなかった場合、レスポンスに含まれるコンテンツの順序は関連度の高い順に返却されます。
      required:
        - Keywords
      example:
        Keywords: 'keyword1 keyword2 keyword3'
        Operator: fuzzy_match
    SearchSort:
      type: array
      items:
        type: object
        properties:
          Key:
            type: string
            description: |-
              ソートキー

              以下の値およびソート可能フィールド (`Sortable = true`) の「項目識別子」が指定可能。
              - `ID`
              - `SortOrder`
              - `CreatedAt`
              - `UpdatedAt`
          Order:
            type: string
            enum:
              - asc
              - desc
            default: asc
            description: |-
              ソート順

              - `asc`: 昇順
              - `desc`: 降順
        required:
          - Key
          - Order
      description: ソート順
      example:
        - Key: CreatedAt
          Order: desc
        - Key: Checkbox-id
          Order: asc
    ErrorMessage:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: エラーメッセージ
  securitySchemes: {}
servers: []
