openapi: 3.2.0
info:
    title: KOS OpenAPI
    version: 1.0.1
    description: |
        KOS OpenAPI は、KOS ソリューションを利用する病院の開発チームのみが利用できます。

        詳しくは、各病院の KOS 営業担当者にお問い合わせください。

        このドキュメントは [OpenAPI Spec](/openapi.yaml) ファイルから確認できます。

        ### API リクエスト方法

        1. KOS OpenAPI は、照会、更新、削除などすべてのリクエストを POST で送信します。

        2. 認証関連 API を除くすべてのリクエストでは、`Authorization` ヘッダーに認証トークン(Auth Token)を含める必要があります。詳しくは [認証方法](/docs/openapi/authorization) を参照してください。

        3. すべてのエラー応答は、種類にかかわらず `400` ステータスコードを返します。エラー応答の詳細から原因を確認できます。詳しくは [エラー応答](#エラー応答) を参照してください。

        ### 日付と時刻の形式

        日付や時間を伝えるフィールドは、各フィールドの説明に明記された形式に従います。

        `format: date-time`としてドキュメント化されたフィールドは、[ISO 8601](https://ja.wikipedia.org/wiki/ISO_8601) date-time文字列を使用します。UTCが指定されたフィールドはUTCタイムゾーンの値を伝達します。

        ### 国コード形式

        商品とターゲット国の照会で使用する国コードは、[ISO 3166-1 alpha-2](https://ja.wikipedia.org/wiki/ISO_3166-1_alpha-2) 文字列を使用します。

        電話番号の国番号は、電話番号スキーマの`countryCode`の説明に従います。

        <Callout type="caution">
        <p>ただし、国別に表示する商品を指定し、その国に合わせた価格を設定するための「ターゲット国」の <strong>「その他の国」は <code>ETC</code></strong> と表記します。</p>
        <p>詳細については、<a href="/docs/openapi/targetcountry">ターゲット国</a>を確認してください。</p>
        </Callout>

        ### エラー応答

        照会またはコマンドを正常に処理できない場合、`400` HTTP ステータスコードとともに次のようなエラー応答が返ります。

        ```json
        {
          "status": 400,
          "message": "InvalidCommandException",
          "className": "InvalidCommandException",
          "errorProperties": [
            {
              "key": "{{ Key }}",
              "reason": "{{ ErrorReason }}"
            }
          ]
        }
        ```

        - `key`: 不足しているフィールド名、または不正な値を持つフィールド名
        - `reason`: エラー原因
          - `TooShort`: 文字列が短すぎる
          - `TooLong`: 文字列が長すぎる
          - `Required`: 必須項目が不足している
          - `Duplicated`: 重複している
          - `InvalidTimeRange`: 時間範囲の検証に失敗
          - `NotAvailable`: 使用不可
          - `NotFound`: 対象が存在しない
          - `TooSmall`: 値が小さすぎる
          - `TooBig`: 値が大きすぎる
servers:
    - description: 本番環境
      url: https://open-api.kos-solution.com
    - description: 開発環境
      url: https://open-api.kos-solution.dev
tags:
    - description: |
        ## 認証方法

        認証関連を除くすべてのAPIリクエストには、認証トークン（Auth Token）が必要です。

        認証トークンはHTTPヘッダーに含める必要があります。

        ```http request
        Authorization: {{Auth Token}}
        ```

        _\* `Bearer` などのプレフィックスは不要です。_

        <details>
        <summary>主要概念</summary>
        <dl>
        <dt>API Key</dt>
        <dd><strong>定義：</strong>KOSチームがクリニックに発行するサーバー用認証キーです。<br /><strong>説明：</strong>認証トークンを取得するための入力値であり、クライアントに公開せず、サーバーサイドのみで使用する必要があります。</dd>
        <dt>認証トークン（Auth Token）</dt>
        <dd><strong>定義：</strong>APIリクエスト時に<code>Authorization</code>ヘッダーに含めて送信するトークンです。<br /><strong>説明：</strong>認証関連のAPIを除くすべてのリクエストに必要です。一定時間が経過すると満了する場合があり、満了したトークンで呼び出すと<code>401</code>レスポンスが返されます。</dd>
        <dt>認証トークン交換</dt>
        <dd><strong>定義：</strong>API Keyを認証トークンに切り替えるサーバーサイドの手順です。<br /><strong>説明：</strong>クライアントで実行するとAPI Keyが公開される恐れがあるため、必ずサーバーのみで呼び出す必要があります。</dd>
        <dt>Authorizationヘッダー</dt>
        <dd><strong>定義：</strong>認証トークンを伝達するHTTPヘッダーです。<br /><strong>説明：</strong>値には認証トークンのみを含め、<code>Bearer</code>などのプレフィックスは付けません。</dd>
        </dl>
        </details>

        <Callout type="danger">
        <p><strong>APIキーおよび認証トークンを絶対にクライアントに公開しないでください。</strong></p>
        <p>クライアントに公開されたり、クライアント側で保存されたりしないよう注意してください。</p>
        <p>認証トークンの交換も、絶対にクライアント側で行ってはなりません。</p>
        <p>公開された場合、悪意のあるユーザーが認証トークンを取得してAPIを使用する可能性があります。</p>
        <p>公開された場合は、直ちにKOSチームを通じて新しいAPIキーを発行してもらう必要があります。</p>
        </Callout>

        認証トークンを発行するには、KOSチームから提供されたAPIキーが必要です。

        [認証トークン交換](/docs/openapi/exchange-token) APIを通じて認証トークンを発行できます。

        ## 認証フロー

        1. KOSチームからAPIキーを発行してもらいます。
        2. サーバーサイドで [認証トークン交換](/docs/openapi/exchange-token) APIにAPIキーを渡して認証トークンを発行します。
        3. 発行された認証トークンを以降のAPIリクエストの `Authorization` ヘッダーに含めて呼び出します。

        <Callout type="info">
        <p>APIキーの発行、認証トークンの交換、および認証トークンを使用するすべての呼び出しは、サーバーサイドでのみ行う必要があります。</p>
        </Callout>

        ## トークンの有効期間

        認証トークンは一定時間が経過すると失効します。有効期間はKOSのポリシーにより異なる場合があります。

        ## トークン失効時の処理

        失効したトークンでAPIを呼び出すと、`401` ステータスコードが返されます。

        その場合、[認証トークン交換](/docs/openapi/exchange-token) APIを再度呼び出して新しいトークンを発行し、リクエストを再試行してください。

        ## トークン管理戦略

        リクエストごとにトークンを新たに交換するのではなく、以下の戦略での管理を推奨します。

        - **再利用**: 発行されたトークンをサーバーサイドのメモリまたはキャッシュに保管し、再利用します。
        - **401対応**: APIリクエストが `401` レスポンスを返した場合、トークンを再度交換して更新し、失敗したリクエストを再試行します。

        トークンの値をパースして失効を判断せず、APIの `401` レスポンスで失効を処理してください。

        ## APIキーの管理

        - APIキーはサーバーサイドの環境変数またはシークレットストアに保管し、コードリポジトリやクライアントには含めないでください。
        - APIキーが漏洩した、または漏洩が疑われる場合は、直ちにKOSチームを通じて新しいAPIキーを発行してもらいます。
      name: Authorization
      x-displayName: 認証
    - description: |
        画像関連のAPIです。

        アップロードURL生成と患者画像登録機能を提供します。

        <details>
        <summary>主要概念</summary>
        <dl>
        <dt>presigned URL</dt>
        <dd><strong>定義:</strong> 画像ファイルをアップロードするために発行される一時的なアップロードURLです。<br /><strong>説明:</strong> KOS APIにファイルを直接送信するのではなく、レスポンスのURLに画像バイナリを<code>PUT</code>リクエストでアップロードします。発行されたURLは5分間有効です。</dd>
        <dt>患者画像</dt>
        <dd><strong>定義:</strong> 患者に紐付けて管理する画像ファイル情報です。<br /><strong>説明:</strong> ファイルアップロード後、ファイル名・患者ID・画像の出典・撮影日時などを送信して患者画像として登録します。</dd>
        <dt>画像の出典</dt>
        <dd><strong>定義:</strong> 画像がどこで生成されたかを区別する値です。<br /><strong>説明:</strong> 院内撮影・患者撮影・同意書・ペンカルテのように、画像の発生コンテキストを示します。</dd>
        <dt>撮影機器コード</dt>
        <dd><strong>定義:</strong> 画像を撮影した機器を示すコードです。<br /><strong>説明:</strong> クリニックで管理する機器コードと紐付けて、画像の撮影機器を識別する際に使用します。</dd>
        <dt>画像分類コード</dt>
        <dd><strong>定義:</strong> 業務基準で画像を分類するコードです。<br /><strong>説明:</strong> 経過写真・カウンセリング資料のように、クリニックで定義した画像分類体系に従って画像を整理する際に使用します。</dd>
        <dt>画像フォルダパス</dt>
        <dd><strong>定義:</strong> 画像が属するフォルダの場所を示すパスです。<br /><strong>説明:</strong> スラッシュ（<code>/</code>）でサブフォルダを区切り、患者画像をフォルダ構造で管理できます。</dd>
        </dl>
        </details>
      name: Image
      x-displayName: 画像
    - description: |
        プリペイドカード関連のAPIです。

        患者のプリペイドカード残高、プリペイドカードリスト、プリペイドカードチャージイベント照会機能を提供します。

        <details>
        <summary>主要概念</summary>
        <dl>
        <dt>プリペイドカード</dt>
        <dd><strong>定義：</strong>患者がクリニックで使用できるよう、あらかじめチャージしておいた金額またはポイント単位のカードです。<br /><strong>説明：</strong>プリペイドカードリストの照会では、カード名、残高、連携患者、満了日などの情報を確認します。</dd>
        <dt>プリペイドカード残高</dt>
        <dd><strong>定義：</strong>患者が使用できる残りのプリペイドカード金額です。<br /><strong>説明：</strong>現金残高とポイント残高が区別して提供される場合があり、患者基準の残高照会で確認します。</dd>
        <dt>チャージイベント</dt>
        <dd><strong>定義：</strong>プリペイドカード金額が変動した履歴です。<br /><strong>説明：</strong>チャージ、使用、使用キャンセル、返金、満了、差し引きなどのイベントを通じて、残高変化の原因を追跡します。</dd>
        <dt>カード所有者</dt>
        <dd><strong>定義：</strong>プリペイドカードを会計した患者です。プリペイドカード1枚につき、所有者は1名のみです。<br /><strong>説明：</strong>1枚のプリペイドカードを複数の患者が共有して使用できるため、リストで各患者が該当プリペイドカードの所有者であるかどうかを確認できます。</dd>
        <dt>金額タイプ</dt>
        <dd><strong>定義：</strong>プリペイドカードイベントの金額が現金残高かポイントかを区別する値です。<br /><strong>説明：</strong>残高とポイントが別途管理される場合に、イベント金額を正しく解釈するために必要です。</dd>
        </dl>
        </details>
      name: PrepaidCard
      x-displayName: プリペイドカード
    - description: |
        商品、商品メニュー、商品カテゴリ関連のAPIです。

        <details>
        <summary>主要概念</summary>
        <dl>
        <dt>商品</dt>
        <dd><strong>定義：</strong>クリニックが患者に販売、または予約対象として公開する上位項目です。<br /><strong>説明：</strong>1つの商品は複数の商品メニューを含むことができ、商品リストおよび商品詳細照会の基本単位となります。</dd>
        <dt>商品メニュー</dt>
        <dd><strong>定義：</strong>患者が実際に選択する施術構成と価格情報を含む項目です。<br /><strong>説明：</strong>予約の希望施術、購入項目、施術チケットは通常、商品メニュー単位で紐付けられます。</dd>
        <dt>商品カテゴリ</dt>
        <dd><strong>定義：</strong>商品を分類するための値です。<br /><strong>説明：</strong>商品リストをカテゴリ別にフィルタリングしたり、画面上で商品をまとめて表示する際に使用します。1つの商品に複数のカテゴリを設定することができます。</dd>
        <dt>診療項目</dt>
        <dd><strong>定義：</strong>クリニックが提供する診療または施術の基準項目です。<br /><strong>説明：</strong>商品メニューがどの診療項目と紐付いているかを確認することで、予約・会計・施術チケットにおいて同じ施術概念を一貫して扱うことができます。</dd>
        <dt>施術構成</dt>
        <dd><strong>定義：</strong>商品メニューに含まれる施術・機器・薬・数量・単位情報です。<br /><strong>説明：</strong>単一メニューは1つの施術構成を持つことができ、グループメニューは複数の構成を含むことができます。</dd>
        <dt>ターゲット国</dt>
        <dd><strong>定義：</strong>商品を公開または価格を適用する対象国です。<br /><strong>説明：</strong>国ごとに表示する商品や価格が異なる場合があるため、商品照会およびフィルタリングと併せて使用されます。</dd>
        </dl>
        </details>
      name: Product
      x-displayName: 商品
    - description: |
        会計関連APIです。

        会計照会と患者基準の会計照会機能を提供します。

        <details>
        <summary>主要概念</summary>
        <dl>
        <dt>会計</dt>
        <dd><strong>定義：</strong>患者に発生した決済または請求履歴を管理する単位です。<br /><strong>説明：</strong>会計リストでは、患者、会計日時、担当者、決済金額、連携スケジュール情報を確認できます。</dd>
        <dt>購入項目</dt>
        <dd><strong>定義：</strong>1つの会計の中で患者が何を購入したかを示す個別の項目です。<br /><strong>説明：</strong>商品メニュー、その他の商品、プリペイドカード商品などの構成が購入項目として含まれることがあります。</dd>
        <dt>取引</dt>
        <dd><strong>定義：</strong>会計において金銭のやり取りが行われた履歴です。<br /><strong>説明：</strong>取引の支払いタイプ、金額、状態を通じて、購入項目がどのような方法で支払われたかを確認します。</dd>
        <dt>患者基準の会計</dt>
        <dd><strong>定義：</strong>特定の患者に紐づいた会計履歴です。<br /><strong>説明：</strong>患者IDで照会すると、該当患者の決済および請求履歴をまとめて確認できます。</dd>
        <dt>スケジュール連携</dt>
        <dd><strong>定義：</strong>会計が特定の来院スケジュールと連携する関係です。<br /><strong>説明：</strong>スケジュールと連携した会計は、どの来院または予約で発生した費用かを把握するために使用します。</dd>
        </dl>
        </details>
      name: Purchase
      x-displayName: 会計
    - description: |
        予約とスケジュール関連のAPIです。

        予約作成、予約変更、予約キャンセル、予約スロット照会、予約グループ、区域、スケジュール照会機能を提供します。

        <details>
        <summary>主要概念</summary>
        <dl>
        <dt>予約</dt>
        <dd><strong>定義：</strong>患者が特定の時間にクリニックを訪問するために登録した日程リクエストです。<br /><strong>説明：</strong>予約作成・変更・キャンセルAPIの中心対象です。リクエスト時に患者情報、予約グループ、区域、開始／終了時刻、希望施術情報を併せて送信します。</dd>
        <dt>スケジュール</dt>
        <dd><strong>定義：</strong>予約をもとにクリニックの運営フローで管理される来院日程情報です。<br /><strong>説明：</strong>スケジュール照会APIでは、患者・予約・会計・施術進行情報など、実際の来院管理に必要な情報を合わせて確認できます。</dd>
        <dt>予約スロット</dt>
        <dd><strong>定義：</strong>予約を作成できる時間区間です。<br /><strong>説明：</strong>商品、予約グループ、既存スケジュールの条件に応じて利用可能な時間帯を照会した後、予約作成リクエストに使用します。</dd>
        <dt>予約グループ</dt>
        <dd><strong>定義：</strong>予約可能時間、区域、リソース、ポリシーをまとめて管理する予約単位です。<br /><strong>説明：</strong>どの予約グループで予約するかによって、照会されるスロットと予約可能な時間が異なる場合があります。</dd>
        <dt>区域</dt>
        <dd><strong>定義：</strong>予約やスケジュールが割り当てられるクリニック内のエリアです。<br /><strong>説明：</strong>予約作成およびスロット照会において、患者が訪問する空間やリソースが占有されるスペースを指定する際に使用します。</dd>
        <dt>占有時間</dt>
        <dd><strong>定義：</strong>特定の時間帯を予約可能範囲から除外したり、リソース使用時間として表示したりする情報です。<br /><strong>説明：</strong>占有時間を作成すると、その時間帯に予約を受け付けないよう制御できます。</dd>
        <dt>来院段階</dt>
        <dd><strong>定義：</strong>スケジュールが現在どの来院段階にあるかを示す段階です。<br /><strong>説明：</strong>予約、受付、カウンセリング、施術など、来院プロセスを基準にスケジュールを照会する際に使用します。</dd>
        </dl>
        </details>
      name: Schedule
      x-displayName: 予約
    - description: |
        クリニック診療データを項目別に照会するAPIです。

        個人情報保護のため、患者名・電話番号・生年月日などの個人識別情報は提供していません。クリニックシステムとの患者マッピングは `visitorChartNumber`（カルテ番号）を基準に行ってください。

        <details>
        <summary>カーソルベースのページネーション</summary>

        定義：大量のデータを順番に分割して照会する方式

        `limit`を指定すると、レスポンスに`nextCursor`が含まれます。次のページをリクエストする際は、`cursor`の値をそのまま渡してください。`cursor`なしでリクエストした最初のレスポンスにのみ`totalCount`が返されます。
        </details>
      name: Statistics
      x-displayName: 統計
    - description: |
        ターゲット国関連のAPIです。

        商品で使用するターゲット国リストを照会します。

        <details>
        <summary>主要概念</summary>
        <dl>
        <dt>ターゲット国</dt>
        <dd><strong>定義：</strong>商品を公開したり、価格を設定したりする対象国です。<br /><strong>説明：</strong>国ごとに異なる商品構成や価格ポリシーを適用する際に使用します。</dd>
        <dt>国コード</dt>
        <dd><strong>定義：</strong>国を識別するISO 3166-1 alpha-2形式のコードです。<br /><strong>説明：</strong>例えば、韓国は<code>KR</code>、日本は<code>JP</code>のように2文字のコードで表します。</dd>
        <dt>その他の国（ETC）</dt>
        <dd><strong>定義：</strong>個別の国コードで分類されていない残りの国を表す値です。<br /><strong>説明：</strong>特定の国別設定がない場合に、共通の適用対象として使用できます。</dd>
        <dt>商品連携</dt>
        <dd><strong>定義：</strong>商品がどの国を対象としているかを示す関係です。<br /><strong>説明：</strong>ターゲット国リストを先に照会しておくと、以降の商品レスポンスで国関連の値を解釈しやすくなります。</dd>
        </dl>
        </details>
      name: TargetCountry
      x-displayName: ターゲット国
    - description: |
        施術チケット関連のAPIです。

        患者の施術チケットバンドル照会機能を提供します。

        <details>
        <summary>主要概念</summary>
        <dl>
        <dt>施術チケット</dt>
        <dd><strong>定義：</strong>患者が購入した商品メニューを実際の施術に使用できるよう管理する権利単位です。<br /><strong>説明：</strong>使用可能、使用済み、キャンセル済みなどのステータスを持ち、施術進行と連携します。</dd>
        <dt>施術チケットバンドル</dt>
        <dd><strong>定義：</strong>同じ購入項目から生成された複数の施術チケットをまとめた単位です。<br /><strong>説明：</strong>患者の使用可能な施術チケットを照会する際、商品メニュー・購入情報・個別施術チケットリストをまとめて確認します。</dd>
        <dt>商品メニュー連携</dt>
        <dd><strong>定義：</strong>施術チケットがどの商品メニューから生成されたかを示す情報です。<br /><strong>説明：</strong>商品名・メニュー名・プロモーション情報を通じて、施術チケットの販売構成を確認できます。</dd>
        <dt>診療項目</dt>
        <dd><strong>定義：</strong>施術チケットで受けられる診療または施術の基準項目です。<br /><strong>説明：</strong>施術チケットがどの施術に使用されるかを把握し、スケジュールの施術情報と連携する際に使用します。</dd>
        <dt>施術チケットステータス</dt>
        <dd><strong>定義：</strong>施術チケットの現在の使用可否を示す値です。<br /><strong>説明：</strong>使用可能な施術チケットのみ予約や施術進行に活用できるため、ステータスの確認が必要です。</dd>
        </dl>
        </details>
      name: Ticket
      x-displayName: 施術チケット
    - description: |
        患者関連のAPIです。

        患者照会、重複患者照会、患者検索、初診問診票の照会と提出機能を提供します。

        <details>
        <summary>主要概念</summary>
        <dl>
        <dt>患者</dt>
        <dd><strong>定義：</strong>クリニックに来院または予約を行う方の患者情報です。<br /><strong>説明：</strong>氏名、電話番号、カルテ番号、生年月日、性別、国籍などの情報を基準に照会または検索します。</dd>
        <dt>患者ID</dt>
        <dd><strong>定義：</strong>患者を識別する固有IDです。<br /><strong>説明：</strong>予約、会計、施術チケット、プリペイドカードなど、他のドメインのデータを特定の患者と紐付ける際に使用します。</dd>
        <dt>重複患者</dt>
        <dd><strong>定義：</strong>同一人物である可能性がある既存の患者候補です。<br /><strong>説明：</strong>氏名、電話番号、パスポート情報、生年月日、SNS情報などを基準に、すでに登録済みの患者がいるかどうかを確認する際に使用します。</dd>
        <dt>初診問診票</dt>
        <dd><strong>定義：</strong>患者が初回来院前に記入する問診情報です。<br /><strong>説明：</strong>問診票照会APIで記入項目を確認し、提出APIで患者の回答を送信します。</dd>
        <dt>連携情報</dt>
        <dd><strong>定義：</strong>外部チャネルから患者を識別するための連携情報です。<br /><strong>説明：</strong>LINEやカンナムオンニなどのチャネルのユーザー情報を患者と紐付け、重複確認や予約作成に活用できます。</dd>
        <dt>マーケティング受信同意</dt>
        <dd><strong>定義：</strong>患者のマーケティング連絡の受信可否に関する同意情報です。<br /><strong>説明：</strong>公開APIでは、電話番号を基準にマーケティング受信同意を解除できます。</dd>
        </dl>
        </details>
      name: Visitor
      x-displayName: 患者
paths:
    /image/open/v1/commands/generate-uploading-url:
        post:
            tags:
                - Image
            operationId: generateUploadingImageUrl
            summary: 画像アップロードURL発行
            description: |
                このAPIは画像ファイルを直接アップロードするのではなく、画像ファイルをアップロードするためのpresigned URLを発行します。

                アップロードの流れは以下の通りです。

                1. このAPIにクリニックごとにユニークな `fileName` を渡してpresigned URLを取得します。
                2. レスポンスの `data` URLに画像ファイルのバイナリを `PUT` リクエストでアップロードします。
                3. 発行されたURLは5分間有効です。URLが満了した場合は、再度発行してアップロードしてください。

                以下の例において、`{このAPIで発行されたpresigned URL}`はレスポンスの`data`値です。

                ```bash
                curl -X PUT "{このAPIで発行されたpresigned URL}" \
                  -H "Content-Type: image/jpeg" \
                  --data-binary "@./image.jpg"
                ```

                `Content-Type` はアップロードする画像ファイルの形式に合わせて指定してください。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GenerateUploadingImageUrl'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GenerateUploadingImageUrlResponse'
    /image/open/v1/commands/register-visitor-images:
        post:
            tags:
                - Image
            operationId: registerVisitorImages
            summary: 患者画像登録
            description: 患者画像を登録します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.RegisterVisitorImages'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/RegisterVisitorImagesMemoTooLongError'
                                    - $ref: '#/components/schemas/RegisterVisitorImagesPathSegmentTooLongError'
                                    - $ref: '#/components/schemas/RegisterVisitorImagesPathNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/RegisterVisitorImagesMemoTooLongError'
                                                - $ref: '#/components/schemas/RegisterVisitorImagesPathSegmentTooLongError'
                                                - $ref: '#/components/schemas/RegisterVisitorImagesPathNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`memo`は150文字以下である必要があります。'
                                    summary: メモが150文字を超えた場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: memo
                                              reason: TooLong
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`path`の各フォルダ名は200文字以下である必要があります。'
                                    summary: フォルダ名が200文字を超えた場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: path
                                              reason: TooLong
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`path`に`*`または`?`を含めることはできません。'
                                    summary: パスに許可されていない文字が含まれている場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: path
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
    /open/authorization/commands/exchange-token:
        post:
            tags:
                - Authorization
            operationId: exchangeToken
            summary: 認証トークン交換
            description: |-
                発行されたAPI Keyを認証トークンに交換します。

                全体の認証フローは[認証方法](/docs/openapi/authorization)ドキュメントを参照してください。認証トークンの交換は、認証が不要な唯一のリクエストです。
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.ExchangeTokenCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.ExchangeTokenResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/ExchangeTokenApiKeyNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/ExchangeTokenApiKeyNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: 渡された `key` に該当するAPI Keyが見つかりません。
                                    summary: API Keyが無効な場合
                                    value:
                                        className: InternalServiceException
                                        errorProperties:
                                            - key: apiKey
                                              reason: NotFound
                                        message: InternalServiceException
                                        status: 400
    /procedure-menu/open/categories/queries/get-categories:
        post:
            tags:
                - Product
            operationId: getCategories
            summary: 商品カテゴリリスト照会
            description: 商品カテゴリのリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetCategoriesQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.procedure.GetCategoriesQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetCategoriesInvalidSortCriteriaError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetCategoriesInvalidSortCriteriaError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: 並べ替え可能なフィールドは`order`です。
                                    summary: 並べ替え基準が正しくない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties: []
                                        message: sort is invalid
                                        status: 400
    /procedure-menu/open/products/queries/get-product:
        post:
            tags:
                - Product
            operationId: getProduct
            summary: 商品照会
            description: |-
                商品の詳細情報を照会します。

                リクエストされたAPI Keyに該当するチャネルに公開可能な商品メニューのみが返されます。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetProductQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.procedure.OpenProductDetailContract'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetProductProductNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetProductProductNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: 商品が見つからない場合
                                    summary: 商品が見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: productId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: チャネルに公開可能なメニューが存在しない場合
                                    summary: チャネルに公開可能なメニューが存在しない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: productId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
    /procedure-menu/open/products/queries/get-products:
        post:
            tags:
                - Product
            operationId: getProducts
            summary: 商品リスト照会
            description: |-
                商品リストを照会します。

                リクエストされたAPI Keyに対応するチャネルで公開可能な商品のみ返されます。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetProductsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.procedure.GetOpenProductsQueryResponse'
    /procedure-menu/open/products/queries/search-product-option-summaries:
        post:
            tags:
                - Product
            operationId: searchProductOptionSummaries
            summary: 商品メニュー検索
            description: |-
                商品メニューを検索します。

                リクエストされたAPI Keyに該当するチャネルに表示可能な商品メニューのみを検索します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.SearchProductOptionSummariesQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesQueryResponse'
    /procedure-menu/open/target-countries/queries/get-target-countries:
        post:
            tags:
                - TargetCountry
            operationId: getTargetCountries
            summary: ターゲット国リスト照会
            description: 病院に設定されたターゲット国のリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.Empty'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.procedure.GetTargetCountriesQueryResponse'
    /procedure-menu/open/v1/machines/queries/get-machines:
        post:
            tags:
                - Product
            operationId: getMachines
            summary: 機器リスト照会
            description: 削除されていない機器のリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetMachinesQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetMachinesQueryResponse'
    /procedure-menu/open/v1/medical-services/queries/get-medical-services:
        post:
            tags:
                - Product
            operationId: getMedicalServices
            summary: 診療項目リスト照会
            description: 削除されていない診療項目のリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetMedicalServicesQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetMedicalServicesQueryResponse'
    /procedure-menu/open/v1/medicines/queries/get-medicines:
        post:
            tags:
                - Product
            operationId: getMedicines
            summary: 医薬品リスト照会
            description: 削除されていない医薬品のリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetMedicinesQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetMedicinesQueryResponse'
    /procedure-menu/open/v1/procedures/queries/get-procedures:
        post:
            tags:
                - Product
            operationId: getProcedures
            summary: 施術リスト照会
            description: 削除されていない施術のリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetProceduresQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetProceduresQueryResponse'
    /procedure-menu/open/v1/product-options/queries/get-product-options:
        post:
            tags:
                - Product
            operationId: getProductOptions
            summary: 商品メニューリスト照会
            description: 商品メニューの詳細情報を照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.procedure.GetProductOptionsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.procedure.GetProductOptionsQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetProductOptionsOptionIdsRequiredError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetProductOptionsOptionIdsRequiredError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`optionIds`は最低1つ以上必要です。'
                                    summary: 商品メニューIDリストが空の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: optionIds
                                              reason: Required
                                        message: InvalidCommandException
                                        status: 400
    /procedure-menu/open/v1/products/commands/add-product-option:
        post:
            tags:
                - Product
            operationId: addProductOption
            summary: 商品メニュー追加
            description: 商品にメニューを追加します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenAddProductOptionCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/AddProductOptionProductNotFoundError'
                                    - $ref: '#/components/schemas/AddProductOptionMedicalServiceNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/AddProductOptionProductNotFoundError'
                                                - $ref: '#/components/schemas/AddProductOptionMedicalServiceNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`productId`に該当する商品が存在しません。'
                                    summary: 商品が見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: productId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: メニュー構成に含まれる`medicalServiceId`が存在しません。
                                    summary: 診療項目が見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: medicalServiceId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
    /procedure-menu/open/v1/products/commands/create-product:
        post:
            tags:
                - Product
            operationId: createProduct
            summary: 商品作成
            description: 商品を作成します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenCreateProductCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenCreateProductCommandResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/CreateProductCategoryNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/CreateProductCategoryNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`categoryIds`に存在しないカテゴリIDが含まれている場合です。'
                                    summary: カテゴリが見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: categoryIds
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
    /procedure-menu/open/v1/products/commands/delete-product:
        post:
            tags:
                - Product
            operationId: deleteProduct
            summary: 商品削除
            description: 商品を削除します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenDeleteProductCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/DeleteProductProductNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/DeleteProductProductNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`productId`に該当する商品が存在しません。'
                                    summary: 商品が見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: productId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
    /procedure-menu/open/v1/products/commands/remove-product-option:
        post:
            tags:
                - Product
            operationId: removeProductOption
            summary: 商品メニュー削除
            description: 商品メニューを削除します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenRemoveProductOptionCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/RemoveProductOptionProductNotFoundError'
                                    - $ref: '#/components/schemas/RemoveProductOptionProductOptionNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/RemoveProductOptionProductNotFoundError'
                                                - $ref: '#/components/schemas/RemoveProductOptionProductOptionNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`productId`に該当する商品が存在しません。'
                                    summary: 商品が見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: productId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`id`に該当する商品メニューが存在しません。'
                                    summary: 商品メニューが見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: id
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
    /procedure-menu/open/v1/products/commands/update-product-information:
        post:
            tags:
                - Product
            operationId: updateProductInformation
            summary: 商品情報修正
            description: 商品情報を修正します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenUpdateProductInformationCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/UpdateProductInformationProductNotFoundError'
                                    - $ref: '#/components/schemas/UpdateProductInformationCategoryNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/UpdateProductInformationProductNotFoundError'
                                                - $ref: '#/components/schemas/UpdateProductInformationCategoryNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`id`に該当する商品が存在しません。'
                                    summary: 商品が見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: id
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`categoryIds`に存在しないカテゴリIDが含まれている場合です。'
                                    summary: カテゴリが見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: categoryIds
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
    /procedure-menu/open/v1/products/commands/update-product-option:
        post:
            tags:
                - Product
            operationId: updateProductOption
            summary: 商品メニュー修正
            description: 商品メニューを修正します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenUpdateProductOptionCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/UpdateProductOptionProductNotFoundError'
                                    - $ref: '#/components/schemas/UpdateProductOptionProductOptionNotFoundError'
                                    - $ref: '#/components/schemas/UpdateProductOptionMedicalServiceNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/UpdateProductOptionProductNotFoundError'
                                                - $ref: '#/components/schemas/UpdateProductOptionProductOptionNotFoundError'
                                                - $ref: '#/components/schemas/UpdateProductOptionMedicalServiceNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`productId`に該当する商品が存在しません。'
                                    summary: 商品が見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: productId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`id`に該当する商品メニューが存在しません。'
                                    summary: 商品メニューが見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: id
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: メニュー構成に含まれる`medicalServiceId`が存在しません。
                                    summary: 診療項目が見つからない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: medicalServiceId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
    /purchase/open/prepaid-card/v1/queries/get-prepaid-card-charging-events:
        post:
            tags:
                - PrepaidCard
            operationId: getPrepaidCardChargingEvents
            summary: プリペイドカードイベント照会
            description: |-
                プリペイドカードのチャージ、使用、使用キャンセル、返金、満了、差し引きイベントを照会します。

                IDに該当するプリペイドカードがない場合、空のリストが返されます。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.purchase.GetPrepaidCardChargingEventsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.purchase.GetPrepaidCardChargingEventsQueryResponse'
    /purchase/open/prepaid-card/v1/queries/get-prepaid-card-summaries:
        post:
            tags:
                - PrepaidCard
            operationId: getPrepaidCardSummaries
            summary: プリペイドカードリスト照会
            description: 患者のプリペイドカードリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.purchase.GetPrepaidCardSummariesQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.purchase.GetPrepaidCardSummariesQueryResponse'
    /purchase/open/prepaid-card/v1/queries/get-visitor-prepaid-card-balance:
        post:
            tags:
                - PrepaidCard
            operationId: getVisitorPrepaidCardBalance
            summary: 患者プリペイドカード合算残高照会
            description: 患者が保有する使用可能なプリペイドカードの現金残高とポイント残高を合算して照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.purchase.GetVisitorPrepaidCardBalanceQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.purchase.GetVisitorPrepaidCardBalanceQueryResponse'
    /purchase/open/v1/queries/get-purchase-summaries:
        post:
            tags:
                - Purchase
            operationId: getPurchaseSummaries
            summary: 会計リスト照会
            description: 会計リストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetPurchaseSummariesQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetPurchaseSummariesQueryResponse'
    /purchase/open/v1/queries/get-purchase-summaries-by-visitor-id:
        post:
            tags:
                - Purchase
            operationId: getPurchaseSummariesByVisitor
            summary: 患者の会計リスト照会
            description: 患者の会計リストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.purchase.GetPurchaseSummariesQueryByVisitorId'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.purchase.GetPurchaseSummariesQueryByVisitorIdResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetPurchaseSummariesByVisitorVisitorIdNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetPurchaseSummariesByVisitorVisitorIdNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: 患者IDが空の場合
                                    summary: 患者IDが空の場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
    /schedule/open/v1/commands/cancel-reservation:
        post:
            tags:
                - Schedule
            operationId: cancelReservation
            summary: 予約キャンセル
            description: |-
                既存の予約をキャンセルします。

                予約状態およびクリニックの予約キャンセルポリシーによって、キャンセルが制限される場合があります。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.schedule.CancelReservationCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/CancelReservationScheduleNotFoundError'
                                    - $ref: '#/components/schemas/CancelReservationReservationStatusNotAvailableError'
                                    - $ref: '#/components/schemas/CancelReservationReservationNotAllowedByPolicyError'
                                    - $ref: '#/components/schemas/CancelReservationCancelReasonUnspecifiedError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/CancelReservationScheduleNotFoundError'
                                                - $ref: '#/components/schemas/CancelReservationReservationStatusNotAvailableError'
                                                - $ref: '#/components/schemas/CancelReservationReservationNotAllowedByPolicyError'
                                                - $ref: '#/components/schemas/CancelReservationCancelReasonUnspecifiedError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`scheduleId` に該当するスケジュールが削除されている場合、キャンセルできません。'
                                    summary: スケジュールが見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: 予約状態が `RESERVED` でない場合、キャンセルできません。
                                    summary: 予約状態がキャンセルできない状態の場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: status
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_3:
                                    description: 病院の予約キャンセルポリシーにより予約キャンセルが許可されていない場合、またはキャンセル可能時間が過ぎた場合に発生します。
                                    summary: 予約キャンセルポリシーによりキャンセルできない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: cancellationPolicy
                                              reason: NotAvailable
                                        message: ReservationNotAllowedByPolicy
                                        status: 400
                                error_4:
                                    description: '`CANCEL_RESERVATION_REASON_UNSPECIFIED` は、一般的な予約キャンセルリクエストでは使用しないデフォルト値です。'
                                    summary: 予約キャンセル理由がデフォルト値の場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties: []
                                        message: ""
                                        status: 400
    /schedule/open/v1/commands/change-flow-step:
        post:
            tags:
                - Schedule
            operationId: changeFlowStep
            summary: 診療ステップ変更
            description: スケジュールの診療ステップを変更します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenChangeFlowStepCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/ChangeFlowStepScheduleNotFoundError'
                                    - $ref: '#/components/schemas/ChangeFlowStepCounselorNotFoundError'
                                    - $ref: '#/components/schemas/ChangeFlowStepProceduresNotFoundError'
                                    - $ref: '#/components/schemas/ChangeFlowStepProceduresNotCompletedError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/ChangeFlowStepScheduleNotFoundError'
                                                - $ref: '#/components/schemas/ChangeFlowStepCounselorNotFoundError'
                                                - $ref: '#/components/schemas/ChangeFlowStepProceduresNotFoundError'
                                                - $ref: '#/components/schemas/ChangeFlowStepProceduresNotCompletedError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`scheduleId`に該当するスケジュールが見つかりません。'
                                    summary: スケジュールが見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: '`step`を`CONSULTATION`に変更する際、カウンセラーが設定されていません。'
                                    summary: カウンセリングステップへ変更時にカウンセラーが未設定の場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: counselor
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_3:
                                    description: '`step`を`PROCEDURE_WAITING`または`PROCEDURE`に変更する際、施術リストが存在しません。'
                                    summary: 施術待機・施術ステップへ変更時に施術リストが存在しない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: procedures
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_4:
                                    description: '`step`を`COMPLETED`に変更する際、完了していない施術が残っています。'
                                    summary: 帰宅ステップへ変更時に未完了の施術がある場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: procedures
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
    /schedule/open/v1/commands/create-occupied-time:
        post:
            tags:
                - Schedule
            operationId: createOccupiedTime
            summary: 時間占有作成
            description: 時間占有を作成します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenCreateOccupiedTimeCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenCreateOccupiedTimeCommandResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/CreateOccupiedTimeStartDateTimeNotAvailableError'
                                    - $ref: '#/components/schemas/CreateOccupiedTimeEndDateTimeNotAvailableError'
                                    - $ref: '#/components/schemas/CreateOccupiedTimeInvalidTimeRangeError'
                                    - $ref: '#/components/schemas/CreateOccupiedTimeZoneNotFoundError'
                                    - $ref: '#/components/schemas/CreateOccupiedTimeReservationGroupNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/CreateOccupiedTimeStartDateTimeNotAvailableError'
                                                - $ref: '#/components/schemas/CreateOccupiedTimeEndDateTimeNotAvailableError'
                                                - $ref: '#/components/schemas/CreateOccupiedTimeInvalidTimeRangeError'
                                                - $ref: '#/components/schemas/CreateOccupiedTimeZoneNotFoundError'
                                                - $ref: '#/components/schemas/CreateOccupiedTimeReservationGroupNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`startDateTimeUtc`が有効なdate-time値ではありません。'
                                    summary: 占有開始日時が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: startDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`endDateTimeUtc`が有効なdate-time値ではありません。'
                                    summary: 占有終了日時が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`endDateTimeUtc`は`startDateTimeUtc`より後である必要があり、両日時は同じ日付内で24時間未満である必要があります。'
                                    summary: 占有時間の範囲が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: InvalidTimeRange
                                        message: InvalidCommandException
                                        status: 400
                                error_4:
                                    description: '`zoneId`に該当する区域が見つかりません。'
                                    summary: 区域が見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_5:
                                    description: '`reservationGroupId`に該当する予約グループが見つかりません。'
                                    summary: 予約グループが見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationGroupId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
    /schedule/open/v1/commands/reschedule-by-time-slot:
        post:
            tags:
                - Schedule
            operationId: rescheduleByTimeSlot
            summary: 予約時間スロット基準の予約日時変更
            description: 予約時間スロットを基準に既存スケジュールの予約日時を変更します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.RescheduleByTimeSlotCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/RescheduleByTimeSlotScheduleNotFoundError'
                                    - $ref: '#/components/schemas/RescheduleByTimeSlotReservationNotAllowedByPolicyError'
                                    - $ref: '#/components/schemas/RescheduleByTimeSlotReservationTimeNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/RescheduleByTimeSlotScheduleNotFoundError'
                                                - $ref: '#/components/schemas/RescheduleByTimeSlotReservationNotAllowedByPolicyError'
                                                - $ref: '#/components/schemas/RescheduleByTimeSlotReservationTimeNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`scheduleId`に該当するスケジュールが存在しません。'
                                    summary: '`scheduleId`に該当するスケジュールが存在しない場合'
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: 予約変更の締め切り時間超過など、予約変更ポリシーにより日時変更が許可されていません。
                                    summary: 予約変更ポリシーにより変更が許可されていない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: modificationPolicy
                                              reason: NotAvailable
                                        message: ReservationNotAllowedByPolicy
                                        status: 400
                                error_3:
                                    description: '`reservationDateTimeRange`に該当する時間に予約を作成できません。'
                                    summary: 該当時間が予約不可の場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationDateTimeRange
                                              reason: NotAvailable
                                        message: ReservationTimeNotAvailable
                                        status: 400
    /schedule/open/v1/commands/reserve:
        post:
            tags:
                - Schedule
            operationId: reserveCommand
            summary: 新しい予約を作成
            description: |-
                新規予約を作成します。

                患者情報をもとに、既存の患者を検索します。一致する患者が見つかった場合はその患者で予約を作成し、一致する患者が見つからない場合は新しい患者を作成した上で予約を作成します。

                このAPIはdeprecatedです。新規開発の際は[V2予約作成](/docs/openapi/reserve-v-2)をご利用ください。
            deprecated: true
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.ReserveCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.ReserveCommandResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/ReserveCommandVisitorNameNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveCommandVisitorPhoneNumberNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveCommandVisitorPhoneCountryCodeNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveCommandVisitorPhoneNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveCommandVisitorNotFoundError'
                                    - $ref: '#/components/schemas/ReserveCommandOverlappingReservationError'
                                    - $ref: '#/components/schemas/ReserveCommandReservationCapacityExceededError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/ReserveCommandVisitorNameNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveCommandVisitorPhoneNumberNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveCommandVisitorPhoneCountryCodeNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveCommandVisitorPhoneNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveCommandVisitorNotFoundError'
                                                - $ref: '#/components/schemas/ReserveCommandOverlappingReservationError'
                                                - $ref: '#/components/schemas/ReserveCommandReservationCapacityExceededError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`visitorName`の前後にスペースを含めることはできません。'
                                    summary: 患者名の前後にスペースが含まれる場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: visitorName
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: 患者の重複照会または作成の段階で `visitorPhone.phoneNumber` が無効な場合に発生します。
                                    summary: 患者の電話番号が無効な場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phoneNumber
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: 患者作成の段階で `visitorPhone.countryCode` が無効な場合に発生します。
                                    summary: 患者の電話番号の国コードが無効な場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: countryCode
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_4:
                                    description: 患者作成の段階で `visitorPhone` を有効な電話番号として解析できない場合に発生します。
                                    summary: 患者の電話番号を解析できない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phone
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_5:
                                    description: 患者の照会、または作成後の再照会の段階で、予約に使用する患者が見つかりません。
                                    summary: 患者が見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_6:
                                    description: 同一患者に対して時間が重複する予約がすでに存在します。
                                    summary: 同一患者に対して時間が重複する予約がある場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_7:
                                    description: 病院のポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合はKOSにお問い合わせください。
                                    summary: スロットの定員を超過した場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].reservationTime
                                              reason: NotAvailable
                                        message: ReservationCapacityExceeded
                                        status: 400
    /schedule/open/v1/commands/reserve-by-time-slot:
        post:
            tags:
                - Schedule
            operationId: reserveByTimeSlot
            summary: 予約時間スロット基準の新規予約作成
            description: |-
                予約時間スロットを基準に新しい予約を作成します。

                患者情報を基準に既存患者を検索し、一致する患者がいない場合は新しい患者を作成した上で予約を作成します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.ReserveByTimeSlotCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.ReserveByTimeSlotCommandResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/ReserveByTimeSlotInvalidVisitorNameError'
                                    - $ref: '#/components/schemas/ReserveByTimeSlotReservationRuleNotFoundError'
                                    - $ref: '#/components/schemas/ReserveByTimeSlotReservationRuleNotActivatedError'
                                    - $ref: '#/components/schemas/ReserveByTimeSlotReservationTimeNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveByTimeSlotDuplicatedReservationError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/ReserveByTimeSlotInvalidVisitorNameError'
                                                - $ref: '#/components/schemas/ReserveByTimeSlotReservationRuleNotFoundError'
                                                - $ref: '#/components/schemas/ReserveByTimeSlotReservationRuleNotActivatedError'
                                                - $ref: '#/components/schemas/ReserveByTimeSlotReservationTimeNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveByTimeSlotDuplicatedReservationError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`visitorName`はスペースのみで構成することはできず、前後のスペースも許可されません。'
                                    summary: '`visitorName`が空文字列、または前後にスペースがある場合'
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: visitorName
                                              reason: NotAvailable
                                        message: InvalidVisitorName
                                        status: 400
                                error_2:
                                    description: '`reservationRuleId`に該当する予約ルールが存在しません。'
                                    summary: 予約ルールが存在しない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotFound
                                        message: ReservationRuleNotFound
                                        status: 400
                                error_3:
                                    description: 有効化状態でない予約ルールはスロット照会に使用できません。
                                    summary: 予約ルールが有効化されていない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotAvailable
                                        message: ReservationRuleNotActivated
                                        status: 400
                                error_4:
                                    description: '`reservationDateTimeRange`に該当する時間に予約を作成できません。'
                                    summary: 該当時間が予約不可の場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationDateTimeRange
                                              reason: NotAvailable
                                        message: ReservationTimeNotAvailable
                                        status: 400
                                error_5:
                                    description: '`reservationDateTimeRange`と時間が重複する予約が、該当来院者にすでに存在します。'
                                    summary: 同一来院者に対して時間が重複する予約がすでに存在する場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationDateTimeRange
                                              reason: Duplicated
                                        message: DuplicatedReservation
                                        status: 400
    /schedule/open/v1/commands/reserve-by-time-slot-with-visitor-id:
        post:
            tags:
                - Schedule
            operationId: reserveByTimeSlotWithVisitorId
            summary: 予約時間スロット基準の新規予約作成（患者ID基準）
            description: 既存患者IDと予約時間スロットを基準に新しい予約を作成します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.ReserveByTimeSlotWithVisitorIdCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.ReserveByTimeSlotWithVisitorIdCommandResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/ReserveByTimeSlotWithVisitorIdVisitorNotFoundError'
                                    - $ref: '#/components/schemas/ReserveByTimeSlotWithVisitorIdReservationRuleNotFoundError'
                                    - $ref: '#/components/schemas/ReserveByTimeSlotWithVisitorIdReservationRuleNotActivatedError'
                                    - $ref: '#/components/schemas/ReserveByTimeSlotWithVisitorIdReservationTimeNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveByTimeSlotWithVisitorIdDuplicatedReservationError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/ReserveByTimeSlotWithVisitorIdVisitorNotFoundError'
                                                - $ref: '#/components/schemas/ReserveByTimeSlotWithVisitorIdReservationRuleNotFoundError'
                                                - $ref: '#/components/schemas/ReserveByTimeSlotWithVisitorIdReservationRuleNotActivatedError'
                                                - $ref: '#/components/schemas/ReserveByTimeSlotWithVisitorIdReservationTimeNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveByTimeSlotWithVisitorIdDuplicatedReservationError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`visitorId`に該当する来院者が存在しません。'
                                    summary: '`visitorId`に該当する来院者が存在しない場合'
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: VisitorNotFound
                                        status: 400
                                error_2:
                                    description: '`reservationRuleId`に該当する予約ルールが存在しません。'
                                    summary: 予約ルールが存在しない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotFound
                                        message: ReservationRuleNotFound
                                        status: 400
                                error_3:
                                    description: 有効化状態でない予約ルールはスロット照会に使用できません。
                                    summary: 予約ルールが有効化されていない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotAvailable
                                        message: ReservationRuleNotActivated
                                        status: 400
                                error_4:
                                    description: '`reservationDateTimeRange`に該当する時間に予約を作成できません。'
                                    summary: 該当時間が予約不可の場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationDateTimeRange
                                              reason: NotAvailable
                                        message: ReservationTimeNotAvailable
                                        status: 400
                                error_5:
                                    description: '`reservationDateTimeRange`と時間が重複する予約が、該当来院者にすでに存在します。'
                                    summary: 同一来院者に対して時間が重複する予約がすでに存在する場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationDateTimeRange
                                              reason: Duplicated
                                        message: DuplicatedReservation
                                        status: 400
    /schedule/open/v1/commands/reserve-by-visitor-id:
        post:
            tags:
                - Schedule
            operationId: reserveByVisitorId
            summary: 既存患者の予約作成
            description: |-
                既存の患者IDで予約を作成します。

                このAPIはdeprecatedです。新規開発の際は[V2 API](/docs/openapi/reserve-by-visitor-id-v-2)をご使用ください。
            deprecated: true
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.ReserveByVisitorIdCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.ReserveCommandResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/ReserveByVisitorIdOverlappingReservationError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdVisitorNotFoundError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdReservationCapacityExceededError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/ReserveByVisitorIdOverlappingReservationError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdVisitorNotFoundError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdReservationCapacityExceededError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: 同一患者に対して時間が重複する予約がすでに存在します。
                                    summary: 同一患者に対して時間が重複する予約がある場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: '`visitorId`に該当する患者が見つかりません。'
                                    summary: 患者が見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_3:
                                    description: 病院のポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合はKOSにお問い合わせください。
                                    summary: スロットの定員を超過した場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].reservationTime
                                              reason: NotAvailable
                                        message: ReservationCapacityExceeded
                                        status: 400
    /schedule/open/v1/commands/update-reservation:
        post:
            tags:
                - Schedule
            operationId: updateReservation
            summary: 予約情報修正
            description: |-
                既存スケジュールの予約情報を修正します。

                このAPIはdeprecatedです。新規開発の際は[V2 予約日程修正](/docs/openapi/update-reservation-v-2)を使用してください。

                スケジュールに紐づく予約日程が2件以上の場合、V1 APIでの修正はできません。
            deprecated: true
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.schedule.UpdateReservationCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/UpdateReservationScheduleNotFoundError'
                                    - $ref: '#/components/schemas/UpdateReservationScheduleIdEmptyError'
                                    - $ref: '#/components/schemas/UpdateReservationReservationGroupNotFoundError'
                                    - $ref: '#/components/schemas/UpdateReservationReservationGroupIdEmptyError'
                                    - $ref: '#/components/schemas/UpdateReservationZoneNotFoundError'
                                    - $ref: '#/components/schemas/UpdateReservationStartDateTimeEmptyError'
                                    - $ref: '#/components/schemas/UpdateReservationEndDateTimeEmptyError'
                                    - $ref: '#/components/schemas/UpdateReservationZoneIdEmptyError'
                                    - $ref: '#/components/schemas/UpdateReservationMultipleOccupiedResourcesError'
                                    - $ref: '#/components/schemas/UpdateReservationModificationNotAllowedByPolicyError'
                                    - $ref: '#/components/schemas/UpdateReservationReservationCapacityExceededError'
                                    - $ref: '#/components/schemas/UpdateReservationOverlappingReservationError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/UpdateReservationScheduleNotFoundError'
                                                - $ref: '#/components/schemas/UpdateReservationScheduleIdEmptyError'
                                                - $ref: '#/components/schemas/UpdateReservationReservationGroupNotFoundError'
                                                - $ref: '#/components/schemas/UpdateReservationReservationGroupIdEmptyError'
                                                - $ref: '#/components/schemas/UpdateReservationZoneNotFoundError'
                                                - $ref: '#/components/schemas/UpdateReservationStartDateTimeEmptyError'
                                                - $ref: '#/components/schemas/UpdateReservationEndDateTimeEmptyError'
                                                - $ref: '#/components/schemas/UpdateReservationZoneIdEmptyError'
                                                - $ref: '#/components/schemas/UpdateReservationMultipleOccupiedResourcesError'
                                                - $ref: '#/components/schemas/UpdateReservationModificationNotAllowedByPolicyError'
                                                - $ref: '#/components/schemas/UpdateReservationReservationCapacityExceededError'
                                                - $ref: '#/components/schemas/UpdateReservationOverlappingReservationError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`scheduleId`に該当するスケジュールが見つかりません。'
                                    summary: スケジュールが見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_10:
                                    description: 予約変更ポリシーまたは変更締め切り時間の条件により、予約を変更することができません。
                                    summary: 予約変更ポリシーにより変更できない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: modificationPolicy
                                              reason: NotAvailable
                                        message: ReservationNotAllowedByPolicy
                                        status: 400
                                error_11:
                                    description: 病院ポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合はKOSにお問い合わせください。
                                    summary: スロット定員が超過した場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].reservationTime
                                              reason: NotAvailable
                                        message: ReservationCapacityExceeded
                                        status: 400
                                error_12:
                                    description: 同一患者に対して時間が重複する予約がすでに存在します。
                                    summary: 同一患者に対して時間が重複する予約がある場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: スケジュールIDが空の場合
                                    summary: スケジュールIDが空の場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: streamId
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_3:
                                    description: '`reservationGroupId`に該当する予約グループが見つかりません。'
                                    summary: 予約グループが見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: id
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_4:
                                    description: 予約グループIDが空の場合
                                    summary: 予約グループIDが空の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: groupId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_5:
                                    description: '`zoneId`に該当する区域が見つかりません。'
                                    summary: 予約区域が見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_6:
                                    description: 予約開始日時が空の場合
                                    summary: 予約開始日時が空の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_7:
                                    description: 予約終了日時が空の場合
                                    summary: 予約終了日時が空の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTime
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_8:
                                    description: 予約区域IDが空の場合
                                    summary: 予約区域IDが空の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_9:
                                    description: スケジュールに複数の予約日程がある場合、V1 APIで予約日程を修正することはできません。
                                    summary: 複数の予約日程があるスケジュールをV1で修正しようとする場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources
                                              reason: NotAvailable
                                        message: MultipleOccupiedResources
                                        status: 400
    /schedule/open/v1/commands/update-schedule-consultation-info:
        post:
            tags:
                - Schedule
            operationId: updateScheduleConsultationInfo
            summary: スケジュールカウンセリング情報修正
            description: スケジュールのカウンセリング情報を修正します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenUpdateScheduleConsultationInfoCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/UpdateScheduleConsultationInfoScheduleNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/UpdateScheduleConsultationInfoScheduleNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`scheduleId`に該当するスケジュールが見つかりません。'
                                    summary: スケジュールが見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
    /schedule/open/v1/linked-products/queries/get-linked-products:
        post:
            tags:
                - Schedule
            operationId: getLinkedProducts
            summary: 予約グループ紐付け商品照会
            description: 予約グループに紐付けられた商品およびオプション一覧を照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetLinkedProductsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetLinkedProductsQueryResponse'
    /schedule/open/v1/queries/find-schedule-by-purchase-id:
        post:
            tags:
                - Schedule
            operationId: findScheduleByPurchaseId
            summary: 会計IDでスケジュール照会
            description: 会計に紐づいたスケジュールの詳細情報を照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.FindScheduleByPurchaseIdQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.FindScheduleByPurchaseIdQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/FindScheduleByPurchaseIdPurchaseIdNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/FindScheduleByPurchaseIdPurchaseIdNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: 会計IDに該当するスケジュールが見つからない場合
                                    summary: 会計IDに該当するスケジュールが見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: purchaseId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
    /schedule/open/v1/queries/get-reschedulable-time-slots:
        post:
            tags:
                - Schedule
            operationId: getReschedulableTimeSlots
            summary: スケジュールIDで予約日時を変更可能な予約時間スロット照会
            description: 既存スケジュールの予約日時を変更できる時間スロットを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetReschedulableTimeSlotsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetReschedulableTimeSlotsQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetReschedulableTimeSlotsScheduleNotFoundError'
                                    - $ref: '#/components/schemas/GetReschedulableTimeSlotsReservationNotAllowedByPolicyError'
                                    - $ref: '#/components/schemas/GetReschedulableTimeSlotsInvalidDateTimeRangeError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetReschedulableTimeSlotsScheduleNotFoundError'
                                                - $ref: '#/components/schemas/GetReschedulableTimeSlotsReservationNotAllowedByPolicyError'
                                                - $ref: '#/components/schemas/GetReschedulableTimeSlotsInvalidDateTimeRangeError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`scheduleId`に該当するスケジュールが存在しません。'
                                    summary: '`scheduleId`に該当するスケジュールが存在しない場合'
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: ScheduleNotFound
                                        status: 400
                                error_2:
                                    description: 予約変更の締め切り時間超過など、予約変更ポリシーにより日時変更が許可されていません。
                                    summary: 予約変更ポリシーにより変更が許可されていない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: modificationPolicy
                                              reason: NotAvailable
                                        message: ReservationNotAllowedByPolicy
                                        status: 400
                                error_3:
                                    description: '[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 形式でない場合や、開始時間が終了時間より後になっている場合など'
                                    summary: '`dateTimeRange`の形式が正しくない場合'
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: dateTimeRange
                                              reason: NotAvailable
                                        message: InvalidDateTimeRange
                                        status: 400
    /schedule/open/v1/queries/get-reservation-groups:
        post:
            tags:
                - Schedule
            operationId: getReservationGroups
            summary: 予約グループリスト照会
            description: 予約グループのリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.Empty'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetReservationGroupsQueryResponse'
    /schedule/open/v1/queries/get-reservation-rule-summaries:
        post:
            tags:
                - Schedule
            operationId: getReservationRuleSummaries
            summary: 予約ルールリスト照会
            description: 予約ルールのリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetReservationRuleSummariesQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetReservationRuleSummariesQueryResponse'
    /schedule/open/v1/queries/get-reservation-slots-by-group:
        post:
            tags:
                - Schedule
            operationId: getReservationSlotsByGroup
            summary: 予約グループで予約スロット照会
            description: 予約グループを基準に予約可能なスロットを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetReservationSlotsByGroupQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetReservationSlotsQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetReservationSlotsByGroupTimezoneNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetReservationSlotsByGroupTimezoneNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`timezone` が有効なIANA time zone databaseの名前ではありません。'
                                    summary: タイムゾーンが正しくない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: timezone
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
    /schedule/open/v1/queries/get-reservation-slots-by-product:
        post:
            tags:
                - Schedule
            operationId: getReservationSlotsByProduct
            summary: 商品メニューで予約スロット照会
            description: |-
                商品メニューIDを基準に予約可能なスロットを照会します。

                商品メニューに連携された予約グループがない場合は、デフォルト予約グループを基準に照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetReservationSlotsByProductQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetReservationSlotsQueryResponse'
    /schedule/open/v1/queries/get-reservation-slots-by-schedule-id:
        post:
            tags:
                - Schedule
            operationId: getReservationSlotsByScheduleId
            summary: スケジュールIDで予約スロット照会
            description: |-
                スケジュールIDを基準に予約スロットを照会します。

                既存の予約時間を変更する前に、使用可能な予約スロットを確認する際に使用します。新規開発には `getReservationSlotsByScheduleIdV2` を使用します。
            deprecated: true
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetReservationSlotsByScheduleIdQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetReservationSlotsQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdStartDateTimeNotAvailableError'
                                    - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdEndDateTimeNotAvailableError'
                                    - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdScheduleIdNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdStartDateTimeNotAvailableError'
                                                - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdEndDateTimeNotAvailableError'
                                                - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdScheduleIdNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`startDateTimeUtc` が正しいdate-time値ではありません。'
                                    summary: 照会範囲の開始日時が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: startDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`endDateTimeUtc` が正しいdate-time値ではありません。'
                                    summary: 照会範囲の終了日時が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`scheduleId`が空文字列の場合、このエラーが発生します。'
                                    summary: スケジュールIDが空文字列の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
    /schedule/open/v1/queries/get-reservation-time-slots:
        post:
            tags:
                - Schedule
            operationId: getReservationTimeSlots
            summary: 予約ルールで予約時間スロット照会
            description: 予約ルールと照会条件に一致する予約時間スロットを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetReservationTimeSlotsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetReservationTimeSlotsQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetReservationTimeSlotsReservationRuleNotFoundError'
                                    - $ref: '#/components/schemas/GetReservationTimeSlotsReservationRuleNotActivatedError'
                                    - $ref: '#/components/schemas/GetReservationTimeSlotsInvalidDateTimeRangeError'
                                    - $ref: '#/components/schemas/GetReservationTimeSlotsOccupancyPlanNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetReservationTimeSlotsReservationRuleNotFoundError'
                                                - $ref: '#/components/schemas/GetReservationTimeSlotsReservationRuleNotActivatedError'
                                                - $ref: '#/components/schemas/GetReservationTimeSlotsInvalidDateTimeRangeError'
                                                - $ref: '#/components/schemas/GetReservationTimeSlotsOccupancyPlanNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`reservationRuleId`に該当する予約ルールが存在しません。'
                                    summary: 予約ルールが存在しない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotFound
                                        message: ReservationRuleNotFound
                                        status: 400
                                error_2:
                                    description: 有効化状態でない予約ルールはスロット照会に使用できません。
                                    summary: 予約ルールが有効化されていない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotAvailable
                                        message: ReservationRuleNotActivated
                                        status: 400
                                error_3:
                                    description: '[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 形式でない場合や、開始時間が終了時間より後になっている場合など'
                                    summary: '`dateTimeRange`の形式が正しくない場合'
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: dateTimeRange
                                              reason: NotAvailable
                                        message: InvalidDateTimeRange
                                        status: 400
                                error_4:
                                    description: 予約ルールに基づく占有プランを生成できません。
                                    summary: 予約ルールに基づく占有計画が成立しない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupancyPlan
                                              reason: NotFound
                                        message: OccupancyPlanNotFound
                                        status: 400
    /schedule/open/v1/queries/get-reservation-time-slots-by-visitor-id:
        post:
            tags:
                - Schedule
            operationId: getReservationTimeSlotsByVisitorId
            summary: 患者IDで予約ルール基準の予約時間スロット照会
            description: 患者IDを基準に患者属性を反映して予約時間スロットを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetReservationTimeSlotsByVisitorIdQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetReservationTimeSlotsByVisitorIdQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetReservationTimeSlotsByVisitorIdVisitorNotFoundError'
                                    - $ref: '#/components/schemas/GetReservationTimeSlotsByVisitorIdReservationRuleNotFoundError'
                                    - $ref: '#/components/schemas/GetReservationTimeSlotsByVisitorIdReservationRuleNotActivatedError'
                                    - $ref: '#/components/schemas/GetReservationTimeSlotsByVisitorIdInvalidDateTimeRangeError'
                                    - $ref: '#/components/schemas/GetReservationTimeSlotsByVisitorIdOccupancyPlanNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetReservationTimeSlotsByVisitorIdVisitorNotFoundError'
                                                - $ref: '#/components/schemas/GetReservationTimeSlotsByVisitorIdReservationRuleNotFoundError'
                                                - $ref: '#/components/schemas/GetReservationTimeSlotsByVisitorIdReservationRuleNotActivatedError'
                                                - $ref: '#/components/schemas/GetReservationTimeSlotsByVisitorIdInvalidDateTimeRangeError'
                                                - $ref: '#/components/schemas/GetReservationTimeSlotsByVisitorIdOccupancyPlanNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`visitorId`に該当する来院者が存在しません。'
                                    summary: '`visitorId`に該当する来院者が存在しない場合'
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: '`reservationRuleId`に該当する予約ルールが存在しません。'
                                    summary: 予約ルールが存在しない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotFound
                                        message: ReservationRuleNotFound
                                        status: 400
                                error_3:
                                    description: 有効化状態でない予約ルールはスロット照会に使用できません。
                                    summary: 予約ルールが有効化されていない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotAvailable
                                        message: ReservationRuleNotActivated
                                        status: 400
                                error_4:
                                    description: '[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 形式でない場合や、開始時間が終了時間より後になっている場合など'
                                    summary: '`dateTimeRange`の形式が正しくない場合'
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: dateTimeRange
                                              reason: NotAvailable
                                        message: InvalidDateTimeRange
                                        status: 400
                                error_5:
                                    description: 予約ルールに基づく占有プランを生成できません。
                                    summary: 予約ルールに基づく占有計画が成立しない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupancyPlan
                                              reason: NotFound
                                        message: OccupancyPlanNotFound
                                        status: 400
    /schedule/open/v1/queries/get-schedule-detail:
        post:
            tags:
                - Schedule
            operationId: getScheduleDetail
            summary: スケジュール詳細照会
            description: スケジュールの詳細情報を照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.schedule.schedule.GetScheduleDetailQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.schedule.schedule.GetScheduleDetailQueryResponse'
    /schedule/open/v1/queries/get-schedules-by-flow-step:
        post:
            tags:
                - Schedule
            operationId: getSchedulesByFlowStep
            summary: flowStepと予約開始日時の範囲でスケジュール照会
            description: 来院段階と予約開始日時の範囲でスケジュール一覧を照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetSchedulesByFlowStepQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetSchedulesByFlowStepQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetSchedulesByFlowStepFlowStepNotAvailableError'
                                    - $ref: '#/components/schemas/GetSchedulesByFlowStepReservationStartDateTimeUtcFromNotAvailableError'
                                    - $ref: '#/components/schemas/GetSchedulesByFlowStepReservationStartDateTimeUtcToNotAvailableError'
                                    - $ref: '#/components/schemas/GetSchedulesByFlowStepReservationStartDateTimeRangeInvalidError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetSchedulesByFlowStepFlowStepNotAvailableError'
                                                - $ref: '#/components/schemas/GetSchedulesByFlowStepReservationStartDateTimeUtcFromNotAvailableError'
                                                - $ref: '#/components/schemas/GetSchedulesByFlowStepReservationStartDateTimeUtcToNotAvailableError'
                                                - $ref: '#/components/schemas/GetSchedulesByFlowStepReservationStartDateTimeRangeInvalidError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: 来院段階が正しくない場合
                                    summary: 来院段階が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: flowSteps
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`reservationStartDateTimeUtcFrom`が正しいdate-time値ではありません。'
                                    summary: 照会範囲の開始日時が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: startDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`reservationStartDateTimeUtcTo`が正しいdate-time値ではありません。'
                                    summary: 照会範囲の終了日時が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_4:
                                    description: '`reservationStartDateTimeUtcTo`が`reservationStartDateTimeUtcFrom`より前です。'
                                    summary: 照会範囲の終了日時が開始日時より前の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: InvalidTimeRange
                                        message: InvalidCommandException
                                        status: 400
    /schedule/open/v1/queries/get-schedules-by-visitor:
        post:
            tags:
                - Schedule
            operationId: getSchedulesByVisitor
            summary: 患者のスケジュールリスト照会
            description: 患者のスケジュールリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.schedule.schedule.GetSchedulesByVisitorQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.schedule.schedule.GetSchedulesByVisitorQueryResponse'
    /schedule/open/v1/queries/get-schedules-summarized-by-tasks:
        post:
            tags:
                - Schedule
            operationId: getSchedulesSummarizedByTask
            summary: 患者の施術履歴照会
            description: 患者が病院で受けた施術履歴をスケジュール別に照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.schedule.schedule.GetSchedulesSummarizedByTaskQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.schedule.schedule.GetSchedulesSummarizedByTaskQueryResponse'
    /schedule/open/v2/commands/reserve:
        post:
            tags:
                - Schedule
            operationId: reserveV2
            summary: 新しい予約を作成
            description: |-
                複数の予約スケジュールで新しい予約を作成します。

                患者情報をもとに既存患者を検索します。一致する患者が見つかった場合はその患者で予約を作成し、見つからない場合は新しい患者を作成した上で予約を作成します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenReserveCommandV2'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenReserveCommandV2Response'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/ReserveV2VisitorNameNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveV2VisitorPhoneNumberNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveV2VisitorPhoneCountryCodeNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveV2VisitorPhoneNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveV2VisitorNotFoundError'
                                    - $ref: '#/components/schemas/ReserveV2OccupiedResourcesRequiredError'
                                    - $ref: '#/components/schemas/ReserveV2OccupiedResourcesDifferentDateError'
                                    - $ref: '#/components/schemas/ReserveV2ZoneNotFoundError'
                                    - $ref: '#/components/schemas/ReserveV2OccupiedResourceZoneNotInGroupError'
                                    - $ref: '#/components/schemas/ReserveV2OccupiedResourceReservationGroupIdNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveV2OccupiedResourceReservationGroupNotFoundError'
                                    - $ref: '#/components/schemas/ReserveV2OccupiedResourceConfigurationRequiredError'
                                    - $ref: '#/components/schemas/ReserveV2OverlappingReservationError'
                                    - $ref: '#/components/schemas/ReserveV2ReservationCapacityExceededError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/ReserveV2VisitorNameNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveV2VisitorPhoneNumberNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveV2VisitorPhoneCountryCodeNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveV2VisitorPhoneNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveV2VisitorNotFoundError'
                                                - $ref: '#/components/schemas/ReserveV2OccupiedResourcesRequiredError'
                                                - $ref: '#/components/schemas/ReserveV2OccupiedResourcesDifferentDateError'
                                                - $ref: '#/components/schemas/ReserveV2ZoneNotFoundError'
                                                - $ref: '#/components/schemas/ReserveV2OccupiedResourceZoneNotInGroupError'
                                                - $ref: '#/components/schemas/ReserveV2OccupiedResourceReservationGroupIdNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveV2OccupiedResourceReservationGroupNotFoundError'
                                                - $ref: '#/components/schemas/ReserveV2OccupiedResourceConfigurationRequiredError'
                                                - $ref: '#/components/schemas/ReserveV2OverlappingReservationError'
                                                - $ref: '#/components/schemas/ReserveV2ReservationCapacityExceededError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`visitorName` の前後にスペースを含めることはできません。'
                                    summary: 患者名の前後にスペースがある場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: visitorName
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_10:
                                    description: '`occupiedResources[].reservationGroup.reservationGroupId`が有効なobject-id形式ではありません。'
                                    summary: 予約日程の予約グループID形式が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[].reservationGroup.reservationGroupId
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_11:
                                    description: '`occupiedResources[].reservationGroup.reservationGroupId`に該当する予約グループが見つかりません。'
                                    summary: 予約日程の予約グループが見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[].reservationGroup.reservationGroupId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_12:
                                    description: 各`occupiedResources`項目には予約グループの設定が必要です。
                                    summary: 予約日程の設定が不足している場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[0].configuration
                                              reason: Required
                                        message: MissingOccupiedResourceConfiguration
                                        status: 400
                                error_13:
                                    description: 同じ患者に対して、時間が重複する予約がすでに存在します。
                                    summary: 同一患者に対して時間が重複する予約がある場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_14:
                                    description: 病院のポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合は、KOSにお問い合わせください。
                                    summary: スロットの定員を超えた場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].reservationTime
                                              reason: NotAvailable
                                        message: ReservationCapacityExceeded
                                        status: 400
                                error_2:
                                    description: 患者の重複照会または作成の段階で `visitorPhone.phoneNumber` が無効な場合に発生します。
                                    summary: 患者の電話番号が無効な場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phoneNumber
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: 患者作成の段階で `visitorPhone.countryCode` が無効な場合に発生します。
                                    summary: 患者の電話番号の国コードが無効な場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: countryCode
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_4:
                                    description: 患者作成の段階で `visitorPhone` を有効な電話番号として解析できない場合に発生します。
                                    summary: 患者の電話番号を解析できない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phone
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_5:
                                    description: 患者の照会、または作成後の再照会の段階で、予約に使用する患者が見つかりません。
                                    summary: 患者が見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_6:
                                    description: '`occupiedResources`は最低1つ以上必要です。'
                                    summary: 予約日程が空の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources
                                              reason: Required
                                        message: InvalidCommandException
                                        status: 400
                                error_7:
                                    description: すべての`occupiedResources`の予約開始日時は同じ日付である必要があります。
                                    summary: 予約日程の日付が互いに異なる場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[1].reservationTime.startDateTimeUtc
                                              reason: NotAvailable
                                        message: DifferentDateInOccupiedResources
                                        status: 400
                                error_8:
                                    description: '`zoneId`に該当する区域が見つかりません。'
                                    summary: zoneIdに該当する区域が存在しない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: NotFoundZone
                                        status: 400
                                error_9:
                                    description: 予約日程の`zoneId`が該当予約グループに属していません。
                                    summary: 予約日程の区域が予約グループに属していない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].zoneId
                                              reason: NotFound
                                        message: ZoneNotInReservationGroup
                                        status: 400
    /schedule/open/v2/commands/reserve-by-visitor-id:
        post:
            tags:
                - Schedule
            operationId: reserveByVisitorIdV2
            summary: 既存患者の予約作成
            description: 既存の患者IDを使用して、複数の予約日程を含む予約を作成します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenReserveByVisitorIdCommandV2'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenReserveCommandV2Response'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/ReserveByVisitorIdV2VisitorNotFoundError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourcesRequiredError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourcesDifferentDateError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdV2ZoneNotFoundError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourceZoneNotInGroupError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourceReservationGroupIdNotAvailableError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourceReservationGroupNotFoundError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourceConfigurationRequiredError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdV2OverlappingReservationError'
                                    - $ref: '#/components/schemas/ReserveByVisitorIdV2ReservationCapacityExceededError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/ReserveByVisitorIdV2VisitorNotFoundError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourcesRequiredError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourcesDifferentDateError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdV2ZoneNotFoundError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourceZoneNotInGroupError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourceReservationGroupIdNotAvailableError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourceReservationGroupNotFoundError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdV2OccupiedResourceConfigurationRequiredError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdV2OverlappingReservationError'
                                                - $ref: '#/components/schemas/ReserveByVisitorIdV2ReservationCapacityExceededError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`visitorId`に該当する患者が見つかりません。'
                                    summary: 患者が見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_10:
                                    description: 病院のポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合はKOSにお問い合わせください。
                                    summary: スロット定員を超過した場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].reservationTime
                                              reason: NotAvailable
                                        message: ReservationCapacityExceeded
                                        status: 400
                                error_2:
                                    description: '`occupiedResources`は最低1件以上必要です。'
                                    summary: 予約日程が空の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources
                                              reason: Required
                                        message: OccupiedResourcesEmpty
                                        status: 400
                                error_3:
                                    description: すべての`occupiedResources`の予約開始日時は同じ日付である必要があります。
                                    summary: 予約日程の日付が互いに異なる場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[1].reservationTime.startDateTimeUtc
                                              reason: NotAvailable
                                        message: DifferentDateInOccupiedResources
                                        status: 400
                                error_4:
                                    description: '`zoneId`に該当する区域が見つかりません。'
                                    summary: zoneIdに該当する区域が存在しない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: NotFoundZone
                                        status: 400
                                error_5:
                                    description: 予約日程の`zoneId`が該当予約グループに属していません。
                                    summary: 予約日程の区域が予約グループに属していない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].zoneId
                                              reason: NotFound
                                        message: ZoneNotInReservationGroup
                                        status: 400
                                error_6:
                                    description: '`occupiedResources[].reservationGroup.reservationGroupId`が有効なobject-id形式ではありません。'
                                    summary: 予約日程の予約グループID形式が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[].reservationGroup.reservationGroupId
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_7:
                                    description: '`occupiedResources[].reservationGroup.reservationGroupId`に該当する予約グループが見つかりません。'
                                    summary: 予約日程の予約グループが見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[].reservationGroup.reservationGroupId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_8:
                                    description: 各`occupiedResources`項目には予約グループの設定が必要です。
                                    summary: 予約日程の設定が不足している場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[0].configuration
                                              reason: Required
                                        message: MissingOccupiedResourceConfiguration
                                        status: 400
                                error_9:
                                    description: 同一患者に対して時間が重複する予約がすでに存在します。
                                    summary: 同一患者に対して時間が重複する予約が存在する場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
    /schedule/open/v2/commands/update-reservation:
        post:
            tags:
                - Schedule
            operationId: updateReservationV2
            summary: 予約日程の修正
            description: |-
                既存の予約の受付区域と予約スケジュールのリストを変更します。

                予約変更ポリシーを検証した後、変更を適用します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenUpdateReservationCommandV2'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/UpdateReservationV2ScheduleNotFoundError'
                                    - $ref: '#/components/schemas/UpdateReservationV2OccupiedResourcesRequiredError'
                                    - $ref: '#/components/schemas/UpdateReservationV2OccupiedResourcesDifferentDateError'
                                    - $ref: '#/components/schemas/UpdateReservationV2ZoneNotFoundError'
                                    - $ref: '#/components/schemas/UpdateReservationV2OccupiedResourceZoneNotInGroupError'
                                    - $ref: '#/components/schemas/UpdateReservationV2OccupiedResourceConfigurationRequiredError'
                                    - $ref: '#/components/schemas/UpdateReservationV2ModificationNotAllowedByPolicyError'
                                    - $ref: '#/components/schemas/UpdateReservationV2ReservationCapacityExceededError'
                                    - $ref: '#/components/schemas/UpdateReservationV2OverlappingReservationError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/UpdateReservationV2ScheduleNotFoundError'
                                                - $ref: '#/components/schemas/UpdateReservationV2OccupiedResourcesRequiredError'
                                                - $ref: '#/components/schemas/UpdateReservationV2OccupiedResourcesDifferentDateError'
                                                - $ref: '#/components/schemas/UpdateReservationV2ZoneNotFoundError'
                                                - $ref: '#/components/schemas/UpdateReservationV2OccupiedResourceZoneNotInGroupError'
                                                - $ref: '#/components/schemas/UpdateReservationV2OccupiedResourceConfigurationRequiredError'
                                                - $ref: '#/components/schemas/UpdateReservationV2ModificationNotAllowedByPolicyError'
                                                - $ref: '#/components/schemas/UpdateReservationV2ReservationCapacityExceededError'
                                                - $ref: '#/components/schemas/UpdateReservationV2OverlappingReservationError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`scheduleId`に該当するスケジュールが見つかりません。'
                                    summary: スケジュールが見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: NotFoundSchedule
                                        status: 400
                                error_2:
                                    description: '`occupiedResources`は最低1件以上必要です。'
                                    summary: 予約日程が空の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources
                                              reason: Required
                                        message: OccupiedResourcesEmpty
                                        status: 400
                                error_3:
                                    description: すべての`occupiedResources`の予約開始日時は同じ日付である必要があります。
                                    summary: 予約日程の日付が異なる場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[1].reservationTime.startDateTimeUtc
                                              reason: NotAvailable
                                        message: DifferentDateInOccupiedResources
                                        status: 400
                                error_4:
                                    description: '`zoneId`に該当する区域が見つかりません。'
                                    summary: zoneIdに該当する区域が存在しない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: NotFoundZone
                                        status: 400
                                error_5:
                                    description: 予約日程の`zoneId`が該当する予約グループに属していません。
                                    summary: 予約日程の区域が予約グループに属していない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].zoneId
                                              reason: NotFound
                                        message: ZoneNotInReservationGroup
                                        status: 400
                                error_6:
                                    description: 各`occupiedResources`項目には予約グループの設定が必要です。
                                    summary: 予約日程の設定が不足している場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[0].configuration
                                              reason: Required
                                        message: MissingOccupiedResourceConfiguration
                                        status: 400
                                error_7:
                                    description: 予約変更ポリシーまたは変更締切時間の条件により、予約を変更できません。
                                    summary: 予約変更ポリシーにより変更できない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: modificationPolicy
                                              reason: NotAvailable
                                        message: ReservationNotAllowedByPolicy
                                        status: 400
                                error_8:
                                    description: 病院ポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合はKOSにお問い合わせください。
                                    summary: スロットの定員を超過した場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].reservationTime
                                              reason: NotAvailable
                                        message: ReservationCapacityExceeded
                                        status: 400
                                error_9:
                                    description: 同一の患者に対して時間が重複する予約がすでに存在します。
                                    summary: 同一の患者に対して時間が重複する予約がある場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
    /schedule/open/v2/queries/get-reservation-slots-by-groups:
        post:
            tags:
                - Schedule
            operationId: getReservationSlotsByGroupsV2
            summary: 複数の予約グループの予約スロット照会
            description: 複数の予約グループの予約スロットを一度に照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetReservationSlotsByGroupsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetReservationSlotsByGroupsQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetReservationSlotsByGroupsV2ReservationGroupIdsRequiredError'
                                    - $ref: '#/components/schemas/GetReservationSlotsByGroupsV2StartDateTimeNotAvailableError'
                                    - $ref: '#/components/schemas/GetReservationSlotsByGroupsV2EndDateTimeNotAvailableError'
                                    - $ref: '#/components/schemas/GetReservationSlotsByGroupsV2InvalidTimeRangeError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetReservationSlotsByGroupsV2ReservationGroupIdsRequiredError'
                                                - $ref: '#/components/schemas/GetReservationSlotsByGroupsV2StartDateTimeNotAvailableError'
                                                - $ref: '#/components/schemas/GetReservationSlotsByGroupsV2EndDateTimeNotAvailableError'
                                                - $ref: '#/components/schemas/GetReservationSlotsByGroupsV2InvalidTimeRangeError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`reservationGroupIds`は最低1つ以上必要です。'
                                    summary: 予約グループIDリストが空の場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationGroupIds
                                              reason: Required
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: '`startDateTimeUtc`が有効なdate-time値ではありません。'
                                    summary: 照会範囲の開始日時が正しくない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_3:
                                    description: '`endDateTimeUtc`が有効なdate-time値ではありません。'
                                    summary: 照会範囲の終了日時が正しくない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_4:
                                    description: '`endDateTimeUtc`は`startDateTimeUtc`より前にすることはできません。'
                                    summary: 終了日時が開始日時より前の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: InvalidTimeRange
                                        message: InvalidCommandException
                                        status: 400
    /schedule/open/v2/queries/get-reservation-slots-by-schedule-id:
        post:
            tags:
                - Schedule
            operationId: getReservationSlotsByScheduleIdV2
            summary: スケジュールに基づく予約スロット照会
            description: 特定スケジュールの予約日程ごとの利用可能スロットを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetReservationSlotsByScheduleIdQueryV2'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetReservationSlotsByScheduleIdQueryV2Response'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdV2ScheduleIdEmptyError'
                                    - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdV2StartDateTimeNotAvailableError'
                                    - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdV2EndDateTimeNotAvailableError'
                                    - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdV2InvalidTimeRangeError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdV2ScheduleIdEmptyError'
                                                - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdV2StartDateTimeNotAvailableError'
                                                - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdV2EndDateTimeNotAvailableError'
                                                - $ref: '#/components/schemas/GetReservationSlotsByScheduleIdV2InvalidTimeRangeError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`scheduleId`が空文字列の場合、このエラーが発生します。'
                                    summary: スケジュールIDが空文字列の場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: '`startDateTimeUtc` が有効な date-time 値ではありません。'
                                    summary: 照会範囲の開始日時が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: startDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`endDateTimeUtc` が有効な date-time 値ではありません。'
                                    summary: 照会範囲の終了日時が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_4:
                                    description: '`endDateTimeUtc` は `startDateTimeUtc` より前の日時にすることはできません。'
                                    summary: 照会範囲の終了日時が開始日時より前の場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: InvalidTimeRange
                                        message: InvalidCommandException
                                        status: 400
    /schedule/open/zone/v1/queries/get-zone:
        post:
            tags:
                - Schedule
            operationId: getZone
            summary: 区域照会
            description: 特定の区域情報を照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.schedule.zone.GetZoneQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.schedule.zone.GetZoneQueryResponse'
    /schedule/open/zone/v1/queries/get-zones:
        post:
            tags:
                - Schedule
            operationId: getZones
            summary: 区域全件照会
            description: 病院に登録された区域リストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.Empty'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.schedule.zone.GetZonesResponse'
    /statistics/open/v1/queries/get-prepaid-card-charging-event-statistics:
        post:
            tags:
                - Statistics
            operationId: getPrepaidCardChargingEventStatistics
            summary: プリペイドカード履歴統計照会
            description: プリペイドカード履歴統計リストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetPrepaidCardChargingEventStatisticsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetPrepaidCardChargingEventStatisticsQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetPrepaidCardChargingEventStatisticsLimitTooSmallError'
                                    - $ref: '#/components/schemas/GetPrepaidCardChargingEventStatisticsCursorWithoutLimitError'
                                    - $ref: '#/components/schemas/GetPrepaidCardChargingEventStatisticsCursorNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetPrepaidCardChargingEventStatisticsLimitTooSmallError'
                                                - $ref: '#/components/schemas/GetPrepaidCardChargingEventStatisticsCursorWithoutLimitError'
                                                - $ref: '#/components/schemas/GetPrepaidCardChargingEventStatisticsCursorNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`limit`は1以上である必要があります。'
                                    summary: '`limit`が0以下の場合'
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: limit
                                              reason: TooSmall
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`cursor`は`limit`と一緒に使用する必要があります。'
                                    summary: '`limit`なしで`cursor`のみ送信した場合'
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: limit
                                              reason: Required
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`cursor`の値が無効です。'
                                    summary: '`cursor`が無効な場合'
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: cursor
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
    /statistics/open/v1/queries/get-procedure-task-statistics:
        post:
            tags:
                - Statistics
            operationId: getProcedureTaskStatistics
            summary: 施術タスク統計照会
            description: |
                施術タスク統計データを照会します。

                **エラー**

                | キー | 理由 | 説明 |
                | --- | --- | --- |
                | `limit` | `TooSmall` | `limit`が1未満の場合 |
                | `limit` | `Required` | `cursor`送信時に`limit`がない場合 |
                | `cursor` | `NotAvailable` | `cursor`が有効でない場合 |
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetProcedureTaskStatisticsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetProcedureTaskStatisticsQueryResponse'
    /statistics/open/v1/queries/get-purchase-item-statistics:
        post:
            tags:
                - Statistics
            operationId: getPurchaseItemStatistics
            summary: 購入項目統計照会
            description: |
                購入項目統計データを照会します。

                **エラー**

                | キー | 理由 | 説明 |
                | --- | --- | --- |
                | `limit` | `TooSmall` | `limit`が1未満の場合 |
                | `limit` | `Required` | `cursor`送信時に`limit`がない場合 |
                | `cursor` | `NotAvailable` | `cursor`が有効でない場合 |
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetPurchaseItemStatisticsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetPurchaseItemStatisticsQueryResponse'
    /statistics/open/v1/queries/get-schedule-statistics:
        post:
            tags:
                - Statistics
            operationId: getScheduleStatistics
            summary: 予約統計照会
            description: |
                予約統計データを照会します。

                `reservationStartDateTimeUtc`範囲と`reservedDateTimeUtc`範囲のうち、少なくとも一方を必ず送信してください。

                **エラー**

                | キー | 理由 | 説明 |
                | --- | --- | --- |
                | `limit` | `TooSmall` | `limit`が1未満の場合 |
                | `limit` | `Required` | `cursor`送信時に`limit`がない場合 |
                | `cursor` | `NotAvailable` | `cursor`が有効でない場合 |
                | `reservationDate` | `Required` | 予約日時範囲と予約作成日時範囲がどちらもない場合 |
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetScheduleStatisticsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetScheduleStatisticsQueryResponse'
    /statistics/open/v1/queries/get-transaction-statistics:
        post:
            tags:
                - Statistics
            operationId: getTransactionStatistics
            summary: 決済統計照会
            description: 決済統計リストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetTransactionStatisticsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetTransactionStatisticsQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetTransactionStatisticsLimitTooSmallError'
                                    - $ref: '#/components/schemas/GetTransactionStatisticsCursorWithoutLimitError'
                                    - $ref: '#/components/schemas/GetTransactionStatisticsCursorNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetTransactionStatisticsLimitTooSmallError'
                                                - $ref: '#/components/schemas/GetTransactionStatisticsCursorWithoutLimitError'
                                                - $ref: '#/components/schemas/GetTransactionStatisticsCursorNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`limit`は1以上である必要があります。'
                                    summary: '`limit`が0以下の場合'
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: limit
                                              reason: TooSmall
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`cursor`は`limit`と一緒に使用する必要があります。'
                                    summary: '`limit`なしで`cursor`のみ送信した場合'
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: limit
                                              reason: Required
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`cursor`の値が無効です。'
                                    summary: '`cursor`が無効な場合'
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: cursor
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
    /statistics/open/v1/queries/get-visitor-statistics:
        post:
            tags:
                - Statistics
            operationId: getVisitorStatistics
            summary: 患者統計照会
            description: |
                患者統計データを照会します。

                **エラー**

                | キー | 理由 | 説明 |
                | --- | --- | --- |
                | `limit` | `TooSmall` | `limit`が1未満の場合 |
                | `limit` | `Required` | `cursor`送信時に`limit`がない場合 |
                | `cursor` | `NotAvailable` | `cursor`が有効でない場合 |
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.OpenGetVisitorStatisticsQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.OpenGetVisitorStatisticsQueryResponse'
    /ticket/open/v1/queries/get-ticket-bundles:
        post:
            tags:
                - Ticket
            operationId: getTicketBundlesQuery
            summary: 患者の使用可能な施術チケットバンドルリスト照会
            description: 患者が使用可能な施術チケットバンドルのリストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetTicketBundlesQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.ticket.GetTicketBundlesQueryResponse'
    /visitor/open/v1/commands/disable-advertising-agreement-to-visitors:
        post:
            tags:
                - Visitor
            operationId: disableAdvertisingAgreementToVisitors
            summary: マーケティング受信同意の解除
            description: |-
                電話番号で患者を照会し、広告性マーケティングの受信同意を解除します。

                条件に一致する患者がいない場合でも、成功レスポンスを返します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.DisableAdvertisingAgreementToVisitorsCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.Empty'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/DisableAdvertisingAgreementToVisitorsInvalidPhoneNumberError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/DisableAdvertisingAgreementToVisitorsInvalidPhoneNumberError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: リクエストの`phoneNumber`は韓国の電話番号のみ使用可能です。
                                    summary: 電話番号を解析できない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phone
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
    /visitor/open/v1/commands/submit-visitor-questionnaire:
        post:
            tags:
                - Visitor
            operationId: submitVisitorQuestionnaire
            summary: 患者の初診問診票提出
            description: 問診票の回答を保存し、問診票の回答内容をもとに患者の基本情報の一部を更新します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.SubmitVisitorQuestionnaireCommand'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.SubmitVisitorQuestionnaireCommandResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/SubmitVisitorQuestionnairePhoneNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/SubmitVisitorQuestionnairePhoneNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`phone`で渡された国番号と携帯電話番号の組み合わせをパースできません。'
                                    summary: 携帯電話番号をパースできない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: countryCode
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
    /visitor/open/v1/queries/find-duplicated-visitor-id:
        post:
            tags:
                - Visitor
            operationId: findDuplicatedVisitorId
            summary: 登録済み患者IDの照会
            description: |-
                入力した識別情報と一致する、すでに登録済みの患者IDを照会します。

                重複照会は `name` + `phone`、`passportNumber`、`snsInfo`、`email`、`name` + `birthDateUtc` の順で実行されます。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.FindDuplicatedVisitorId'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.FindDuplicatedVisitorIdResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/FindDuplicatedVisitorIdQueryNotAvailableError'
                                    - $ref: '#/components/schemas/FindDuplicatedVisitorIdPhoneNumberNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/FindDuplicatedVisitorIdQueryNotAvailableError'
                                                - $ref: '#/components/schemas/FindDuplicatedVisitorIdPhoneNumberNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: リクエストフィールドがない場合
                                    summary: リクエストフィールドがない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: query
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: 電話番号を解析できない場合
                                    summary: 電話番号を解析できない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phoneNumber
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
    /visitor/open/v1/queries/find-visitor:
        post:
            tags:
                - Visitor
            operationId: findVisitor
            summary: 患者検索
            description: |-
                患者名と電話番号で削除されていない患者情報を照会します。

                非推奨のAPIです。
            deprecated: true
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.FindVisitor'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.FindVisitorResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/FindVisitorPhoneNumberNotAvailableError'
                                    - $ref: '#/components/schemas/FindVisitorPhoneNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/FindVisitorPhoneNumberNotAvailableError'
                                                - $ref: '#/components/schemas/FindVisitorPhoneNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: 電話番号が無効な場合
                                    summary: 電話番号が無効な場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phoneNumber
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: 電話番号を解析できない場合
                                    summary: 電話番号を解析できない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phone
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
    /visitor/open/v1/queries/get-questionnaire-agreements:
        post:
            tags:
                - Visitor
            operationId: getQuestionnaireAgreements
            summary: 初診問診票の同意項目照会
            description: 病院で設定した初診問診票の同意項目リストを照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.Empty'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetQuestionnaireAgreementsQueryResponse'
    /visitor/open/v1/queries/get-questionnaire-submit:
        post:
            tags:
                - Visitor
            operationId: getQuestionnaireSubmit
            summary: 提出された初診問診票照会
            description: 患者が提出した初診問診票回答を照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetQuestionnaireSubmitQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetQuestionnaireSubmitQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetQuestionnaireSubmitVisitorNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetQuestionnaireSubmitVisitorNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`visitorId`に該当する患者が見つかりません。'
                                    summary: 患者が見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: 当該患者の提出された初診問診票回答が存在しません。
                                    summary: 提出された問診票が見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
    /visitor/open/v1/queries/get-visitor-questionnaire:
        post:
            tags:
                - Visitor
            operationId: getVisitorQuestionnaire
            summary: 患者の初診問診票照会
            description: 患者の初診問診票の入力に必要な情報を照会します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.GetVisitorQuestionnaireQuery'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.GetVisitorQuestionnaireQueryResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/GetVisitorQuestionnaireVisitorNotFoundError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/GetVisitorQuestionnaireVisitorNotFoundError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: '`visitorId`に該当する患者が見つかりません。'
                                    summary: 患者が見つからない場合
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
    /visitor/open/v1/queries/search-visitors:
        post:
            tags:
                - Visitor
            operationId: searchVisitors
            summary: 患者情報検索
            description: 条件に一致する患者情報を検索します。
            security:
                - auth_token: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/protos.open.SearchVisitors'
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/protos.open.SearchVisitorsResponse'
                "400":
                    description: Bad Request
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/SearchVisitorsDateOfBirthNotAvailableError'
                                    - $ref: '#/components/schemas/SearchVisitorsEmailNotAvailableError'
                                    - $ref: '#/components/schemas/SearchVisitorsPhoneNotAvailableError'
                                    - allOf:
                                        - $ref: '#/components/schemas/KosErrorResponse'
                                        - not:
                                            anyOf:
                                                - $ref: '#/components/schemas/SearchVisitorsDateOfBirthNotAvailableError'
                                                - $ref: '#/components/schemas/SearchVisitorsEmailNotAvailableError'
                                                - $ref: '#/components/schemas/SearchVisitorsPhoneNotAvailableError'
                                      description: ここに記載されていないエラーです。共通のエラー応答形式に従います。詳しくは [エラー応答](#エラー応答) を参照してください。
                                      title: 不明なエラー
                            examples:
                                error_1:
                                    description: 生年月日が正しくない場合
                                    summary: 生年月日が正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: dateOfBirth
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: メールアドレスが正しくない場合
                                    summary: メールアドレスが正しくない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: email
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: 電話番号を解析できない場合
                                    summary: 電話番号を解析できない場合
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phone
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
components:
    securitySchemes:
        auth_token:
            name: Authorization
            description: '[認証トークン交換](/docs/openapi/exchange-token) で取得した Auth Token'
            type: apiKey
            in: header
    schemas:
        AddProductOptionMedicalServiceNotFoundError:
            title: 診療項目が見つからない場合
            description: メニュー構成に含まれる`medicalServiceId`が存在しません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: medicalServiceId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        AddProductOptionProductNotFoundError:
            title: 商品が見つからない場合
            description: '`productId`に該当する商品が存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: productId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        CancelReservationCancelReasonUnspecifiedError:
            title: 予約キャンセル理由がデフォルト値の場合
            description: '`CANCEL_RESERVATION_REASON_UNSPECIFIED` は、一般的な予約キャンセルリクエストでは使用しないデフォルト値です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        CancelReservationReservationNotAllowedByPolicyError:
            title: 予約キャンセルポリシーによりキャンセルできない場合
            description: 病院の予約キャンセルポリシーにより予約キャンセルが許可されていない場合、またはキャンセル可能時間が過ぎた場合に発生します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: cancellationPolicy
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationNotAllowedByPolicy
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        CancelReservationReservationStatusNotAvailableError:
            title: 予約状態がキャンセルできない状態の場合
            description: 予約状態が `RESERVED` でない場合、キャンセルできません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: status
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        CancelReservationScheduleNotFoundError:
            title: スケジュールが見つからない場合
            description: '`scheduleId` に該当するスケジュールが削除されている場合、キャンセルできません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: scheduleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ChangeFlowStepCounselorNotFoundError:
            title: カウンセリングステップへ変更時にカウンセラーが未設定の場合
            description: '`step`を`CONSULTATION`に変更する際、カウンセラーが設定されていません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: counselor
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ChangeFlowStepProceduresNotCompletedError:
            title: 帰宅ステップへ変更時に未完了の施術がある場合
            description: '`step`を`COMPLETED`に変更する際、完了していない施術が残っています。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: procedures
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ChangeFlowStepProceduresNotFoundError:
            title: 施術待機・施術ステップへ変更時に施術リストが存在しない場合
            description: '`step`を`PROCEDURE_WAITING`または`PROCEDURE`に変更する際、施術リストが存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: procedures
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ChangeFlowStepScheduleNotFoundError:
            title: スケジュールが見つからない場合
            description: '`scheduleId`に該当するスケジュールが見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: scheduleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        CreateOccupiedTimeEndDateTimeNotAvailableError:
            title: 占有終了日時が正しくない場合
            description: '`endDateTimeUtc`が有効なdate-time値ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: endDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        CreateOccupiedTimeInvalidTimeRangeError:
            title: 占有時間の範囲が正しくない場合
            description: '`endDateTimeUtc`は`startDateTimeUtc`より後である必要があり、両日時は同じ日付内で24時間未満である必要があります。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: endDateTimeUtc
                                reason:
                                    type: string
                                    const: InvalidTimeRange
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        CreateOccupiedTimeReservationGroupNotFoundError:
            title: 予約グループが見つからない場合
            description: '`reservationGroupId`に該当する予約グループが見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationGroupId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        CreateOccupiedTimeStartDateTimeNotAvailableError:
            title: 占有開始日時が正しくない場合
            description: '`startDateTimeUtc`が有効なdate-time値ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        CreateOccupiedTimeZoneNotFoundError:
            title: 区域が見つからない場合
            description: '`zoneId`に該当する区域が見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: zoneId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        CreateProductCategoryNotFoundError:
            title: カテゴリが見つからない場合
            description: '`categoryIds`に存在しないカテゴリIDが含まれている場合です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: categoryIds
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        DeleteProductProductNotFoundError:
            title: 商品が見つからない場合
            description: '`productId`に該当する商品が存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: productId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        DisableAdvertisingAgreementToVisitorsInvalidPhoneNumberError:
            title: 電話番号を解析できない場合
            description: リクエストの`phoneNumber`は韓国の電話番号のみ使用可能です。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: phone
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ErrorReason:
            type: string
            enum:
                - ErrorReason_UNKNOWN
                - TooShort
                - TooLong
                - Required
                - InvalidLevel1
                - InvalidLevel2
                - InvalidLevel3
                - InvalidLevel4
                - Duplicated
                - InvalidTimeRange
                - NotAvailable
                - NotFound
                - TooSmall
                - TooBig
                - MutuallyExclusive
        ExchangeTokenApiKeyNotFoundError:
            title: API Keyが無効な場合
            description: 渡された `key` に該当するAPI Keyが見つかりません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InternalServiceException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: apiKey
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InternalServiceException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        FindDuplicatedVisitorIdPhoneNumberNotAvailableError:
            title: 電話番号を解析できない場合
            description: 電話番号を解析できない場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: phoneNumber
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        FindDuplicatedVisitorIdQueryNotAvailableError:
            title: リクエストフィールドがない場合
            description: リクエストフィールドがない場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: query
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        FindScheduleByPurchaseIdPurchaseIdNotFoundError:
            title: 会計IDに該当するスケジュールが見つからない場合
            description: 会計IDに該当するスケジュールが見つからない場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: purchaseId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        FindVisitorPhoneNotAvailableError:
            title: 電話番号を解析できない場合
            description: 電話番号を解析できない場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: phone
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        FindVisitorPhoneNumberNotAvailableError:
            title: 電話番号が無効な場合
            description: 電話番号が無効な場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: phoneNumber
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetCategoriesInvalidSortCriteriaError:
            title: 並べ替え基準が正しくない場合
            description: 並べ替え可能なフィールドは`order`です。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    message:
                        type: string
                        const: sort is invalid
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetPrepaidCardChargingEventStatisticsCursorNotAvailableError:
            title: '`cursor`が無効な場合'
            description: '`cursor`の値が無効です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: cursor
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetPrepaidCardChargingEventStatisticsCursorWithoutLimitError:
            title: '`limit`なしで`cursor`のみ送信した場合'
            description: '`cursor`は`limit`と一緒に使用する必要があります。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: limit
                                reason:
                                    type: string
                                    const: Required
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetPrepaidCardChargingEventStatisticsLimitTooSmallError:
            title: '`limit`が0以下の場合'
            description: '`limit`は1以上である必要があります。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: limit
                                reason:
                                    type: string
                                    const: TooSmall
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetProductOptionsOptionIdsRequiredError:
            title: 商品メニューIDリストが空の場合
            description: '`optionIds`は最低1つ以上必要です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: optionIds
                                reason:
                                    type: string
                                    const: Required
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetProductProductNotFoundError:
            title: 商品が見つからない場合
            description: 商品が見つからない場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: productId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetPurchaseSummariesByVisitorVisitorIdNotAvailableError:
            title: 患者IDが空の場合
            description: 患者IDが空の場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorId
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetQuestionnaireSubmitVisitorNotFoundError:
            title: 患者が見つからない場合
            description: '`visitorId`に該当する患者が見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReschedulableTimeSlotsInvalidDateTimeRangeError:
            title: '`dateTimeRange`の形式が正しくない場合'
            description: '[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 形式でない場合や、開始時間が終了時間より後になっている場合など'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: dateTimeRange
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidDateTimeRange
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReschedulableTimeSlotsReservationNotAllowedByPolicyError:
            title: 予約変更ポリシーにより変更が許可されていない場合
            description: 予約変更の締め切り時間超過など、予約変更ポリシーにより日時変更が許可されていません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: modificationPolicy
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationNotAllowedByPolicy
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReschedulableTimeSlotsScheduleNotFoundError:
            title: '`scheduleId`に該当するスケジュールが存在しない場合'
            description: '`scheduleId`に該当するスケジュールが存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: scheduleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: ScheduleNotFound
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByGroupTimezoneNotAvailableError:
            title: タイムゾーンが正しくない場合
            description: '`timezone` が有効なIANA time zone databaseの名前ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: timezone
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByGroupsV2EndDateTimeNotAvailableError:
            title: 照会範囲の終了日時が正しくない場合
            description: '`endDateTimeUtc`が有効なdate-time値ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: endDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByGroupsV2InvalidTimeRangeError:
            title: 終了日時が開始日時より前の場合
            description: '`endDateTimeUtc`は`startDateTimeUtc`より前にすることはできません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: endDateTimeUtc
                                reason:
                                    type: string
                                    const: InvalidTimeRange
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByGroupsV2ReservationGroupIdsRequiredError:
            title: 予約グループIDリストが空の場合
            description: '`reservationGroupIds`は最低1つ以上必要です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationGroupIds
                                reason:
                                    type: string
                                    const: Required
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByGroupsV2StartDateTimeNotAvailableError:
            title: 照会範囲の開始日時が正しくない場合
            description: '`startDateTimeUtc`が有効なdate-time値ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByScheduleIdEndDateTimeNotAvailableError:
            title: 照会範囲の終了日時が正しくない場合
            description: '`endDateTimeUtc` が正しいdate-time値ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: endDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByScheduleIdScheduleIdNotAvailableError:
            title: スケジュールIDが空文字列の場合
            description: '`scheduleId`が空文字列の場合、このエラーが発生します。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: scheduleId
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByScheduleIdStartDateTimeNotAvailableError:
            title: 照会範囲の開始日時が正しくない場合
            description: '`startDateTimeUtc` が正しいdate-time値ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByScheduleIdV2EndDateTimeNotAvailableError:
            title: 照会範囲の終了日時が正しくない場合
            description: '`endDateTimeUtc` が有効な date-time 値ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: endDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByScheduleIdV2InvalidTimeRangeError:
            title: 照会範囲の終了日時が開始日時より前の場合
            description: '`endDateTimeUtc` は `startDateTimeUtc` より前の日時にすることはできません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: endDateTimeUtc
                                reason:
                                    type: string
                                    const: InvalidTimeRange
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByScheduleIdV2ScheduleIdEmptyError:
            title: スケジュールIDが空文字列の場合
            description: '`scheduleId`が空文字列の場合、このエラーが発生します。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: scheduleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationSlotsByScheduleIdV2StartDateTimeNotAvailableError:
            title: 照会範囲の開始日時が正しくない場合
            description: '`startDateTimeUtc` が有効な date-time 値ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationTimeSlotsByVisitorIdInvalidDateTimeRangeError:
            title: '`dateTimeRange`の形式が正しくない場合'
            description: '[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 形式でない場合や、開始時間が終了時間より後になっている場合など'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: dateTimeRange
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidDateTimeRange
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationTimeSlotsByVisitorIdOccupancyPlanNotFoundError:
            title: 予約ルールに基づく占有計画が成立しない場合
            description: 予約ルールに基づく占有プランを生成できません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupancyPlan
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: OccupancyPlanNotFound
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationTimeSlotsByVisitorIdReservationRuleNotActivatedError:
            title: 予約ルールが有効化されていない場合
            description: 有効化状態でない予約ルールはスロット照会に使用できません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationRuleId
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationRuleNotActivated
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationTimeSlotsByVisitorIdReservationRuleNotFoundError:
            title: 予約ルールが存在しない場合
            description: '`reservationRuleId`に該当する予約ルールが存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationRuleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: ReservationRuleNotFound
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationTimeSlotsByVisitorIdVisitorNotFoundError:
            title: '`visitorId`に該当する来院者が存在しない場合'
            description: '`visitorId`に該当する来院者が存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationTimeSlotsInvalidDateTimeRangeError:
            title: '`dateTimeRange`の形式が正しくない場合'
            description: '[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 形式でない場合や、開始時間が終了時間より後になっている場合など'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: dateTimeRange
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidDateTimeRange
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationTimeSlotsOccupancyPlanNotFoundError:
            title: 予約ルールに基づく占有計画が成立しない場合
            description: 予約ルールに基づく占有プランを生成できません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupancyPlan
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: OccupancyPlanNotFound
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationTimeSlotsReservationRuleNotActivatedError:
            title: 予約ルールが有効化されていない場合
            description: 有効化状態でない予約ルールはスロット照会に使用できません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationRuleId
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationRuleNotActivated
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetReservationTimeSlotsReservationRuleNotFoundError:
            title: 予約ルールが存在しない場合
            description: '`reservationRuleId`に該当する予約ルールが存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationRuleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: ReservationRuleNotFound
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetSchedulesByFlowStepFlowStepNotAvailableError:
            title: 来院段階が正しくない場合
            description: 来院段階が正しくない場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: flowSteps
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetSchedulesByFlowStepReservationStartDateTimeRangeInvalidError:
            title: 照会範囲の終了日時が開始日時より前の場合
            description: '`reservationStartDateTimeUtcTo`が`reservationStartDateTimeUtcFrom`より前です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: endDateTimeUtc
                                reason:
                                    type: string
                                    const: InvalidTimeRange
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetSchedulesByFlowStepReservationStartDateTimeUtcFromNotAvailableError:
            title: 照会範囲の開始日時が正しくない場合
            description: '`reservationStartDateTimeUtcFrom`が正しいdate-time値ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetSchedulesByFlowStepReservationStartDateTimeUtcToNotAvailableError:
            title: 照会範囲の終了日時が正しくない場合
            description: '`reservationStartDateTimeUtcTo`が正しいdate-time値ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: endDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetTransactionStatisticsCursorNotAvailableError:
            title: '`cursor`が無効な場合'
            description: '`cursor`の値が無効です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: cursor
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetTransactionStatisticsCursorWithoutLimitError:
            title: '`limit`なしで`cursor`のみ送信した場合'
            description: '`cursor`は`limit`と一緒に使用する必要があります。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: limit
                                reason:
                                    type: string
                                    const: Required
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetTransactionStatisticsLimitTooSmallError:
            title: '`limit`が0以下の場合'
            description: '`limit`は1以上である必要があります。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: limit
                                reason:
                                    type: string
                                    const: TooSmall
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        GetVisitorQuestionnaireVisitorNotFoundError:
            title: 患者が見つからない場合
            description: '`visitorId`に該当する患者が見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        KosErrorProperties:
            type: object
            required:
                - key
                - reason
            properties:
                key:
                    description: エラーフィールドパス
                    type: string
                reason:
                    description: エラー理由
                    allOf:
                        - $ref: '#/components/schemas/ErrorReason'
        KosErrorResponse:
            type: object
            required:
                - status
                - message
                - className
            properties:
                properties:
                    description: エラー属性一覧
                    type: array
                    items:
                        type: string
                className:
                    description: エラークラス名
                    type: string
                errorProperties:
                    description: フィールド別エラー属性一覧
                    type: array
                    items:
                        $ref: '#/components/schemas/KosErrorProperties'
                message:
                    description: エラーメッセージ
                    type: string
                status:
                    description: HTTPステータスコード
                    type: integer
        RegisterVisitorImagesMemoTooLongError:
            title: メモが150文字を超えた場合
            description: '`memo`は150文字以下である必要があります。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: memo
                                reason:
                                    type: string
                                    const: TooLong
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        RegisterVisitorImagesPathNotAvailableError:
            title: パスに許可されていない文字が含まれている場合
            description: '`path`に`*`または`?`を含めることはできません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: path
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        RegisterVisitorImagesPathSegmentTooLongError:
            title: フォルダ名が200文字を超えた場合
            description: '`path`の各フォルダ名は200文字以下である必要があります。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: path
                                reason:
                                    type: string
                                    const: TooLong
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        RemoveProductOptionProductNotFoundError:
            title: 商品が見つからない場合
            description: '`productId`に該当する商品が存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: productId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        RemoveProductOptionProductOptionNotFoundError:
            title: 商品メニューが見つからない場合
            description: '`id`に該当する商品メニューが存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: id
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        RescheduleByTimeSlotReservationNotAllowedByPolicyError:
            title: 予約変更ポリシーにより変更が許可されていない場合
            description: 予約変更の締め切り時間超過など、予約変更ポリシーにより日時変更が許可されていません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: modificationPolicy
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationNotAllowedByPolicy
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        RescheduleByTimeSlotReservationTimeNotAvailableError:
            title: 該当時間が予約不可の場合
            description: '`reservationDateTimeRange`に該当する時間に予約を作成できません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationDateTimeRange
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationTimeNotAvailable
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        RescheduleByTimeSlotScheduleNotFoundError:
            title: '`scheduleId`に該当するスケジュールが存在しない場合'
            description: '`scheduleId`に該当するスケジュールが存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: scheduleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByTimeSlotDuplicatedReservationError:
            title: 同一来院者に対して時間が重複する予約がすでに存在する場合
            description: '`reservationDateTimeRange`と時間が重複する予約が、該当来院者にすでに存在します。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationDateTimeRange
                                reason:
                                    type: string
                                    const: Duplicated
                    message:
                        type: string
                        const: DuplicatedReservation
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByTimeSlotInvalidVisitorNameError:
            title: '`visitorName`が空文字列、または前後にスペースがある場合'
            description: '`visitorName`はスペースのみで構成することはできず、前後のスペースも許可されません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorName
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidVisitorName
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByTimeSlotReservationRuleNotActivatedError:
            title: 予約ルールが有効化されていない場合
            description: 有効化状態でない予約ルールはスロット照会に使用できません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationRuleId
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationRuleNotActivated
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByTimeSlotReservationRuleNotFoundError:
            title: 予約ルールが存在しない場合
            description: '`reservationRuleId`に該当する予約ルールが存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationRuleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: ReservationRuleNotFound
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByTimeSlotReservationTimeNotAvailableError:
            title: 該当時間が予約不可の場合
            description: '`reservationDateTimeRange`に該当する時間に予約を作成できません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationDateTimeRange
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationTimeNotAvailable
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByTimeSlotWithVisitorIdDuplicatedReservationError:
            title: 同一来院者に対して時間が重複する予約がすでに存在する場合
            description: '`reservationDateTimeRange`と時間が重複する予約が、該当来院者にすでに存在します。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationDateTimeRange
                                reason:
                                    type: string
                                    const: Duplicated
                    message:
                        type: string
                        const: DuplicatedReservation
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByTimeSlotWithVisitorIdReservationRuleNotActivatedError:
            title: 予約ルールが有効化されていない場合
            description: 有効化状態でない予約ルールはスロット照会に使用できません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationRuleId
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationRuleNotActivated
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByTimeSlotWithVisitorIdReservationRuleNotFoundError:
            title: 予約ルールが存在しない場合
            description: '`reservationRuleId`に該当する予約ルールが存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationRuleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: ReservationRuleNotFound
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByTimeSlotWithVisitorIdReservationTimeNotAvailableError:
            title: 該当時間が予約不可の場合
            description: '`reservationDateTimeRange`に該当する時間に予約を作成できません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: reservationDateTimeRange
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationTimeNotAvailable
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByTimeSlotWithVisitorIdVisitorNotFoundError:
            title: '`visitorId`に該当する来院者が存在しない場合'
            description: '`visitorId`に該当する来院者が存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: VisitorNotFound
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdOverlappingReservationError:
            title: 同一患者に対して時間が重複する予約がある場合
            description: 同一患者に対して時間が重複する予約がすでに存在します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdReservationCapacityExceededError:
            title: スロットの定員を超過した場合
            description: 病院のポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合はKOSにお問い合わせください。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].reservationTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationCapacityExceeded
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdV2OccupiedResourceConfigurationRequiredError:
            title: 予約日程の設定が不足している場合
            description: 各`occupiedResources`項目には予約グループの設定が必要です。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].configuration
                                reason:
                                    type: string
                                    const: Required
                    message:
                        type: string
                        const: MissingOccupiedResourceConfiguration
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdV2OccupiedResourceReservationGroupIdNotAvailableError:
            title: 予約日程の予約グループID形式が正しくない場合
            description: '`occupiedResources[].reservationGroup.reservationGroupId`が有効なobject-id形式ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[].reservationGroup.reservationGroupId
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdV2OccupiedResourceReservationGroupNotFoundError:
            title: 予約日程の予約グループが見つからない場合
            description: '`occupiedResources[].reservationGroup.reservationGroupId`に該当する予約グループが見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[].reservationGroup.reservationGroupId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdV2OccupiedResourceZoneNotInGroupError:
            title: 予約日程の区域が予約グループに属していない場合
            description: 予約日程の`zoneId`が該当予約グループに属していません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].zoneId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: ZoneNotInReservationGroup
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdV2OccupiedResourcesDifferentDateError:
            title: 予約日程の日付が互いに異なる場合
            description: すべての`occupiedResources`の予約開始日時は同じ日付である必要があります。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[1].reservationTime.startDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: DifferentDateInOccupiedResources
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdV2OccupiedResourcesRequiredError:
            title: 予約日程が空の場合
            description: '`occupiedResources`は最低1件以上必要です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources
                                reason:
                                    type: string
                                    const: Required
                    message:
                        type: string
                        const: OccupiedResourcesEmpty
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdV2OverlappingReservationError:
            title: 同一患者に対して時間が重複する予約が存在する場合
            description: 同一患者に対して時間が重複する予約がすでに存在します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdV2ReservationCapacityExceededError:
            title: スロット定員を超過した場合
            description: 病院のポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合はKOSにお問い合わせください。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].reservationTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationCapacityExceeded
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdV2VisitorNotFoundError:
            title: 患者が見つからない場合
            description: '`visitorId`に該当する患者が見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdV2ZoneNotFoundError:
            title: zoneIdに該当する区域が存在しない場合
            description: '`zoneId`に該当する区域が見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: zoneId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: NotFoundZone
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveByVisitorIdVisitorNotFoundError:
            title: 患者が見つからない場合
            description: '`visitorId`に該当する患者が見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveCommandOverlappingReservationError:
            title: 同一患者に対して時間が重複する予約がある場合
            description: 同一患者に対して時間が重複する予約がすでに存在します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveCommandReservationCapacityExceededError:
            title: スロットの定員を超過した場合
            description: 病院のポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合はKOSにお問い合わせください。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].reservationTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationCapacityExceeded
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveCommandVisitorNameNotAvailableError:
            title: 患者名の前後にスペースが含まれる場合
            description: '`visitorName`の前後にスペースを含めることはできません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorName
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveCommandVisitorNotFoundError:
            title: 患者が見つからない場合
            description: 患者の照会、または作成後の再照会の段階で、予約に使用する患者が見つかりません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveCommandVisitorPhoneCountryCodeNotAvailableError:
            title: 患者の電話番号の国コードが無効な場合
            description: 患者作成の段階で `visitorPhone.countryCode` が無効な場合に発生します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: countryCode
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveCommandVisitorPhoneNotAvailableError:
            title: 患者の電話番号を解析できない場合
            description: 患者作成の段階で `visitorPhone` を有効な電話番号として解析できない場合に発生します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: phone
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveCommandVisitorPhoneNumberNotAvailableError:
            title: 患者の電話番号が無効な場合
            description: 患者の重複照会または作成の段階で `visitorPhone.phoneNumber` が無効な場合に発生します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: phoneNumber
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2OccupiedResourceConfigurationRequiredError:
            title: 予約日程の設定が不足している場合
            description: 各`occupiedResources`項目には予約グループの設定が必要です。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].configuration
                                reason:
                                    type: string
                                    const: Required
                    message:
                        type: string
                        const: MissingOccupiedResourceConfiguration
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2OccupiedResourceReservationGroupIdNotAvailableError:
            title: 予約日程の予約グループID形式が正しくない場合
            description: '`occupiedResources[].reservationGroup.reservationGroupId`が有効なobject-id形式ではありません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[].reservationGroup.reservationGroupId
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2OccupiedResourceReservationGroupNotFoundError:
            title: 予約日程の予約グループが見つからない場合
            description: '`occupiedResources[].reservationGroup.reservationGroupId`に該当する予約グループが見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[].reservationGroup.reservationGroupId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2OccupiedResourceZoneNotInGroupError:
            title: 予約日程の区域が予約グループに属していない場合
            description: 予約日程の`zoneId`が該当予約グループに属していません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].zoneId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: ZoneNotInReservationGroup
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2OccupiedResourcesDifferentDateError:
            title: 予約日程の日付が互いに異なる場合
            description: すべての`occupiedResources`の予約開始日時は同じ日付である必要があります。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[1].reservationTime.startDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: DifferentDateInOccupiedResources
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2OccupiedResourcesRequiredError:
            title: 予約日程が空の場合
            description: '`occupiedResources`は最低1つ以上必要です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources
                                reason:
                                    type: string
                                    const: Required
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2OverlappingReservationError:
            title: 同一患者に対して時間が重複する予約がある場合
            description: 同じ患者に対して、時間が重複する予約がすでに存在します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2ReservationCapacityExceededError:
            title: スロットの定員を超えた場合
            description: 病院のポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合は、KOSにお問い合わせください。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].reservationTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationCapacityExceeded
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2VisitorNameNotAvailableError:
            title: 患者名の前後にスペースがある場合
            description: '`visitorName` の前後にスペースを含めることはできません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorName
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2VisitorNotFoundError:
            title: 患者が見つからない場合
            description: 患者の照会、または作成後の再照会の段階で、予約に使用する患者が見つかりません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: visitorId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2VisitorPhoneCountryCodeNotAvailableError:
            title: 患者の電話番号の国コードが無効な場合
            description: 患者作成の段階で `visitorPhone.countryCode` が無効な場合に発生します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: countryCode
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2VisitorPhoneNotAvailableError:
            title: 患者の電話番号を解析できない場合
            description: 患者作成の段階で `visitorPhone` を有効な電話番号として解析できない場合に発生します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: phone
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2VisitorPhoneNumberNotAvailableError:
            title: 患者の電話番号が無効な場合
            description: 患者の重複照会または作成の段階で `visitorPhone.phoneNumber` が無効な場合に発生します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: phoneNumber
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        ReserveV2ZoneNotFoundError:
            title: zoneIdに該当する区域が存在しない場合
            description: '`zoneId`に該当する区域が見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: zoneId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: NotFoundZone
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        SearchVisitorsDateOfBirthNotAvailableError:
            title: 生年月日が正しくない場合
            description: 生年月日が正しくない場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: dateOfBirth
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        SearchVisitorsEmailNotAvailableError:
            title: メールアドレスが正しくない場合
            description: メールアドレスが正しくない場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: email
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        SearchVisitorsPhoneNotAvailableError:
            title: 電話番号を解析できない場合
            description: 電話番号を解析できない場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: phone
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        SubmitVisitorQuestionnairePhoneNotAvailableError:
            title: 携帯電話番号をパースできない場合
            description: '`phone`で渡された国番号と携帯電話番号の組み合わせをパースできません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: countryCode
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateProductInformationCategoryNotFoundError:
            title: カテゴリが見つからない場合
            description: '`categoryIds`に存在しないカテゴリIDが含まれている場合です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: categoryIds
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateProductInformationProductNotFoundError:
            title: 商品が見つからない場合
            description: '`id`に該当する商品が存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: id
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateProductOptionMedicalServiceNotFoundError:
            title: 診療項目が見つからない場合
            description: メニュー構成に含まれる`medicalServiceId`が存在しません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: medicalServiceId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateProductOptionProductNotFoundError:
            title: 商品が見つからない場合
            description: '`productId`に該当する商品が存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: productId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateProductOptionProductOptionNotFoundError:
            title: 商品メニューが見つからない場合
            description: '`id`に該当する商品メニューが存在しません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: id
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationEndDateTimeEmptyError:
            title: 予約終了日時が空の場合
            description: 予約終了日時が空の場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: endDateTime
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationModificationNotAllowedByPolicyError:
            title: 予約変更ポリシーにより変更できない場合
            description: 予約変更ポリシーまたは変更締め切り時間の条件により、予約を変更することができません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: modificationPolicy
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationNotAllowedByPolicy
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationMultipleOccupiedResourcesError:
            title: 複数の予約日程があるスケジュールをV1で修正しようとする場合
            description: スケジュールに複数の予約日程がある場合、V1 APIで予約日程を修正することはできません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: MultipleOccupiedResources
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationOverlappingReservationError:
            title: 同一患者に対して時間が重複する予約がある場合
            description: 同一患者に対して時間が重複する予約がすでに存在します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationReservationCapacityExceededError:
            title: スロット定員が超過した場合
            description: 病院ポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合はKOSにお問い合わせください。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].reservationTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationCapacityExceeded
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationReservationGroupIdEmptyError:
            title: 予約グループIDが空の場合
            description: 予約グループIDが空の場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: groupId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationReservationGroupNotFoundError:
            title: 予約グループが見つからない場合
            description: '`reservationGroupId`に該当する予約グループが見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: id
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationScheduleIdEmptyError:
            title: スケジュールIDが空の場合
            description: スケジュールIDが空の場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: streamId
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationScheduleNotFoundError:
            title: スケジュールが見つからない場合
            description: '`scheduleId`に該当するスケジュールが見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: scheduleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationStartDateTimeEmptyError:
            title: 予約開始日時が空の場合
            description: 予約開始日時が空の場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTime
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationV2ModificationNotAllowedByPolicyError:
            title: 予約変更ポリシーにより変更できない場合
            description: 予約変更ポリシーまたは変更締切時間の条件により、予約を変更できません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: modificationPolicy
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationNotAllowedByPolicy
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationV2OccupiedResourceConfigurationRequiredError:
            title: 予約日程の設定が不足している場合
            description: 各`occupiedResources`項目には予約グループの設定が必要です。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].configuration
                                reason:
                                    type: string
                                    const: Required
                    message:
                        type: string
                        const: MissingOccupiedResourceConfiguration
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationV2OccupiedResourceZoneNotInGroupError:
            title: 予約日程の区域が予約グループに属していない場合
            description: 予約日程の`zoneId`が該当する予約グループに属していません。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].zoneId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: ZoneNotInReservationGroup
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationV2OccupiedResourcesDifferentDateError:
            title: 予約日程の日付が異なる場合
            description: すべての`occupiedResources`の予約開始日時は同じ日付である必要があります。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[1].reservationTime.startDateTimeUtc
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: DifferentDateInOccupiedResources
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationV2OccupiedResourcesRequiredError:
            title: 予約日程が空の場合
            description: '`occupiedResources`は最低1件以上必要です。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources
                                reason:
                                    type: string
                                    const: Required
                    message:
                        type: string
                        const: OccupiedResourcesEmpty
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationV2OverlappingReservationError:
            title: 同一の患者に対して時間が重複する予約がある場合
            description: 同一の患者に対して時間が重複する予約がすでに存在します。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: startDateTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationV2ReservationCapacityExceededError:
            title: スロットの定員を超過した場合
            description: 病院ポリシーまたはFeature Flagが適用されている場合にのみ発生します。適用が必要な場合はKOSにお問い合わせください。
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: occupiedResources[0].reservationTime
                                reason:
                                    type: string
                                    const: NotAvailable
                    message:
                        type: string
                        const: ReservationCapacityExceeded
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationV2ScheduleNotFoundError:
            title: スケジュールが見つからない場合
            description: '`scheduleId`に該当するスケジュールが見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: scheduleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: NotFoundSchedule
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationV2ZoneNotFoundError:
            title: zoneIdに該当する区域が存在しない場合
            description: '`zoneId`に該当する区域が見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: zoneId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: NotFoundZone
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationZoneIdEmptyError:
            title: 予約区域IDが空の場合
            description: 予約区域IDが空の場合
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidCommandException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: zoneId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidCommandException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateReservationZoneNotFoundError:
            title: 予約区域が見つからない場合
            description: '`zoneId`に該当する区域が見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: zoneId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        UpdateScheduleConsultationInfoScheduleNotFoundError:
            title: スケジュールが見つからない場合
            description: '`scheduleId`に該当するスケジュールが見つかりません。'
            allOf:
                - $ref: '#/components/schemas/KosErrorResponse'
                - properties:
                    className:
                        type: string
                        const: InvalidRequestException
                    errorProperties:
                        type: array
                        minItems: 1
                        items:
                            type: object
                            properties:
                                key:
                                    type: string
                                    const: scheduleId
                                reason:
                                    type: string
                                    const: NotFound
                    message:
                        type: string
                        const: InvalidRequestException
                    status:
                        type: integer
                        const: 400
                  required:
                    - status
                    - message
                    - className
                    - errorProperties
                  type: object
        protos.DateTimeRangeUtc:
            type: object
            required:
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                endDateTimeUtc:
                    description: |-
                        範囲終了日時

                        この値は範囲に含まれません。
                    type: string
                    format: date-time
                startDateTimeUtc:
                    description: |-
                        範囲開始日時

                        この値は範囲に含まれます。
                    type: string
                    format: date-time
        protos.Empty:
            type: object
        protos.Money:
            type: object
            required:
                - currency
                - value
            properties:
                value:
                    type: integer
                    format: int64
                currency:
                    type: string
        protos.Phone:
            type: object
            required:
                - countryCode
                - phoneNumber
            properties:
                countryCode:
                    description: |-
                        国際電話の国番号

                        `+` プレフィックスなしで数字のみを入力してください。国番号の一覧は[国際電話の国番号](https://ko.wikipedia.org/wiki/%EA%B5%AD%EC%A0%9C%EC%A0%84%ED%99%94_%EA%B5%AD%EA%B0%80_%EB%B2%88%ED%98%B8)を参照してください。
                    type: string
                phoneNumber:
                    description: |-
                        電話番号

                        ハイフンや区切り文字なしで数字のみを入力してください。形式の判定は[libphonenumber](https://github.com/google/libphonenumber)を参照します。
                    type: string
        protos.Sort:
            type: object
            required:
                - by
                - order
            properties:
                by:
                    description: 並べ替え基準フィールド
                    type: string
                order:
                    description: |
                        並べ替え方向

                        | 値 | 意味 |
                        | --- | --- |
                        | `Order_UNKNOWN` | 不明 |
                        | `ASC` | 昇順 |
                        | `DESC` | 降順 |
                    type: string
                    enum:
                        - Order_UNKNOWN
                        - ASC
                        - DESC
        protos.Transls:
            type: object
            properties:
                translation:
                    description: |-
                        言語別翻訳マップ

                        キーは言語コード、値は翻訳文字列です。
                    type: object
                    additionalProperties:
                        type: string
        protos.account.AccountRoleV2Contract:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 役割名
                    type: string
                id:
                    description: 役割ID
                    type: string
                roleTags:
                    description: |
                        役割タグリスト

                        | 値 | 意味 |
                        | --- | --- |
                        | `ROLE_TAG_UNSPECIFIED` | 不明 |
                        | `ADMIN` | 管理者 |
                        | `DOCTOR` | 医師 |
                        | `COUNSELOR` | カウンセラー |
                        | `NURSE` | 看護師 |
                        | `SKINCARE` | スキンケア |
                        | `CALL_COUNSELOR` | 電話カウンセラー |
                        | `COORDINATOR` | コーディネーター |
                    type: array
                    items:
                        type: string
                        enum:
                            - ROLE_TAG_UNSPECIFIED
                            - ADMIN
                            - DOCTOR
                            - COUNSELOR
                            - NURSE
                            - SKINCARE
                            - CALL_COUNSELOR
                            - COORDINATOR
        protos.image.RegisterVisitorImageConfiguration:
            type: object
            required:
                - fileName
                - visitorId
                - source
                - shootingDateTimeUtc
            properties:
                category:
                    description: 画像分類コード
                    allOf:
                        - $ref: '#/components/schemas/protos.tenant.Code'
                equipment:
                    description: 撮影機器コード
                    allOf:
                        - $ref: '#/components/schemas/protos.tenant.Code'
                fileName:
                    description: 画像ファイル名
                    type: string
                memo:
                    description: |-
                        画像メモ

                        150文字以下である必要があります。
                    type: string
                    maxLength: 150
                path:
                    description: |-
                        画像フォルダパス

                        スラッシュ（`/`）でサブフォルダを区切ります。各フォルダ名は200文字以下である必要があり、`*` と `?` は使用できません。
                    type: string
                    pattern: ^[^*?]*$
                scheduleId:
                    description: 連携スケジュールID
                    type: string
                    format: uuid
                shootingDateTimeUtc:
                    description: |-
                        画像の撮影日時

                        オフセットを含む[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time文字列を渡します。
                    type: string
                    format: date-time
                source:
                    description: |
                        画像の出典

                        | 値 | 意味 |
                        | --- | --- |
                        | `VISITOR_IMAGE_SOURCE_UNSPECIFIED` | 不明 |
                        | `HOSPITAL` | 院内撮影 |
                        | `VISITOR` | 患者撮影 |
                        | `AGREEMENT` | 同意書 |
                        | `PEN_CHART` | ペンカルテ |
                    type: string
                    enum:
                        - VISITOR_IMAGE_SOURCE_UNSPECIFIED
                        - HOSPITAL
                        - VISITOR
                        - AGREEMENT
                        - PEN_CHART
                visitorId:
                    description: 画像を紐付ける患者ID
                    type: string
                    format: object-id
        protos.open.CreateReservationFunnel:
            type: object
            properties:
                funnelCategoryName:
                    description: |-
                        流入チャネルカテゴリ名

                        既存のコード名と一致する場合はそのコードを使用し、存在しない場合は新しいコードを作成します。無効化されたコードに一致した場合は無視されます。
                    type: string
                funnelDetail:
                    description: 詳細流入経路
                    type: string
                funnelName:
                    description: |-
                        流入チャネル名

                        既存のコード名と一致する場合はそのコードを使用し、存在しない場合は新しいコードを作成します。無効化されたコードに一致した場合は無視されます。
                    type: string
        protos.open.CreateReservationRequestedProcedure:
            type: object
            oneOf:
                - properties:
                    ticket:
                        description: チケット基準の希望施術
                        allOf:
                            - $ref: '#/components/schemas/protos.open.CreateReservationRequestedProcedure.ReservationRequestedTicketConfiguration'
                  required:
                    - ticket
                  title: チケット基準の希望施術
                  type: object
                - properties:
                    option:
                        description: 商品オプション基準の希望施術
                        allOf:
                            - $ref: '#/components/schemas/protos.open.CreateReservationRequestedProcedure.ReservationRequestedOptionConfiguration'
                  required:
                    - option
                  title: 商品オプション基準の希望施術
                  type: object
        protos.open.CreateReservationRequestedProcedure.ReservationRequestedOptionConfiguration:
            type: object
            required:
                - optionId
            properties:
                optionId:
                    description: 予約希望商品オプションID
                    type: string
                    format: object-id
                visitorTypeId:
                    description: 患者タイプID
                    type: string
                    format: object-id
        protos.open.CreateReservationRequestedProcedure.ReservationRequestedTicketConfiguration:
            type: object
            required:
                - ticketId
            properties:
                ticketId:
                    description: 予約希望チケットID
                    type: string
                    format: object-id
        protos.open.DisableAdvertisingAgreementToVisitorsCommand:
            type: object
            required:
                - phoneNumber
            properties:
                phoneNumber:
                    description: |-
                        マーケティング受信同意を解除する患者の電話番号

                        * 韓国の電話番号のみ使用可能です。
                    type: string
        protos.open.ExchangeTokenCommand:
            type: object
            required:
                - key
            properties:
                key:
                    description: |-
                        API Key

                        認証トークンに交換するためのAPIキーです。KOSチームから発行された値を使用し、クライアントには公開せず、サーバーサイドでのみ使用します。
                    type: string
                    format: uuid
        protos.open.ExchangeTokenResponse:
            type: object
            required:
                - token
            properties:
                token:
                    description: |-
                        認証トークン

                        APIリクエスト時に `Authorization` ヘッダーに含めて送信するトークンです。一定時間が経過すると失効し、失効したトークンで呼び出すと `401` レスポンスが返されます。
                    type: string
                    format: uuid
        protos.open.FindDuplicatedVisitorId:
            type: object
            properties:
                name:
                    description: |-
                        重複照会に使用する患者名

                        `phone` または `birthDateUtc` と共に渡す場合に照会条件として使用されます。`phone` と共に渡す場合、患者名または読み仮名と一致する患者を照会します。
                    type: string
                birthDateUtc:
                    description: |-
                        重複照会に使用する生年月日

                        `name`と共に渡す場合、照会条件として使用されます。オフセットを含む[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time文字列を渡します。
                    type: string
                    format: date-time
                email:
                    description: |-
                        重複照会に使用するメールアドレス

                        保存されたメールアドレスと一致する患者を照会します。
                    type: string
                passportGivenNames:
                    description: |-
                        パスポート名

                        このエンドポイントの重複照会条件として使用されません。
                    type: string
                passportNumber:
                    description: |-
                        重複照会に使用するパスポート番号

                        保存されたパスポート番号と一致する患者を照会します。
                    type: string
                passportSurname:
                    description: |-
                        パスポート姓

                        このエンドポイントの重複照会条件として使用されません。
                    type: string
                phone:
                    description: |-
                        重複照会に使用する電話番号

                        `name` と共に渡す場合に照会条件として使用されます。`countryCode` と `phoneNumber` の両方が一致する必要があります。
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                snsInfo:
                    description: |-
                        重複照会に使用するSNSアカウント情報

                        `snsType` と `accountId` の両方が一致する患者を照会します。
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.SnsInfo'
        protos.open.FindDuplicatedVisitorIdResponse:
            type: object
            properties:
                data:
                    description: |-
                        重複患者ID

                        一致する削除されていない患者が存在しない場合、レスポンスに含まれません。
                    type: string
                    format: object-id
        protos.open.FindScheduleByPurchaseIdQuery:
            type: object
            required:
                - purchaseId
            properties:
                purchaseId:
                    description: スケジュールを照会する会計ID
                    type: string
        protos.open.FindScheduleByPurchaseIdQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: 会計IDに紐づくスケジュール詳細情報
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleContract'
        protos.open.FindVisitor:
            type: object
            required:
                - visitorName
            properties:
                phone:
                    description: |-
                        検索条件として使用する電話番号

                        `visitorName`と合わせて照会条件として使用されます。`countryCode`と`phoneNumber`の両方が一致する必要があります。`phone`がない場合は照会を行わず、空のレスポンスを返します。
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                visitorName:
                    description: |-
                        患者名

                        `phone`と合わせて照会条件として使用されます。患者名または読み仮名が一致する患者を照会します。
                    type: string
        protos.open.FindVisitorResponse:
            type: object
            properties:
                data:
                    description: |-
                        照会された患者情報

                        条件に一致する削除されていない患者情報です。`phone`がない場合、または条件に一致する患者がいない場合はレスポンスに含まれません。
                    allOf:
                        - $ref: '#/components/schemas/protos.open.VisitorInformation'
        protos.open.GenerateUploadingImageUrl:
            type: object
            required:
                - fileName
            properties:
                fileName:
                    description: |-
                        アップロードする画像ファイル名

                        病院ごとにユニークである必要があります。
                    type: string
        protos.open.GenerateUploadingImageUrlResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        画像ファイルをアップロードするためのpresigned URL

                        このURLに画像ファイルのバイナリを`PUT`リクエストでアップロードします。発行されたURLは5分間有効です。
                    type: string
                    format: uri
        protos.open.GetPurchaseSummariesQuery:
            type: object
            required:
                - purchaseIds
            properties:
                purchaseIds:
                    description: |-
                        照会する会計IDのリスト

                        存在しないまたは削除された会計IDは、レスポンスに含まれません。
                    type: array
                    items:
                        type: string
        protos.open.GetPurchaseSummariesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        会計リスト

                        削除されていない会計のみを含みます。存在しないまたは削除済みの `purchaseIds` は応答に含まれません。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseSummary'
        protos.open.GetQuestionnaireAgreementsQueryResponse:
            type: object
            properties:
                data:
                    description: 初診問診票の同意項目リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.QuestionnaireAgreement'
        protos.open.GetQuestionnaireSubmitQuery:
            type: object
            required:
                - visitorId
            properties:
                visitorId:
                    description: 提出された初診問診票を照会する患者ID
                    type: string
                    format: object-id
        protos.open.GetQuestionnaireSubmitQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        提出された初診問診票照会結果

                        患者の基本情報、提出された問診回答、同意項目などを含みます。
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.GetQuestionnaireSubmitLegacyQueryResponse'
        protos.open.GetReschedulableTimeSlotsQuery:
            type: object
            required:
                - scheduleId
                - dateTimeRangeUtc
            properties:
                available:
                    description: |-
                        スロットの空き状況フィルター

                        `true`の場合は空きがあるスロットのみ照会し、`false`の場合は空きがないスロットのみ照会します。省略した場合はすべてのスロットを照会します。
                    type: boolean
                dateTimeRangeUtc:
                    description: 予約日時を変更可能なスロットを照会する時間範囲
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                scheduleId:
                    description: スケジュールID
                    type: string
                    format: object-id
        protos.open.GetReschedulableTimeSlotsQueryResponse:
            type: object
            properties:
                data:
                    description: 予約日時を変更可能なスロットリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.reservation_time_slot.ReservationTimeSlot'
        protos.open.GetReservationGroupsQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        予約グループリスト

                        Open APIには削除されていない予約グループのみが含まれます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationGroupContract'
        protos.open.GetReservationRuleSummariesQuery:
            type: object
            properties:
                isActive:
                    description: |-
                        有効状態フィルター

                        `true`の場合は有効化された予約ルールのみ照会し、`false`の場合は無効化された予約ルールのみ照会します。省略した場合はすべての予約ルールを照会します。
                    type: boolean
        protos.open.GetReservationRuleSummariesQueryResponse:
            type: object
            properties:
                data:
                    description: 予約ルールリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRuleSummary'
        protos.open.GetReservationSlotsByGroupQuery:
            type: object
            required:
                - reservationGroupId
                - startDate
                - endDate
                - timezone
            properties:
                endDate:
                    description: |-
                        照会範囲の終了日

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date形式です。`timezone` 基準の照会範囲の終了日として使用されます。
                    type: string
                    format: date
                reservationGroupId:
                    description: 予約グループID
                    type: string
                    format: object-id
                startDate:
                    description: |-
                        照会範囲の開始日

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date形式です。`timezone` 基準の照会範囲の開始日として使用されます。
                    type: string
                    format: date
                timezone:
                    description: |-
                        照会基準タイムゾーン

                        [IANA time zone database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) の名称です。
                    type: string
        protos.open.GetReservationSlotsByGroupsQuery:
            type: object
            required:
                - reservationGroupIds
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                endDateTimeUtc:
                    description: |-
                        照会範囲の終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                reservationGroupIds:
                    description: |-
                        照会する予約グループIDリスト

                        1つ以上の予約グループIDが必要です。
                    type: array
                    minItems: 1
                    items:
                        type: string
                        format: object-id
                startDateTimeUtc:
                    description: |-
                        照会範囲の開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
        protos.open.GetReservationSlotsByGroupsQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        予約グループ・区域別スロットリスト

                        予約グループの有効化された各区域ごとに項目が生成されます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.ReservationGroupSlots'
        protos.open.GetReservationSlotsByProductQuery:
            type: object
            required:
                - startDateUtc
                - endDateUtc
            properties:
                endDateUtc:
                    description: |-
                        照会範囲の終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                requestedProductOptionIds:
                    description: |-
                        照会する商品メニューIDのリスト

                        商品メニューが紐づいている予約グループの中から、代表予約グループを選択する際に使用されます。このリストで紐づいている予約グループが見つからず、`requestedProductOptionIdsOfPromotion`でも紐づいている予約グループが見つからない場合は、デフォルトの予約グループを使用します。
                    type: array
                    items:
                        type: string
                        format: object-id
                requestedProductOptionIdsOfPromotion:
                    description: |-
                        プロモーション施術メニューIDリスト

                        Deprecated. 代替フィールド: `requestedProductOptionIds`。このリストで紐付けられた予約グループが見つからず、`requestedProductOptionIds`でも紐付けられた予約グループが見つからない場合は、デフォルトの予約グループを使用します。
                    deprecated: true
                    type: array
                    items:
                        type: string
                        format: object-id
                startDateUtc:
                    description: |-
                        照会範囲の開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
        protos.open.GetReservationSlotsByScheduleIdQuery:
            type: object
            required:
                - scheduleId
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                endDateTimeUtc:
                    description: |-
                        照会範囲の終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                scheduleId:
                    description: スケジュールID
                    type: string
                    format: uuid
                startDateTimeUtc:
                    description: |-
                        照会範囲の開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
        protos.open.GetReservationSlotsByScheduleIdQueryV2:
            type: object
            required:
                - scheduleId
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                endDateTimeUtc:
                    description: |-
                        照会範囲の終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time 形式です。
                    type: string
                    format: date-time
                scheduleId:
                    description: スロットを照会するスケジュールID
                    type: string
                    format: uuid
                startDateTimeUtc:
                    description: |-
                        照会範囲の開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time 形式です。
                    type: string
                    format: date-time
        protos.open.GetReservationSlotsByScheduleIdQueryV2Response:
            type: object
            properties:
                data:
                    description: |-
                        予約スケジュールごとのスロットリスト

                        スケジュールに複数の予約スケジュールがある場合、予約スケジュールごとに項目が生成されます。占有リソースのない既存の予約は、既存の予約情報を基準に1件の項目が生成されます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.ReservationGroupOccupiedResourceSlot'
        protos.open.GetReservationSlotsQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: 予約スロットリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.ReservationSlot'
        protos.open.GetReservationTimeSlotsByVisitorIdQuery:
            type: object
            required:
                - dateTimeRangeUtc
                - visitorId
            properties:
                available:
                    description: |-
                        スロットの空き状況フィルター

                        `true`の場合は空きがあるスロットのみ照会し、`false`の場合は空きがないスロットのみ照会します。省略した場合はすべてのスロットを照会します。
                    type: boolean
                dateTimeRangeUtc:
                    description: スロットを照会する時間範囲
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                requestedProcedureOptionIds:
                    description: 予約希望施術オプションIDリスト
                    type: array
                    items:
                        type: string
                        format: object-id
                requestedProcedureTicketIds:
                    description: 予約希望施術チケットIDリスト
                    type: array
                    items:
                        type: string
                        format: object-id
                reservationConsultationRequired:
                    description: カウンセリング要否
                    type: boolean
                reservationRuleId:
                    description: |-
                        予約ルールID

                        省略した場合はデフォルト予約ルールを評価してスロットを照会します。
                    type: string
                    format: object-id
                reservationSedationRequired:
                    description: 睡眠麻酔要否
                    type: boolean
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
        protos.open.GetReservationTimeSlotsByVisitorIdQueryResponse:
            type: object
            properties:
                data:
                    description: 予約時間スロットリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.reservation_time_slot.ReservationTimeSlot'
        protos.open.GetReservationTimeSlotsQuery:
            type: object
            required:
                - dateTimeRangeUtc
            properties:
                available:
                    description: |-
                        スロットの空き状況フィルター

                        `true`の場合は空きがあるスロットのみ照会し、`false`の場合は空きがないスロットのみ照会します。省略した場合はすべてのスロットを照会します。
                    type: boolean
                dateTimeRangeUtc:
                    description: スロットを照会する時間範囲
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                requestedProcedureOptionIds:
                    description: 予約希望施術オプションIDリスト
                    type: array
                    items:
                        type: string
                        format: object-id
                requestedProcedureTicketIds:
                    description: 予約希望施術チケットIDリスト
                    type: array
                    items:
                        type: string
                        format: object-id
                reservationConsultationRequired:
                    description: カウンセリング要否
                    type: boolean
                reservationRuleId:
                    description: |-
                        予約ルールID

                        省略した場合はデフォルト予約ルールを評価してスロットを照会します。
                    type: string
                    format: object-id
                reservationSedationRequired:
                    description: 睡眠麻酔要否
                    type: boolean
                visitorCategoryIds:
                    description: 患者の顧客分類IDリスト
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorGender:
                    description: 患者の性別
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorIsNew:
                    description: 患者が初診かどうか
                    type: boolean
                visitorLanguageCode:
                    description: |-
                        患者の言語コード

                        locale codeを使用します。
                    type: string
                visitorNationalityCode:
                    description: |-
                        患者の国籍コード

                        ISO 3166-1 alpha-2の国コードです。
                    type: string
        protos.open.GetReservationTimeSlotsQueryResponse:
            type: object
            properties:
                data:
                    description: 予約時間スロットリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.reservation_time_slot.ReservationTimeSlot'
        protos.open.GetSchedulesByFlowStepQuery:
            type: object
            required:
                - flowStep
                - reservationStartDateTimeUtcFrom
                - reservationStartDateTimeUtcTo
            properties:
                flowStep:
                    description: |
                        照会する来院段階

                        `FLOW_STATUS_UNSPECIFIED`は照会条件として使用できません。

                        | 値 | 意味 |
                        | --- | --- |
                        | `FLOW_STATUS_UNSPECIFIED` | 不明 |
                        | `RESERVED` | 予約済み |
                        | `RECEPTION` | 受付 |
                        | `CONSULTATION_WAITING` | カウンセリング待機 |
                        | `CONSULTATION` | カウンセリング |
                        | `PROCEDURE_WAITING` | 施術待機 |
                        | `PROCEDURE` | 施術 |
                        | `PROCEDURE_DONE` | 帰宅待ち |
                        | `COMPLETED` | 帰宅 |
                    type: string
                    enum:
                        - FLOW_STATUS_UNSPECIFIED
                        - RESERVED
                        - RECEPTION
                        - CONSULTATION_WAITING
                        - CONSULTATION
                        - PROCEDURE_WAITING
                        - PROCEDURE
                        - PROCEDURE_DONE
                        - COMPLETED
                reservationStartDateTimeUtcFrom:
                    description: |-
                        予約開始日時の照会範囲の開始

                        UTC基準の[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。この日時以降に開始するスケジュールを照会します。
                    type: string
                    format: date-time
                reservationStartDateTimeUtcTo:
                    description: |-
                        予約開始日時の照会範囲の終了

                        UTC基準の[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。この日時以前に開始するスケジュールを照会します。
                    type: string
                    format: date-time
        protos.open.GetSchedulesByFlowStepQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: 条件に一致する削除されていないスケジュールリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleContract'
        protos.open.GetTicketBundlesQuery:
            type: object
            required:
                - visitorId
            properties:
                visitorId:
                    description: 施術チケットバンドルを照会する患者ID
                    type: string
                    format: object-id
        protos.open.GetVisitorQuestionnaireQuery:
            type: object
            required:
                - visitorId
            properties:
                visitorId:
                    description: 初診問診票を照会する患者ID
                    type: string
                    format: object-id
        protos.open.GetVisitorQuestionnaireQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        初診問診票照会結果

                        患者の基本情報と問診票ページのリストを含みます。
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.GetQuestionnaireLagacyQueryResponse'
        protos.open.OccupiedReservationGroupResource:
            type: object
            required:
                - reservationGroupId
                - zoneId
            properties:
                doctor:
                    description: |-
                        担当医

                        現在、公開予約の作成・修正リクエストではこの値を使用しません。
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Doctor'
                reservationGroupId:
                    description: 予約グループID
                    type: string
                    format: object-id
                zoneId:
                    description: 占有する区域ID
                    type: string
                    format: object-id
        protos.open.OccupiedResource:
            type: object
            required:
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                endDateTimeUtc:
                    description: |-
                        占有終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                startDateTimeUtc:
                    description: |-
                        占有開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
            oneOf:
                - properties:
                    reservationGroup:
                        description: 予約グループ基準の予約スケジュール設定
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OccupiedReservationGroupResource'
                  required:
                    - reservationGroup
                  title: 予約グループ基準の予約スケジュール設定
                  type: object
        protos.open.OpenAddProductOptionCommand:
            oneOf:
                - $ref: '#/components/schemas/protos.open.OpenAddProductOptionCommand.SINGLE'
                - $ref: '#/components/schemas/protos.open.OpenAddProductOptionCommand.GROUP'
                - $ref: '#/components/schemas/protos.open.OpenAddProductOptionCommand.CONSULTATION'
            discriminator:
                mapping:
                    CONSULTATION: '#/components/schemas/protos.open.OpenAddProductOptionCommand.CONSULTATION'
                    GROUP: '#/components/schemas/protos.open.OpenAddProductOptionCommand.GROUP'
                    SINGLE: '#/components/schemas/protos.open.OpenAddProductOptionCommand.SINGLE'
                propertyName: type
        protos.open.OpenAddProductOptionCommand.CONSULTATION:
            title: CONSULTATION
            description: '`type` = `CONSULTATION`'
            type: object
            required:
                - productId
                - title
                - description
                - type
                - consultationOptionConfiguration
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `SINGLE` | シングルメニュー — 診療項目1つで構成 |
                        | `GROUP` | グループメニュー — 複数の診療項目を組み合わせて構成 |
                        | `CONSULTATION` | 相談メニュー |
                    type: string
                    const: CONSULTATION
                    enum:
                        - CONSULTATION
                productId:
                    description: 商品ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        多言語対応フィールド: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    consultationOptionConfiguration:
                        description: |-
                            相談メニュー構成

                            `type`が`CONSULTATION`の場合は必須です。
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionConsultationConfiguration'
                  required:
                    - consultationOptionConfiguration
                  title: |-
                    相談メニュー構成

                    `type`が`CONSULTATION`の場合は必須です。
                  type: object
            allOf:
                - not:
                    type: object
                    required:
                        - singleOptionConfiguration
                    properties:
                        singleOptionConfiguration: {}
                - not:
                    type: object
                    required:
                        - groupOptionConfiguration
                    properties:
                        groupOptionConfiguration: {}
        protos.open.OpenAddProductOptionCommand.GROUP:
            title: GROUP
            description: '`type` = `GROUP`'
            type: object
            required:
                - productId
                - title
                - description
                - type
                - groupOptionConfiguration
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `SINGLE` | シングルメニュー — 診療項目1つで構成 |
                        | `GROUP` | グループメニュー — 複数の診療項目を組み合わせて構成 |
                        | `CONSULTATION` | 相談メニュー |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                productId:
                    description: 商品ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        多言語対応フィールド: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    groupOptionConfiguration:
                        description: |-
                            グループメニュー構成

                            `type`が`GROUP`の場合は必須です。
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionGroupConfiguration'
                  required:
                    - groupOptionConfiguration
                  title: |-
                    グループメニュー構成

                    `type`が`GROUP`の場合は必須です。
                  type: object
            allOf:
                - not:
                    type: object
                    required:
                        - singleOptionConfiguration
                    properties:
                        singleOptionConfiguration: {}
                - not:
                    type: object
                    required:
                        - consultationOptionConfiguration
                    properties:
                        consultationOptionConfiguration: {}
        protos.open.OpenAddProductOptionCommand.SINGLE:
            title: SINGLE
            description: '`type` = `SINGLE`'
            type: object
            required:
                - productId
                - title
                - description
                - type
                - singleOptionConfiguration
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `SINGLE` | シングルメニュー — 診療項目1つで構成 |
                        | `GROUP` | グループメニュー — 複数の診療項目を組み合わせて構成 |
                        | `CONSULTATION` | 相談メニュー |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                productId:
                    description: 商品ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        多言語対応フィールド: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    singleOptionConfiguration:
                        description: |-
                            シングルメニュー構成

                            `type`が`SINGLE`の場合は必須です。
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionSingleConfiguration'
                  required:
                    - singleOptionConfiguration
                  title: |-
                    シングルメニュー構成

                    `type`が`SINGLE`の場合は必須です。
                  type: object
            allOf:
                - not:
                    type: object
                    required:
                        - groupOptionConfiguration
                    properties:
                        groupOptionConfiguration: {}
                - not:
                    type: object
                    required:
                        - consultationOptionConfiguration
                    properties:
                        consultationOptionConfiguration: {}
        protos.open.OpenChangeFlowStepCommand:
            type: object
            required:
                - scheduleId
                - step
            properties:
                scheduleId:
                    description: スケジュールID
                    type: string
                    format: object-id
                step:
                    description: |
                        変更する診療ステップ

                        | 値 | 意味 |
                        | --- | --- |
                        | `FLOW_STATUS_UNSPECIFIED` | 不明 |
                        | `RESERVED` | 予約済み |
                        | `RECEPTION` | 受付 |
                        | `CONSULTATION_WAITING` | カウンセリング待機 |
                        | `CONSULTATION` | カウンセリング |
                        | `PROCEDURE_WAITING` | 施術待機 |
                        | `PROCEDURE` | 施術 |
                        | `PROCEDURE_DONE` | 帰宅待ち |
                        | `COMPLETED` | 帰宅 |
                    type: string
                    enum:
                        - FLOW_STATUS_UNSPECIFIED
                        - RESERVED
                        - RECEPTION
                        - CONSULTATION_WAITING
                        - CONSULTATION
                        - PROCEDURE_WAITING
                        - PROCEDURE
                        - PROCEDURE_DONE
                        - COMPLETED
        protos.open.OpenCreateOccupiedTimeCommand:
            type: object
            required:
                - startDateTimeUtc
                - endDateTimeUtc
                - zoneId
                - reservationGroupId
            properties:
                endDateTimeUtc:
                    description: |-
                        占有終了日時

                        オフセットを含む [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) の日時文字列を指定します。`startDateTimeUtc`より後である必要があり、同じ日付内で24時間未満である必要があります。
                    type: string
                    format: date-time
                memo:
                    description: |-
                        時間占有メモ

                        作成された時間占有に保存されるメモです。
                    type: string
                reservationGroupId:
                    description: |-
                        占有する予約グループID

                        既存の予約グループIDである必要があります。
                    type: string
                    format: object-id
                startDateTimeUtc:
                    description: |-
                        占有開始日時

                        オフセットを含む [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) の日時文字列を指定します。
                    type: string
                    format: date-time
                zoneId:
                    description: |-
                        占有する区域ID

                        既存の区域IDである必要があります。
                    type: string
                    format: object-id
        protos.open.OpenCreateOccupiedTimeCommandResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        時間占有作成結果

                        作成された時間占有IDを含みます。
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenCreateOccupiedTimeCommandResponseData'
        protos.open.OpenCreateOccupiedTimeCommandResponseData:
            type: object
            required:
                - occupiedTimeId
            properties:
                occupiedTimeId:
                    description: 作成された時間占有ID
                    type: string
                    format: object-id
        protos.open.OpenCreateProductCommand:
            type: object
            required:
                - title
                - description
                - closed
            properties:
                title:
                    description: 商品名
                    type: string
                description:
                    description: 商品説明
                    type: string
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        バッジタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `NEW` | 新着 |
                        | `POPULAR` | 人気 |
                        | `RECOMMENDED` | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                categoryIds:
                    description: 商品カテゴリIDリスト
                    type: array
                    items:
                        type: string
                        format: object-id
                caution:
                    description: 注意事項
                    type: string
                closed:
                    description: |-
                        販売停止有無

                        `true`の場合、販売が停止されています。
                    type: boolean
                contentImageUrl:
                    description: コンテンツ画像URL
                    type: string
                    format: uri
                coverImageUrl:
                    description: カバー画像URL
                    type: string
                    format: uri
                displayPeriod:
                    description: |-
                        商品公開期間

                        設定しない場合、常時公開されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                isEvent:
                    description: |-
                        イベント有無

                        `true`の場合、イベント商品として表示されます。
                    type: boolean
                offeringPeriod:
                    description: |-
                        商品提供期間

                        設定しない場合、常時提供されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                targetCountryCodes:
                    description: |-
                        公開対象国コードリスト

                        [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) 国コードです。その他の国は`ETC`で渡します。
                    type: array
                    items:
                        type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        多言語対応フィールド: `title`, `description`, `caution`, `coverImageUrl`, `contentImageUrl`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.open.OpenCreateProductCommandResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: 作成された商品ID
                    type: string
                    format: object-id
        protos.open.OpenDeleteProductCommand:
            type: object
            required:
                - productId
            properties:
                productId:
                    description: 商品ID
                    type: string
                    format: object-id
        protos.open.OpenGetCategoriesQuery:
            type: object
            properties:
                opened:
                    description: |-
                        公開有無

                        Open APIでは、リクエスト値に関係なく、公開されているカテゴリのみを照会します。
                    type: boolean
                sort:
                    description: |-
                        並べ替え基準

                        並べ替え可能なフィールドは `order` です。
                    allOf:
                        - $ref: '#/components/schemas/protos.Sort'
        protos.open.OpenGetLinkedProductsQuery:
            type: object
            required:
                - reservationGroupId
            properties:
                reservationGroupId:
                    description: 紐付けられた商品を照会する予約グループID
                    type: string
        protos.open.OpenGetLinkedProductsQueryResponse:
            type: object
            properties:
                data:
                    description: 予約グループに紐付けられた商品一覧
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenLinkableProductContract'
        protos.open.OpenGetMachinesQuery:
            type: object
            properties:
                name:
                    description: |-
                        名前検索キーワード

                        機器名で部分検索します。省略すると全件を照会します。
                    type: string
        protos.open.OpenGetMachinesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        機器リスト

                        削除済みの項目は含まれません。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenMachine'
        protos.open.OpenGetMedicalServicesQuery:
            type: object
            properties:
                title:
                    description: |-
                        名前検索キーワード

                        診療項目名で部分検索します。省略すると全件を照会します。
                    type: string
        protos.open.OpenGetMedicalServicesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        診療項目リスト

                        削除済みの項目は含まれません。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenMedicalService'
        protos.open.OpenGetMedicinesQuery:
            type: object
            properties:
                name:
                    description: |-
                        名前検索キーワード

                        医薬品名で部分検索します。省略すると全件を照会します。
                    type: string
        protos.open.OpenGetMedicinesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        医薬品リスト

                        削除済みの項目は含まれません。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenMedicine'
        protos.open.OpenGetPrepaidCardChargingEventStatisticsQuery:
            type: object
            required:
                - chargedDateTimeUtcFrom
                - chargedDateTimeUtcTo
            properties:
                amountTypes:
                    description: 金額タイプフィルター
                    type: array
                    items:
                        type: string
                        enum:
                            - PrepaidCardChargingEventAmountType_UNKNOWN
                            - BALANCE
                            - POINT
                assigneeIds:
                    description: 担当者IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                chargedDateTimeUtcFrom:
                    description: |-
                        プリペイドカード履歴照会開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                chargedDateTimeUtcTo:
                    description: |-
                        プリペイドカード履歴照会終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                chargingEventTypes:
                    description: 履歴タイプフィルター
                    type: array
                    items:
                        type: string
                        enum:
                            - PrepaidCardChargingEventType_UNKNOWN
                            - PAYMENT
                            - PAYMENT_CANCEL
                            - REFUND
                            - CHARGE
                            - EXPIRATION
                            - SUBTRACT
                cursor:
                    description: |-
                        次のページカーソル

                        前のレスポンスの`nextCursor`値を渡します。`limit`なしで単独送信することはできません。
                    type: string
                limit:
                    description: |-
                        1ページあたりの最大行数

                        1以上である必要があります。最大値は5000です。未送信の場合、全件を返します。
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                ownerId:
                    description: プリペイドカード所有者患者IDフィルター
                    type: string
                    format: object-id
                visitorId:
                    description: 患者IDフィルター
                    type: string
                    format: object-id
        protos.open.OpenGetPrepaidCardChargingEventStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: プリペイドカード履歴統計リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenPrepaidCardChargingEventStatisticsItem'
                nextCursor:
                    description: |-
                        次のページカーソル

                        最終ページの場合は返却されません。
                    type: string
                totalCount:
                    description: |-
                        全行数

                        最初のページ（`cursor`未送信）でのみ返却されます。
                    type: integer
                    format: int32
        protos.open.OpenGetProcedureTaskStatisticsQuery:
            type: object
            required:
                - completedDateTimeUtcFrom
                - completedDateTimeUtcTo
            properties:
                assigneeIds:
                    description: 担当者IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                completedDateTimeUtcFrom:
                    description: |-
                        施術完了日時照会開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                completedDateTimeUtcTo:
                    description: |-
                        施術完了日時照会終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                cursor:
                    description: |-
                        次のページカーソル

                        前のレスポンスの`nextCursor`値を渡します。`limit`なしで単独送信することはできません。
                    type: string
                doctorIds:
                    description: 医師IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                limit:
                    description: |-
                        1ページあたりの最大行数

                        1以上である必要があります。最大値は5000です。未送信の場合、全件を返します。
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                medicineAndMachineIds:
                    description: 薬品・機器IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                procedureIds:
                    description: 施術IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                productCategoryIds:
                    description: 商品カテゴリIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                productIds:
                    description: 商品IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                productOptionIds:
                    description: 商品メニューIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorCategoryIds:
                    description: 患者カテゴリIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorId:
                    description: 患者IDフィルター
                    type: string
                    format: object-id
        protos.open.OpenGetProcedureTaskStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: 施術タスクリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenProcedureTaskStatisticsItem'
                nextCursor:
                    description: |-
                        次のページカーソル

                        最終ページの場合は返されません。
                    type: string
                totalCount:
                    description: |-
                        全行数

                        最初のページ（`cursor`未送信）でのみ返されます。
                    type: integer
                    format: int32
        protos.open.OpenGetProceduresQuery:
            type: object
            properties:
                name:
                    description: |-
                        名前検索キーワード

                        施術名で部分検索します。省略すると全件を照会します。
                    type: string
        protos.open.OpenGetProceduresQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        施術リスト

                        削除済みの項目は含まれません。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenProcedure'
        protos.open.OpenGetProductQuery:
            type: object
            required:
                - id
            properties:
                id:
                    description: 商品ID
                    type: string
                    format: object-id
        protos.open.OpenGetProductsQuery:
            type: object
            properties:
                title:
                    description: 商品名検索キーワード
                    type: string
                categoryId:
                    description: 商品カテゴリID
                    type: string
                    format: object-id
                deleted:
                    description: |-
                        削除有無リクエスト値

                        Open APIでは、リクエスト値に関係なく削除されていない商品のみ照会します。
                    type: boolean
                includePromotions:
                    description: |-
                        プロモーション含む有無

                        Deprecated.
                    deprecated: true
                    type: boolean
                isEvent:
                    description: |-
                        イベント商品フィルター

                        `true`の場合はイベント商品のみ、`false`の場合はイベント商品以外の商品のみ照会します。値を省略した場合はイベント有無でフィルタリングしません。
                    type: boolean
                optionIds:
                    description: |-
                        絞り込む商品メニューIDのリスト

                        指定した場合、リクエストした商品メニューIDを1つ以上含む商品のみ照会します。省略するか空のリストで渡した場合、商品メニューIDの条件は適用されません。
                    type: array
                    items:
                        type: string
                        format: object-id
                targetCountryCode:
                    description: |-
                        ターゲット国コード

                        [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) 国コードです。その他の国は`ETC`で渡します。
                    type: string
        protos.open.OpenGetPurchaseItemStatisticsQuery:
            type: object
            required:
                - createdDateTimeUtcFrom
                - createdDateTimeUtcTo
            properties:
                assigneeIds:
                    description: 担当者IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                createdDateTimeUtcFrom:
                    description: |-
                        購入項目照会開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                createdDateTimeUtcTo:
                    description: |-
                        購入項目照会終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                cursor:
                    description: |-
                        次のページカーソル

                        前のレスポンスの`nextCursor`値を渡します。`limit`なしで単独送信することはできません。
                    type: string
                limit:
                    description: |-
                        1ページあたりの最大行数

                        1以上である必要があります。最大値は5000です。未送信の場合、全件を返します。
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                productCategoryIds:
                    description: 商品カテゴリIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                productIds:
                    description: 商品IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                productOptionIds:
                    description: 商品メニューIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                purchaseItemTypes:
                    description: 購入項目タイプフィルター
                    type: array
                    items:
                        type: string
                        enum:
                            - PurchaseItemType_UNSPECIFIED
                            - PRODUCT_OPTION
                            - ETCETRA_PRODUCT
                            - PREPAID_CARD_PRODUCT
                purchaseStatuses:
                    description: 購入ステータスフィルター
                    type: array
                    items:
                        type: string
                        enum:
                            - PURCHASE_STATUS_UNSPECIFIED
                            - REFUNDED
                            - PARTIALLY_REFUNDED
                            - ACCEPTED
                            - PAID
                            - INITIALIZED
                taxCharged:
                    description: 課税有無フィルター
                    type: boolean
                visitorCategoryIds:
                    description: 患者カテゴリIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorId:
                    description: 患者IDフィルター
                    type: string
                    format: object-id
        protos.open.OpenGetPurchaseItemStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: 購入項目リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenPurchaseItemStatisticsItem'
                nextCursor:
                    description: |-
                        次のページカーソル

                        最終ページの場合は返されません。
                    type: string
                totalCount:
                    description: |-
                        全行数

                        最初のページ（`cursor`未送信）でのみ返されます。
                    type: integer
                    format: int32
        protos.open.OpenGetScheduleStatisticsQuery:
            type: object
            properties:
                consultationDoctorIds:
                    description: 診察医師IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                counselorIds:
                    description: カウンセラーIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                cursor:
                    description: |-
                        次のページカーソル

                        前のレスポンスの`nextCursor`値を渡します。`limit`なしで単独送信することはできません。
                    type: string
                limit:
                    description: |-
                        1ページあたりの最大行数

                        1以上である必要があります。最大値は5000です。未送信の場合、全件を返します。
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                nationalities:
                    description: 国籍リストフィルター
                    type: array
                    items:
                        type: string
                reservationStartDateTimeUtcFrom:
                    description: |-
                        予約日時照会開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                reservationStartDateTimeUtcTo:
                    description: |-
                        予約日時照会終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                reservationStatuses:
                    description: 予約状態リストフィルター
                    type: array
                    items:
                        type: string
                        enum:
                            - RESERVATION_STATUS_UNSPECIFIED
                            - RESERVED
                            - CANCELED
                            - NO_SHOW
                            - IN_PROGRESS
                            - COMPLETED
                reservedDateTimeUtcFrom:
                    description: |-
                        予約作成日時照会開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                reservedDateTimeUtcTo:
                    description: |-
                        予約作成日時照会終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                visitorCategoryIds:
                    description: 患者カテゴリIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorIds:
                    description: 患者IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
        protos.open.OpenGetScheduleStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: 予約リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenScheduleStatisticsItem'
                nextCursor:
                    description: |-
                        次のページカーソル

                        最終ページの場合は返されません。
                    type: string
                totalCount:
                    description: |-
                        全行数

                        最初のページ（`cursor`未送信）でのみ返されます。
                    type: integer
                    format: int32
        protos.open.OpenGetTransactionStatisticsQuery:
            type: object
            required:
                - createdTimeUtcFrom
                - createdTimeUtcTo
            properties:
                createdTimeUtcFrom:
                    description: |-
                        決済照会開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                createdTimeUtcTo:
                    description: |-
                        決済照会終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                cursor:
                    description: |-
                        次のページカーソル

                        前のレスポンスの`nextCursor`値を渡します。`limit`なしで単独送信することはできません。
                    type: string
                limit:
                    description: |-
                        1ページあたりの最大行数

                        1以上である必要があります。最大値は5000です。未送信の場合、全件を返します。
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                paymentAmountFrom:
                    description: 決済金額照会最小値フィルター
                    type: integer
                    format: int32
                paymentAmountTo:
                    description: 決済金額照会最大値フィルター
                    type: integer
                    format: int32
                paymentType:
                    description: 決済手段フィルター
                    type: array
                    items:
                        type: string
                        enum:
                            - TransactionPaymentType_UNSPECIFIED
                            - CASH
                            - CARD
                            - PREPAID_CARD
                            - PLATFORM
                            - TRANSFER
                            - EASY_PAY
                            - MEDICAL_LOAN
                purchaseAssigneeIds:
                    description: 担当者IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                statuses:
                    description: 決済ステータスフィルター
                    type: array
                    items:
                        type: string
                        enum:
                            - TransactionStatus_UNSPECIFIED
                            - REQUESTED
                            - APPROVED
                            - CANCELED
                            - SPENT
                            - FAILED
                taxCharged:
                    description: 課税有無フィルター
                    type: boolean
                visitorCategoryIds:
                    description: 患者カテゴリIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorId:
                    description: 患者IDフィルター
                    type: string
                    format: object-id
        protos.open.OpenGetTransactionStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: 決済統計リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenTransactionStatisticsItem'
                nextCursor:
                    description: |-
                        次のページカーソル

                        最終ページの場合は返却されません。
                    type: string
                totalCount:
                    description: |-
                        全行数

                        最初のページ（`cursor`未送信）でのみ返却されます。
                    type: integer
                    format: int32
        protos.open.OpenGetVisitorStatisticsQuery:
            type: object
            properties:
                cursor:
                    description: |-
                        次のページカーソル

                        前のレスポンスの`nextCursor`値を渡します。`limit`なしで単独送信することはできません。
                    type: string
                firstVisitedDateTimeUtcFrom:
                    description: |-
                        初回来院日時照会開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                firstVisitedDateTimeUtcTo:
                    description: |-
                        初回来院日時照会終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                isCompletedProcedureTask:
                    description: 施術タスク完了状態フィルター
                    type: boolean
                isCompletedPurchase:
                    description: 購入完了状態フィルター
                    type: boolean
                lastVisitedDateTimeUtcFrom:
                    description: |-
                        直近来院日時照会開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                lastVisitedDateTimeUtcTo:
                    description: |-
                        直近来院日時照会終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                limit:
                    description: |-
                        1ページあたりの最大行数

                        1以上である必要があります。最大値は5000です。未送信の場合、全件を返します。
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                visitorCategoryIds:
                    description: 患者カテゴリIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorCreatedDateTimeUtcFrom:
                    description: |-
                        患者登録日時照会開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                visitorCreatedDateTimeUtcTo:
                    description: |-
                        患者登録日時照会終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                visitorFunnelCategoryIds:
                    description: 患者流入チャネルカテゴリIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorFunnelIds:
                    description: 患者流入チャネルIDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorIds:
                    description: 患者IDリストフィルター
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorNationalities:
                    description: 患者国籍リストフィルター
                    type: array
                    items:
                        type: string
        protos.open.OpenGetVisitorStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: 患者リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenVisitorStatisticsItem'
                nextCursor:
                    description: |-
                        次のページカーソル

                        最終ページの場合は返されません。
                    type: string
                totalCount:
                    description: |-
                        全行数

                        最初のページ（`cursor`未送信）でのみ返されます。
                    type: integer
                    format: int32
        protos.open.OpenLinkableProductContract:
            type: object
            required:
                - productId
                - title
            properties:
                title:
                    description: 商品名
                    type: string
                categoryNames:
                    description: 商品が属するカテゴリ名一覧
                    type: array
                    items:
                        type: string
                linkedReservationGroupId:
                    description: 現在紐付けられている予約グループID。紐付けられている予約グループがない場合は返却されません。
                    type: string
                options:
                    description: 商品オプション一覧
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenLinkableProductOptionContract'
                productId:
                    description: 商品ID
                    type: string
        protos.open.OpenLinkableProductOptionContract:
            type: object
            required:
                - productId
                - productTitle
                - optionId
                - optionName
            properties:
                categoryNames:
                    description: 商品が属するカテゴリ名一覧
                    type: array
                    items:
                        type: string
                linkedReservationGroupId:
                    description: 現在紐付けられている予約グループID。紐付けられている予約グループがない場合は返却されません。
                    type: string
                optionId:
                    description: 商品オプションID
                    type: string
                optionName:
                    description: 商品オプション名
                    type: string
                productId:
                    description: 商品ID
                    type: string
                productTitle:
                    description: 商品名
                    type: string
        protos.open.OpenMachine:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 機器名
                    type: string
                id:
                    description: 機器ID
                    type: string
                    format: object-id
        protos.open.OpenMedicalService:
            type: object
            required:
                - id
                - title
                - status
                - configuration
                - draftedDateTimeUtc
                - updatedDateTimeUtc
            properties:
                title:
                    description: 診療項目名
                    type: string
                description:
                    description: 診療項目説明
                    type: string
                caution:
                    description: 注意事項
                    type: string
                configuration:
                    description: |-
                        診療項目設定

                        コード、施術、機器、医薬品、単位、保険診療区分、課税タイプが含まれます。
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceConfiguration'
                contributionConstant:
                    description: 貢献定数
                    type: integer
                    format: int32
                draftedDateTimeUtc:
                    description: |-
                        一時保存日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                durationTime:
                    description: |-
                        所要時間

                        単位は分(minute)です。
                    type: number
                    format: double
                id:
                    description: 診療項目ID
                    type: string
                    format: object-id
                priceAmount:
                    description: 価格金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                recommendedInterval:
                    description: |-
                        推奨間隔

                        単位は日(day)です。
                    type: integer
                    format: int32
                status:
                    description: |
                        診療項目ステータス

                        診療項目ステータス

                        | 値 | 意味 |
                        | --- | --- |
                        | `DRAFT` | 下書き |
                        | `PUBLISHED` | 公開済み |
                    type: string
                    enum:
                        - MedicalServiceStatus_UNKNOWN
                        - DRAFT
                        - PUBLISHED
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        多言語対応フィールド: `title`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                updatedDateTimeUtc:
                    description: |-
                        修正日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
        protos.open.OpenMedicine:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 医薬品名
                    type: string
                id:
                    description: 医薬品ID
                    type: string
                    format: object-id
        protos.open.OpenPrepaidCardChargingEventStatisticsItem:
            type: object
            required:
                - chargingId
                - chargingType
                - chargingAmountType
                - chargedDateTimeUtc
                - ownerId
                - ownerChartNumber
                - prepaidCardId
                - prepaidCardTitle
                - visitorId
                - visitorChartNumber
            properties:
                assignees:
                    description: 担当者リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenStatisticsAssignee'
                chargedDateTimeUtc:
                    description: プリペイドカード履歴発生日時
                    type: string
                    format: date-time
                chargingAmountType:
                    description: プリペイドカード金額タイプ
                    type: string
                    enum:
                        - PrepaidCardChargingEventAmountType_UNKNOWN
                        - BALANCE
                        - POINT
                chargingAmountV2:
                    description: 履歴金額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                chargingId:
                    description: プリペイドカード履歴識別子
                    type: string
                chargingType:
                    description: プリペイドカード履歴タイプ
                    type: string
                    enum:
                        - PrepaidCardChargingEventType_UNKNOWN
                        - PAYMENT
                        - PAYMENT_CANCEL
                        - REFUND
                        - CHARGE
                        - EXPIRATION
                        - SUBTRACT
                memo:
                    description: メモ
                    type: string
                ownerChartNumber:
                    description: プリペイドカード所有者カルテ番号
                    type: string
                ownerId:
                    description: プリペイドカード所有者患者ID
                    type: string
                    format: object-id
                prepaidCardId:
                    description: プリペイドカードID
                    type: string
                    format: object-id
                prepaidCardTitle:
                    description: プリペイドカード名
                    type: string
                purchaseItems:
                    description: 関連購入項目リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenPrepaidCardChargingEventStatisticsPurchaseItem'
                purchaseMemo:
                    description: 決済メモ
                    type: string
                referrerAccount:
                    description: 紹介者スタッフ情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerAccount'
                referrerUnregisteredName:
                    description: 未登録紹介者名
                    type: string
                referrerVisitor:
                    description: 紹介患者情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerVisitor'
                totalPurchaseItemPriceV2:
                    description: 購入項目総額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                visitorAgreementAdvertisements:
                    description: 患者広告性情報受信同意有無
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: 患者情報通知受信同意有無
                    type: boolean
                visitorCategoryNames:
                    description: 患者カテゴリ名リスト
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: 患者カルテ番号
                    type: string
                visitorCreatedDateTimeUtc:
                    description: 患者登録日時
                    type: string
                    format: date-time
                visitorFunnelCategoryName:
                    description: 患者流入チャネルカテゴリ名
                    type: string
                visitorFunnelDetail:
                    description: 患者流入チャネル詳細
                    type: string
                visitorFunnelName:
                    description: 患者流入チャネル名
                    type: string
                visitorGender:
                    description: 患者性別
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
                visitorNationality:
                    description: 患者国籍
                    type: string
        protos.open.OpenPrepaidCardChargingEventStatisticsPurchaseItem:
            type: object
            required:
                - itemId
                - title
            properties:
                title:
                    description: 購入項目名
                    type: string
                itemId:
                    description: 購入項目ID
                    type: string
                    format: object-id
        protos.open.OpenProcedure:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 施術名
                    type: string
                id:
                    description: 施術ID
                    type: string
                    format: object-id
        protos.open.OpenProcedureTaskStatisticsItem:
            type: object
            required:
                - scheduleId
                - taskSequence
                - completedDateTimeUtc
                - paymentRequired
                - visitorId
                - visitorChartNumber
            properties:
                title:
                    description: 施術タスクタイトル
                    type: string
                anesthesiaType:
                    description: |
                        麻酔タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `SEDATION` | 睡眠麻酔 |
                        | `SPRAY` | スプレー麻酔 |
                        | `CREAM` | クリーム麻酔 |
                        | `DENTAL` | デンタル麻酔 |
                        | `GAS` | ガス麻酔 |
                        | `ICE` | アイス麻酔 |
                        | `CREAM_DENTAL` | クリーム＋デンタル麻酔 |
                    type: string
                    enum:
                        - ANESTHESIA_TYPE_UNSPECIFIED
                        - SEDATION
                        - SPRAY
                        - CREAM
                        - DENTAL
                        - GAS
                        - ICE
                        - CREAM_DENTAL
                assigneeNames:
                    description: 担当者名リスト
                    type: array
                    items:
                        type: string
                completedDateTimeUtc:
                    description: |-
                        施術完了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                counselorNames:
                    description: カウンセラー名リスト
                    type: array
                    items:
                        type: string
                doctorAssignedDateTimeUtc:
                    description: 施術者配定日時
                    type: string
                    format: date-time
                doctorCallDateTimeUtc:
                    description: 施術者呼び出し日時
                    type: string
                    format: date-time
                doctorNames:
                    description: 医師名リスト
                    type: array
                    items:
                        type: string
                isFirstProcedureSchedule:
                    description: 初回施術予約有無
                    type: boolean
                machineNames:
                    description: 機器名リスト
                    type: array
                    items:
                        type: string
                medicalServiceCode:
                    description: 診療項目コード
                    type: string
                medicalServiceContributionConstant:
                    description: 診療項目貢献定数
                    type: integer
                    format: int32
                medicalServiceDurationTime:
                    description: 診療項目所要時間（分）
                    type: integer
                    format: int32
                medicalServiceName:
                    description: 診療項目名
                    type: string
                medicalServiceUnit:
                    description: 診療項目単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
                medicineNames:
                    description: 薬品名リスト
                    type: array
                    items:
                        type: string
                paymentRequired:
                    description: 決済要否
                    type: boolean
                procedureName:
                    description: 施術名
                    type: string
                procedureTaskId:
                    description: |-
                        施術タスクID

                        `{scheduleId}:{taskSequence}` 形式の一意識別子です。
                    type: string
                productCategoryNames:
                    description: 商品カテゴリ名リスト
                    type: array
                    items:
                        type: string
                productOptionTitle:
                    description: 商品メニュータイトル
                    type: string
                productTitle:
                    description: 商品タイトル
                    type: string
                referrerAccount:
                    description: 紹介者スタッフ情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerAccount'
                roomAssignedDateTimeUtc:
                    description: 施術室配定日時
                    type: string
                    format: date-time
                roomTitle:
                    description: 施術室タイトル
                    type: string
                scheduleId:
                    description: 予約ID
                    type: string
                    format: object-id
                taskSequence:
                    description: 施術タスク順番
                    type: integer
                    format: int32
                ticketPriceV2:
                    description: 施術チケット決済金額
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                unit:
                    description: 施術単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
                visitorAgreementAdvertisements:
                    description: 広告性情報受信同意有無
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: 情報性通知受信同意有無
                    type: boolean
                visitorCategoryNames:
                    description: 患者カテゴリ名リスト
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: 患者カルテ番号
                    type: string
                visitorCreatedDateTimeUtc:
                    description: 患者登録日時
                    type: string
                    format: date-time
                visitorFunnelCategoryName:
                    description: 患者流入チャネルカテゴリ名
                    type: string
                visitorFunnelDetail:
                    description: 患者流入チャネル詳細
                    type: string
                visitorFunnelName:
                    description: 患者流入チャネル名
                    type: string
                visitorGender:
                    description: 患者性別
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
                visitorNationality:
                    description: 患者国籍
                    type: string
                zoneTitle:
                    description: 区域タイトル
                    type: string
        protos.open.OpenProductOptionConsultationConfiguration:
            type: object
            properties:
                displayChannels:
                    description: |
                        公開チャネルリスト

                        公開チャネル

                        | 値 | 意味 |
                        | --- | --- |
                        | `HOMEPAGE` | 病院ホームページチャネル |
                        | `GANGNAMUNNI` | 강남언니チャネル |
                        | `KOS_CONNECT` | KOS Connectチャネル |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
        protos.open.OpenProductOptionGroupComposition:
            type: object
            required:
                - medicalServiceId
                - price
                - count
            properties:
                count:
                    description: 回数
                    type: integer
                    format: int32
                medicalServiceId:
                    description: 診療項目ID
                    type: string
                    format: object-id
                price:
                    description: 価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
        protos.open.OpenProductOptionGroupConfiguration:
            type: object
            required:
                - compositions
                - frequentlyUsedOption
                - price
            properties:
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        バッジタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `NEW` | 新着 |
                        | `POPULAR` | 人気 |
                        | `RECOMMENDED` | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                compositions:
                    description: |-
                        構成リスト

                        1つ以上の診療項目構成が必要です。
                    type: array
                    minItems: 1
                    items:
                        $ref: '#/components/schemas/protos.open.OpenProductOptionGroupComposition'
                displayChannels:
                    description: |
                        公開チャネルリスト

                        公開チャネル

                        | 値 | 意味 |
                        | --- | --- |
                        | `HOMEPAGE` | 病院ホームページチャネル |
                        | `GANGNAMUNNI` | 강남언니チャネル |
                        | `KOS_CONNECT` | KOS Connectチャネル |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: よく使うメニュー有無
                    type: boolean
                price:
                    description: 価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
        protos.open.OpenProductOptionSingleConfiguration:
            type: object
            required:
                - medicalServiceId
                - price
                - count
                - frequentlyUsedOption
            properties:
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        バッジタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `NEW` | 新着 |
                        | `POPULAR` | 人気 |
                        | `RECOMMENDED` | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                count:
                    description: 回数
                    type: integer
                    format: int32
                displayChannels:
                    description: |
                        公開チャネルリスト

                        公開チャネル

                        | 値 | 意味 |
                        | --- | --- |
                        | `HOMEPAGE` | 病院ホームページチャネル |
                        | `GANGNAMUNNI` | 강남언니チャネル |
                        | `KOS_CONNECT` | KOS Connectチャネル |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: よく使うメニュー有無
                    type: boolean
                medicalServiceId:
                    description: 診療項目ID
                    type: string
                    format: object-id
                price:
                    description: 価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
        protos.open.OpenPurchaseItemCost:
            type: object
            required:
                - totalAmount
                - suppliedPriceAmount
                - vatAmount
            properties:
                suppliedPriceAmount:
                    description: 供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalAmount:
                    description: 残存価値金額または最終価格
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
        protos.open.OpenPurchaseItemStatisticsItem:
            type: object
            required:
                - purchaseId
                - createdDateTimeUtc
                - purchaseItemType
                - purchaseStatus
                - taxCharged
                - visitorId
                - visitorChartNumber
            properties:
                assignees:
                    description: 担当者リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenStatisticsAssignee'
                basePriceAmountV2:
                    description: 割引基準価格
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                cost:
                    description: 購入費用
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenPurchaseItemCost'
                counselorNames:
                    description: カウンセラー名リスト
                    type: array
                    items:
                        type: string
                createdDateTimeUtc:
                    description: |-
                        購入日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                etceteraProductCategoryName:
                    description: その他商品カテゴリ名
                    type: string
                etceteraProductName:
                    description: その他商品名
                    type: string
                firstPriceAmount:
                    description: 通常価格
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                prepaidCardName:
                    description: プリペイドカード商品名
                    type: string
                procedureConfigurations:
                    description: 施術構成リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenPurchaseProcedureConfiguration'
                productCategoryNames:
                    description: 商品カテゴリ名リスト
                    type: array
                    items:
                        type: string
                productOptionMachineNames:
                    description: 商品メニューの機器名リスト
                    type: array
                    items:
                        type: string
                productOptionMedicineNames:
                    description: 商品メニューの薬品名リスト
                    type: array
                    items:
                        type: string
                productOptionProcedureNames:
                    description: 商品メニューの施術名リスト
                    type: array
                    items:
                        type: string
                productOptionTitle:
                    description: 商品メニュータイトル
                    type: string
                productTitle:
                    description: 商品タイトル
                    type: string
                purchaseId:
                    description: 購入ID
                    type: string
                    format: object-id
                purchaseItemType:
                    description: |
                        購入項目タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `PRODUCT_OPTION` | 通常商品メニュー |
                        | `ETCETRA_PRODUCT` | その他商品 |
                        | `PREPAID_CARD_PRODUCT` | プリペイドカード商品 |
                    type: string
                    enum:
                        - PurchaseItemType_UNSPECIFIED
                        - PRODUCT_OPTION
                        - ETCETRA_PRODUCT
                        - PREPAID_CARD_PRODUCT
                purchaseStatus:
                    description: |
                        購入状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `REFUNDED` | 返金済み |
                        | `PARTIALLY_REFUNDED` | 一部返金済み |
                        | `ACCEPTED` | 会計済み |
                        | `PAID` | 支払い済み |
                        | `INITIALIZED` | 未会計 |
                    type: string
                    enum:
                        - PURCHASE_STATUS_UNSPECIFIED
                        - REFUNDED
                        - PARTIALLY_REFUNDED
                        - ACCEPTED
                        - PAID
                        - INITIALIZED
                referrerAccount:
                    description: 紹介者スタッフ情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerAccount'
                reservationFunnelCategoryName:
                    description: 予約流入チャネルカテゴリ名
                    type: string
                reservationFunnelDetail:
                    description: 予約流入チャネル詳細
                    type: string
                reservationFunnelName:
                    description: 予約流入チャネル名
                    type: string
                taxCharged:
                    description: 課税有無
                    type: boolean
                visitorAgreementAdvertisements:
                    description: 広告性情報受信同意有無
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: 情報性通知受信同意有無
                    type: boolean
                visitorCategoryNames:
                    description: 患者カテゴリ名リスト
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: 患者カルテ番号
                    type: string
                visitorCreatedDateTimeUtc:
                    description: 患者登録日時
                    type: string
                    format: date-time
                visitorFirstPaymentDateTimeUtc:
                    description: 患者初回決済日時
                    type: string
                    format: date-time
                visitorFirstReservationDateTimeUtc:
                    description: 患者初回予約日時
                    type: string
                    format: date-time
                visitorFunnelCategoryName:
                    description: 患者流入チャネルカテゴリ名
                    type: string
                visitorFunnelDetail:
                    description: 患者流入チャネル詳細
                    type: string
                visitorFunnelName:
                    description: 患者流入チャネル名
                    type: string
                visitorGender:
                    description: 患者性別
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
                visitorNationality:
                    description: 患者国籍
                    type: string
                zoneName:
                    description: 区域名
                    type: string
        protos.open.OpenPurchaseMedicalService:
            type: object
            required:
                - name
                - code
            properties:
                name:
                    description: 診療項目名
                    type: string
                code:
                    description: 診療項目コード
                    type: string
                contributionConstant:
                    description: 施術貢献定数
                    type: integer
                    format: int32
                durationTime:
                    description: 施術所要時間（分）
                    type: integer
                    format: int32
                price:
                    description: 商品メニュー価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                unit:
                    description: 施術単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.open.OpenPurchaseProcedureConfiguration:
            type: object
            properties:
                finalUnit:
                    description: 最終施術単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
                medicalService:
                    description: 診療項目情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenPurchaseMedicalService'
        protos.open.OpenRemoveProductOptionCommand:
            type: object
            required:
                - id
                - productId
            properties:
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                productId:
                    description: 商品ID
                    type: string
                    format: object-id
        protos.open.OpenReserveByVisitorIdCommandV2:
            type: object
            required:
                - visitorId
                - zoneId
                - occupiedResources
            properties:
                consultationRequired:
                    description: カウンセリングの要否
                    type: boolean
                funnelDetail:
                    description: |-
                        詳細流入チャネル

                        フリーテキストで送信します。
                    type: string
                occupiedResources:
                    description: |-
                        予約スケジュールリスト

                        1つ以上の予約スケジュールが必要です。すべての項目の予約開始日時は同じ日付である必要があります。
                    type: array
                    minItems: 1
                    items:
                        $ref: '#/components/schemas/protos.open.OccupiedResource'
                requestedProcedures:
                    description: 希望施術リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure'
                reservationMemo:
                    description: 予約メモ
                    type: string
                sedationRequired:
                    description: 睡眠麻酔の要否
                    type: boolean
                visitorId:
                    description: 予約を作成する既存患者ID
                    type: string
                    format: object-id
                zoneId:
                    description: |-
                        受付区域ID

                        患者が訪問する区域のIDです。
                    type: string
                    format: object-id
        protos.open.OpenReserveCommandV2:
            type: object
            required:
                - visitorName
                - zoneId
                - occupiedResources
            properties:
                consultationRequired:
                    description: カウンセリングの要否
                    type: boolean
                funnelDetail:
                    description: |-
                        詳細流入チャネル

                        フリーテキストで送信します。
                    type: string
                occupiedResources:
                    description: |-
                        予約スケジュールリスト

                        1件以上の予約スケジュールが必要です。すべての項目の予約開始日時は同じ日付である必要があります。
                    type: array
                    minItems: 1
                    items:
                        $ref: '#/components/schemas/protos.open.OccupiedResource'
                requestedProcedures:
                    description: 希望施術リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure'
                reservationMemo:
                    description: 予約メモ
                    type: string
                sedationRequired:
                    description: 睡眠麻酔の要否
                    type: boolean
                visitorBirthDayUtc:
                    description: |-
                        予約する患者の生年月日

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time 形式です。既存患者の重複検索および新規患者の作成に使用されます。
                    type: string
                    format: date-time
                visitorConnectedInformation:
                    description: |-
                        患者連携情報

                        LINEまたはカンナムオンニ連携情報です。既存患者の重複検索および新規患者の作成に使用されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation'
                visitorEmail:
                    description: |-
                        予約する患者のメールアドレス

                        既存患者の重複検索および新規患者の作成に使用されます。
                    type: string
                    format: email
                visitorLanguage:
                    description: |-
                        予約する患者の言語

                        新規患者を作成する際に患者情報に保存されます。サポートリスト: ko, ja, en, zh-CN, zh-yue, es, th, ru, id, ms, vi, mn, uz, nl, de, pt など
                    type: string
                visitorName:
                    description: |-
                        予約する患者名

                        既存患者の重複検索および新規患者の作成に使用されます。
                    type: string
                visitorNationality:
                    description: |-
                        予約する患者の国籍

                        [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) 国コードです。新規患者を作成する際に患者情報に保存されます。
                    type: string
                visitorPassportGivenNames:
                    description: |-
                        予約する患者のパスポート英字名

                        新規患者を作成する際に患者情報に保存されます。
                    type: string
                visitorPassportNumber:
                    description: |-
                        予約する患者のパスポート番号

                        既存患者の重複検索および新規患者の作成に使用されます。
                    type: string
                visitorPassportSurname:
                    description: |-
                        予約する患者のパスポート英字姓

                        新規患者を作成する際に患者情報に保存されます。
                    type: string
                visitorPhone:
                    description: |-
                        予約する患者の携帯電話番号

                        既存患者の重複検索および新規患者の作成に使用されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                visitorSnsInfo:
                    description: |-
                        予約する患者のSNS情報

                        既存患者の重複検索および新規患者の作成に使用されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.SnsInfo'
                zoneId:
                    description: |-
                        受付区域ID

                        患者が訪問する区域のIDです。
                    type: string
                    format: object-id
        protos.open.OpenReserveCommandV2Response:
            type: object
            required:
                - scheduleId
            properties:
                scheduleId:
                    description: 作成されたスケジュールID
                    type: string
                    format: uuid
        protos.open.OpenScheduleStatisticsItem:
            type: object
            required:
                - scheduleId
                - reservationStartDateTimeUtc
                - zoneTitle
                - reservationStatus
                - isFirstProcedureSchedule
                - reservationGroupTitle
                - visitorId
                - visitorChartNumber
            properties:
                consultationDoctorNames:
                    description: 診察医師名リスト
                    type: array
                    items:
                        type: string
                consultationDwellTimeMinute:
                    description: カウンセリング進行段階滞在時間（分）
                    type: integer
                    format: int32
                consultationWaitingDwellTimeMinute:
                    description: カウンセリング待機段階滞在時間（分）
                    type: integer
                    format: int32
                counselorNames:
                    description: カウンセラー名リスト
                    type: array
                    items:
                        type: string
                durationMinute:
                    description: 予約所要時間（分）
                    type: integer
                    format: int32
                isFirstProcedureSchedule:
                    description: 初回施術予約有無
                    type: boolean
                optionItemTotalPriceV2:
                    description: 来院時施術決済総額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                paymentTotalAmountV2:
                    description: 来院時実決済総額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                procedureDoneDwellTimeMinute:
                    description: 帰宅待機段階滞在時間（分）
                    type: integer
                    format: int32
                procedureDwellTimeMinute:
                    description: 施術進行段階滞在時間（分）
                    type: integer
                    format: int32
                procedureWaitingDwellTimeMinute:
                    description: 施術待機段階滞在時間（分）
                    type: integer
                    format: int32
                receptionDateTimeUtc:
                    description: 受付日時
                    type: string
                    format: date-time
                receptionDwellTimeMinute:
                    description: 受付段階滞在時間（分）
                    type: integer
                    format: int32
                referrerAccount:
                    description: 紹介者スタッフ情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerAccount'
                requestedCounselorName:
                    description: リクエストカウンセラー名
                    type: string
                requestedDoctorName:
                    description: リクエスト医師名
                    type: string
                requestedDoctorNames:
                    description: リクエスト医師名リスト
                    type: array
                    items:
                        type: string
                requestedOptionProcedureNames:
                    description: リクエスト施術名リスト
                    type: array
                    items:
                        type: string
                requestedOptionTitles:
                    description: リクエスト商品メニュータイトルリスト
                    type: array
                    items:
                        type: string
                requestedProductCategoryNames:
                    description: リクエスト商品カテゴリ名リスト
                    type: array
                    items:
                        type: string
                requestedProductOptionTotalPriceV2:
                    description: 希望施術メニュー総額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                requestedProductTitles:
                    description: リクエスト商品タイトルリスト
                    type: array
                    items:
                        type: string
                reservationAssigneeName:
                    description: 担当受付者名
                    type: string
                reservationFunnelCategoryName:
                    description: 予約流入チャネルカテゴリ名
                    type: string
                reservationFunnelDetail:
                    description: 予約流入チャネル詳細
                    type: string
                reservationFunnelName:
                    description: 予約流入チャネル名
                    type: string
                reservationGroupOccupiedResources:
                    description: 予約グループ占有リソースリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenScheduleStatisticsReservationGroupOccupiedResource'
                reservationGroupTitle:
                    description: 予約グループタイトル
                    type: string
                reservationMemo:
                    description: 予約メモ
                    type: string
                reservationStartDateTimeUtc:
                    description: |-
                        予約開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。例：`2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                reservationStatus:
                    description: |
                        予約状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `RESERVED` | 予約完了 |
                        | `CANCELED` | キャンセル済み |
                        | `NO_SHOW` | ノーショー |
                        | `IN_PROGRESS` | 進行中 |
                        | `COMPLETED` | 完了 |
                    type: string
                    enum:
                        - RESERVATION_STATUS_UNSPECIFIED
                        - RESERVED
                        - CANCELED
                        - NO_SHOW
                        - IN_PROGRESS
                        - COMPLETED
                reservedDateTimeUtc:
                    description: 予約作成日時
                    type: string
                    format: date-time
                scheduleId:
                    description: 予約ID
                    type: string
                    format: object-id
                visitorAgreementAdvertisements:
                    description: 広告性情報受信同意有無
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: 情報性通知受信同意有無
                    type: boolean
                visitorCategoryNames:
                    description: 患者カテゴリ名リスト
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: 患者カルテ番号
                    type: string
                visitorCreatedDateTimeUtc:
                    description: 患者登録日時
                    type: string
                    format: date-time
                visitorFunnelCategoryName:
                    description: 患者流入チャネルカテゴリ名
                    type: string
                visitorFunnelDetail:
                    description: 患者流入チャネル詳細
                    type: string
                visitorFunnelName:
                    description: 患者流入チャネル名
                    type: string
                visitorGender:
                    description: 患者性別
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
                visitorMemo:
                    description: 患者メモ
                    type: string
                visitorNationality:
                    description: 患者国籍
                    type: string
                zoneTitle:
                    description: 区域タイトル
                    type: string
        protos.open.OpenScheduleStatisticsReservationGroupOccupiedResource:
            type: object
            required:
                - reservationGroupTitle
                - zoneTitle
            properties:
                reservationGroupTitle:
                    description: 予約グループタイトル
                    type: string
                zoneTitle:
                    description: 占有区域タイトル
                    type: string
        protos.open.OpenStatisticsAssignee:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 担当者名
                    type: string
                id:
                    description: 担当者ID
                    type: string
                    format: object-id
        protos.open.OpenStatisticsReferrerAccount:
            type: object
            required:
                - accountId
                - accountName
            properties:
                accountId:
                    description: 紹介者スタッフID
                    type: string
                    format: object-id
                accountName:
                    description: 紹介者スタッフ名
                    type: string
        protos.open.OpenStatisticsReferrerVisitor:
            type: object
            required:
                - visitorId
                - chartNumber
            properties:
                chartNumber:
                    description: 紹介患者カルテ番号
                    type: string
                visitorId:
                    description: 紹介患者ID
                    type: string
                    format: object-id
        protos.open.OpenTransactionStatisticsCost:
            type: object
            required:
                - totalAmount
                - suppliedAmount
                - vatAmount
            properties:
                suppliedAmount:
                    description: 供給価額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalAmount:
                    description: 決済金額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                vatAmount:
                    description: VAT
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
        protos.open.OpenTransactionStatisticsItem:
            type: object
            required:
                - purchaseId
                - assigneeName
                - paymentType
                - taxCharged
                - status
                - visitorId
                - visitorChartNumber
            properties:
                acquirerName:
                    description: 仕入会社名
                    type: string
                assigneeName:
                    description: 担当者名
                    type: string
                cardApprovalNumber:
                    description: カード承認番号
                    type: string
                cardCompanyName:
                    description: カード会社名。`paymentType`が`CARD`の場合のみ返却されます。
                    type: string
                cardInstallmentMonths:
                    description: カード分割払い月数。`paymentType`が`CARD`の場合のみ返却されます。
                    type: integer
                    format: int32
                cost:
                    description: 決済金額情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenTransactionStatisticsCost'
                easyPayApprovalNumber:
                    description: 簡易決済承認番号。`paymentType`が`EASY_PAY`の場合のみ返却されます。
                    type: string
                easyPayProviderName:
                    description: 簡易決済プロバイダー名。`paymentType`が`EASY_PAY`の場合のみ返却されます。
                    type: string
                incomeTaxDeductionNumber:
                    description: 現金領収書承認番号
                    type: string
                issuerName:
                    description: 発行会社名
                    type: string
                lastUpdatedPaymentDateTimeUtc:
                    description: 最終決済状態変更日時
                    type: string
                    format: date-time
                medicalLoanCompanyName:
                    description: 医療ローン会社名。`paymentType`が`MEDICAL_LOAN`の場合のみ返却されます。
                    type: string
                paymentType:
                    description: 決済手段
                    type: string
                    enum:
                        - TransactionPaymentType_UNSPECIFIED
                        - CASH
                        - CARD
                        - PREPAID_CARD
                        - PLATFORM
                        - TRANSFER
                        - EASY_PAY
                        - MEDICAL_LOAN
                platformName:
                    description: プラットフォーム名。`paymentType`が`PLATFORM`の場合のみ返却されます。
                    type: string
                purchaseAssigneeNames:
                    description: 担当者名リスト
                    type: array
                    items:
                        type: string
                purchaseId:
                    description: 購入ID
                    type: string
                    format: object-id
                purchaseMemo:
                    description: 決済メモ
                    type: string
                referrerAccount:
                    description: 紹介スタッフ情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenTransactionStatisticsReferrerAccount'
                referrerUnregisteredName:
                    description: 未登録紹介者名
                    type: string
                referrerVisitor:
                    description: 紹介患者情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenTransactionStatisticsReferrerVisitor'
                reservationFunnelCategoryName:
                    description: 予約流入チャネルカテゴリ名
                    type: string
                reservationFunnelDetail:
                    description: 予約流入チャネル詳細
                    type: string
                reservationFunnelName:
                    description: 予約流入チャネル名
                    type: string
                status:
                    description: 決済ステータス
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                taxCharged:
                    description: 課税有無
                    type: boolean
                visitorAgreementAdvertisements:
                    description: 患者広告性情報受信同意有無
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: 患者情報通知受信同意有無
                    type: boolean
                visitorCategoryNames:
                    description: 患者カテゴリ名リスト
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: 患者カルテ番号
                    type: string
                visitorCreatedDateTimeUtc:
                    description: 患者登録日時
                    type: string
                    format: date-time
                visitorFunnelCategoryName:
                    description: 患者流入チャネルカテゴリ名
                    type: string
                visitorFunnelDetail:
                    description: 患者流入チャネル詳細
                    type: string
                visitorFunnelName:
                    description: 患者流入チャネル名
                    type: string
                visitorGender:
                    description: 患者性別
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
                visitorNationality:
                    description: 患者国籍
                    type: string
        protos.open.OpenTransactionStatisticsReferrerAccount:
            type: object
            required:
                - accountId
                - accountName
            properties:
                accountId:
                    description: 紹介スタッフID
                    type: string
                    format: object-id
                accountName:
                    description: 紹介スタッフ名
                    type: string
        protos.open.OpenTransactionStatisticsReferrerVisitor:
            type: object
            required:
                - visitorId
                - chartNumber
            properties:
                chartNumber:
                    description: 紹介患者カルテ番号
                    type: string
                visitorId:
                    description: 紹介患者ID
                    type: string
                    format: object-id
        protos.open.OpenUpdateProductInformationCommand:
            type: object
            required:
                - id
                - title
                - description
                - closed
            properties:
                title:
                    description: 商品名
                    type: string
                description:
                    description: 商品説明
                    type: string
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        バッジタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `NEW` | 新着 |
                        | `POPULAR` | 人気 |
                        | `RECOMMENDED` | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                categoryIds:
                    description: 商品カテゴリIDリスト
                    type: array
                    items:
                        type: string
                        format: object-id
                caution:
                    description: 注意事項
                    type: string
                closed:
                    description: |-
                        販売停止有無

                        `true`の場合、販売が停止されています。
                    type: boolean
                contentImageUrl:
                    description: コンテンツ画像URL
                    type: string
                    format: uri
                coverImageUrl:
                    description: カバー画像URL
                    type: string
                    format: uri
                displayPeriod:
                    description: |-
                        商品公開期間

                        設定しない場合、常時公開されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                id:
                    description: 商品ID
                    type: string
                    format: object-id
                isEvent:
                    description: |-
                        イベント有無

                        `true`の場合、イベント商品として表示されます。
                    type: boolean
                offeringPeriod:
                    description: |-
                        商品提供期間

                        設定しない場合、常時提供されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                targetCountryCodes:
                    description: |-
                        公開対象国コードリスト

                        [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) 国コードです。その他の国は`ETC`で渡します。
                    type: array
                    items:
                        type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        多言語対応フィールド: `title`, `description`, `caution`, `coverImageUrl`, `contentImageUrl`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.open.OpenUpdateProductOptionCommand:
            oneOf:
                - $ref: '#/components/schemas/protos.open.OpenUpdateProductOptionCommand.SINGLE'
                - $ref: '#/components/schemas/protos.open.OpenUpdateProductOptionCommand.GROUP'
                - $ref: '#/components/schemas/protos.open.OpenUpdateProductOptionCommand.CONSULTATION'
            discriminator:
                mapping:
                    CONSULTATION: '#/components/schemas/protos.open.OpenUpdateProductOptionCommand.CONSULTATION'
                    GROUP: '#/components/schemas/protos.open.OpenUpdateProductOptionCommand.GROUP'
                    SINGLE: '#/components/schemas/protos.open.OpenUpdateProductOptionCommand.SINGLE'
                propertyName: type
        protos.open.OpenUpdateProductOptionCommand.CONSULTATION:
            title: CONSULTATION
            description: '`type` = `CONSULTATION`'
            type: object
            required:
                - id
                - productId
                - title
                - description
                - type
                - consultationOptionConfiguration
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `SINGLE` | シングルメニュー — 診療項目1つで構成 |
                        | `GROUP` | グループメニュー — 複数の診療項目を組み合わせて構成 |
                        | `CONSULTATION` | 相談メニュー |
                    type: string
                    const: CONSULTATION
                    enum:
                        - CONSULTATION
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                productId:
                    description: 商品ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        多言語対応フィールド: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    consultationOptionConfiguration:
                        description: |-
                            相談メニュー構成

                            `type`が`CONSULTATION`の場合は必須です。
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionConsultationConfiguration'
                  required:
                    - consultationOptionConfiguration
                  title: |-
                    相談メニュー構成

                    `type`が`CONSULTATION`の場合は必須です。
                  type: object
            allOf:
                - not:
                    type: object
                    required:
                        - singleOptionConfiguration
                    properties:
                        singleOptionConfiguration: {}
                - not:
                    type: object
                    required:
                        - groupOptionConfiguration
                    properties:
                        groupOptionConfiguration: {}
        protos.open.OpenUpdateProductOptionCommand.GROUP:
            title: GROUP
            description: '`type` = `GROUP`'
            type: object
            required:
                - id
                - productId
                - title
                - description
                - type
                - groupOptionConfiguration
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `SINGLE` | シングルメニュー — 診療項目1つで構成 |
                        | `GROUP` | グループメニュー — 複数の診療項目を組み合わせて構成 |
                        | `CONSULTATION` | 相談メニュー |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                productId:
                    description: 商品ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        多言語対応フィールド: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    groupOptionConfiguration:
                        description: |-
                            グループメニュー構成

                            `type`が`GROUP`の場合は必須です。
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionGroupConfiguration'
                  required:
                    - groupOptionConfiguration
                  title: |-
                    グループメニュー構成

                    `type`が`GROUP`の場合は必須です。
                  type: object
            allOf:
                - not:
                    type: object
                    required:
                        - singleOptionConfiguration
                    properties:
                        singleOptionConfiguration: {}
                - not:
                    type: object
                    required:
                        - consultationOptionConfiguration
                    properties:
                        consultationOptionConfiguration: {}
        protos.open.OpenUpdateProductOptionCommand.SINGLE:
            title: SINGLE
            description: '`type` = `SINGLE`'
            type: object
            required:
                - id
                - productId
                - title
                - description
                - type
                - singleOptionConfiguration
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `SINGLE` | シングルメニュー — 診療項目1つで構成 |
                        | `GROUP` | グループメニュー — 複数の診療項目を組み合わせて構成 |
                        | `CONSULTATION` | 相談メニュー |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                productId:
                    description: 商品ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        多言語対応フィールド: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    singleOptionConfiguration:
                        description: |-
                            シングルメニュー構成

                            `type`が`SINGLE`の場合は必須です。
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionSingleConfiguration'
                  required:
                    - singleOptionConfiguration
                  title: |-
                    シングルメニュー構成

                    `type`が`SINGLE`の場合は必須です。
                  type: object
            allOf:
                - not:
                    type: object
                    required:
                        - groupOptionConfiguration
                    properties:
                        groupOptionConfiguration: {}
                - not:
                    type: object
                    required:
                        - consultationOptionConfiguration
                    properties:
                        consultationOptionConfiguration: {}
        protos.open.OpenUpdateReservationCommandV2:
            type: object
            required:
                - scheduleId
                - zoneId
                - occupiedResources
            properties:
                occupiedResources:
                    description: |-
                        変更する予約スケジュールのリスト

                        1つ以上の予約スケジュールが必要です。すべての項目の予約開始日時は同じ日付でなければなりません。
                    type: array
                    minItems: 1
                    items:
                        $ref: '#/components/schemas/protos.open.OccupiedResource'
                scheduleId:
                    description: 修正する予約スケジュールID
                    type: string
                    format: uuid
                zoneId:
                    description: |-
                        受付区域ID

                        予約の受付区域として設定する区域のIDです。
                    type: string
                    format: object-id
        protos.open.OpenUpdateScheduleConsultationInfoCommand:
            type: object
            required:
                - scheduleId
            properties:
                consultationMemo:
                    description: |-
                        カウンセリングメモ

                        送信しない場合、変更されません。
                    type: string
                scheduleId:
                    description: 修正するスケジュールID
                    type: string
                    format: uuid
        protos.open.OpenVisitorStatisticsItem:
            type: object
            required:
                - visitorId
                - visitorChartNumber
                - visitorCreatedDateTimeUtc
                - isCompletedPurchase
                - isCompletedProcedureTask
                - totalCompletedScheduleCount
                - totalTicketCount
                - totalAvailableTicketCount
                - totalCompletedProcedureTaskCount
            properties:
                firstCompletedProcedureTaskDateTimeUtc:
                    description: 初回施術タスク完了日時
                    type: string
                    format: date-time
                firstCompletedPurchaseDateTimeUtc:
                    description: 初回購入完了日時
                    type: string
                    format: date-time
                firstReservationDateTimeUtc:
                    description: 初回予約日時
                    type: string
                    format: date-time
                firstVisitedDateTimeUtc:
                    description: 初回来院日時
                    type: string
                    format: date-time
                firstVisitedTotalTransactionAmountV2:
                    description: 初回来院時の会計売上
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                isCompletedProcedureTask:
                    description: 施術タスク完了状態
                    type: boolean
                isCompletedPurchase:
                    description: 購入完了状態
                    type: boolean
                lastVisitedDateTimeUtc:
                    description: 直近来院日時
                    type: string
                    format: date-time
                referrerAccount:
                    description: 紹介者スタッフ情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerAccount'
                totalAvailableTicketAmountV2:
                    description: 残りの施術チケット負債総額
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                totalAvailableTicketCount:
                    description: 残りの施術チケット数
                    type: integer
                    format: int32
                totalCompletedProcedureTaskCount:
                    description: 完了した施術タスク数
                    type: integer
                    format: int64
                totalCompletedScheduleCount:
                    description: 完了した予約数
                    type: integer
                    format: int32
                totalPrepaidCardBalanceV2:
                    description: 累計プリペイドカード現金総額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalPrepaidCardPointV2:
                    description: 累計プリペイドカードポイント総額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalPrepaidCardRemainBalanceV2:
                    description: プリペイドカード残り現金総額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalPrepaidCardRemainPointV2:
                    description: プリペイドカード残りポイント総額
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalTicketAmountV2:
                    description: 累計施術会計売上
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                totalTicketCount:
                    description: 発行済み施術チケット数
                    type: integer
                    format: int32
                totalTransactionAmountV2:
                    description: 累計会計売上
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalUsedTicketAmountV2:
                    description: 累計施術実現売上
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                visitorAgreementAdvertisements:
                    description: 広告性情報受信同意有無
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: 情報性通知受信同意有無
                    type: boolean
                visitorCategoryNames:
                    description: 患者カテゴリ名リスト
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: 患者カルテ番号
                    type: string
                visitorCreatedDateTimeUtc:
                    description: 患者登録日時
                    type: string
                    format: date-time
                visitorFunnelCategoryId:
                    description: 患者流入チャネルカテゴリID
                    type: string
                    format: object-id
                visitorFunnelCategoryName:
                    description: 患者流入チャネルカテゴリ名
                    type: string
                visitorFunnelDetail:
                    description: 患者流入チャネル詳細
                    type: string
                visitorFunnelId:
                    description: 患者流入チャネルID
                    type: string
                    format: object-id
                visitorFunnelName:
                    description: 患者流入チャネル名
                    type: string
                visitorGender:
                    description: 患者性別
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
                visitorMemo:
                    description: 患者メモ
                    type: string
                visitorNationality:
                    description: 患者国籍
                    type: string
        protos.open.RegisterVisitorImages:
            type: object
            properties:
                images:
                    description: |-
                        登録する患者画像リスト

                        各項目は1件の患者画像として登録されます。登録された画像は削除されていない状態で作成されます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.image.RegisterVisitorImageConfiguration'
        protos.open.RescheduleByTimeSlotCommand:
            type: object
            required:
                - scheduleId
                - reservationDateTimeRange
            properties:
                reservationDateTimeRange:
                    description: |-
                        変更する予約時間

                        `getReschedulableTimeSlots`で照会した、予約日時を変更可能なスロットの時間範囲を送信します。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                scheduleId:
                    description: スケジュールID
                    type: string
                    format: object-id
        protos.open.ReservationGroupOccupiedResourceSlot:
            type: object
            required:
                - occupiedResourceId
                - reservationGroupId
                - zoneId
            properties:
                occupiedResourceId:
                    description: |-
                        予約スケジュールの識別ID

                        スケジュール内の占有リソースを識別します。占有リソースのない既存の予約は互換用IDを返します。
                    type: string
                reservationGroupId:
                    description: 該当予約スケジュールの予約グループID
                    type: string
                    format: object-id
                slots:
                    description: |-
                        該当予約日程の予約可能なスロットリスト

                        定員、予約ポリシー、休診日、予約グループ開始日の条件を通過したスロットのみを含みます。照会範囲内に予約可能なスロットがない場合は空の配列です。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.ReservationSlot'
                zoneId:
                    description: 該当予約スケジュールの区域ID
                    type: string
                    format: object-id
        protos.open.ReservationGroupSlots:
            type: object
            required:
                - reservationGroupId
                - zoneId
            properties:
                reservationGroupId:
                    description: スロットが属する予約グループID
                    type: string
                    format: object-id
                slots:
                    description: |-
                        該当する予約グループと区域の予約可能なスロットリスト

                        定員、予約ポリシー、休診日、予約グループ開始日の条件を通過したスロットのみを含みます。照会範囲内に予約可能なスロットがない場合は、空の配列となります。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.ReservationSlot'
                zoneId:
                    description: スロットが属する区域ID
                    type: string
                    format: object-id
        protos.open.ReservationSlot:
            type: object
            required:
                - reservationGroupId
                - zone
                - startDateTimeUtc
                - endDateTimeUtc
                - capacity
                - reservationCount
            properties:
                capacity:
                    description: 該当スロットの最大予約可能人数
                    type: integer
                    format: int32
                endDateTimeUtc:
                    description: |-
                        予約終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                reservationCount:
                    description: 現在の予約人数
                    type: integer
                    format: int32
                reservationGroupId:
                    description: 予約グループID
                    type: string
                    format: object-id
                startDateTimeUtc:
                    description: |-
                        予約開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                zone:
                    description: 区域情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.ReservationSlotZoneConfiguration'
        protos.open.ReservationSlotZoneConfiguration:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 区域名
                    type: string
                id:
                    description: 区域ID
                    type: string
                    format: object-id
        protos.open.ReserveByTimeSlotCommand:
            type: object
            required:
                - reservationDateTimeRange
                - visitorName
                - visitorPhone
            properties:
                consultationRequired:
                    description: カウンセリング要否
                    type: boolean
                funnel:
                    description: |-
                        流入チャネル情報

                        省略した場合、または流入チャネルカテゴリと流入チャネルがどちらも空の場合（無効化されて無視された場合を含む）、チャネルに応じたデフォルトの流入経路が設定されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.open.CreateReservationFunnel'
                requestedProcedures:
                    description: 希望施術リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.CreateReservationRequestedProcedure'
                reservationDateTimeRange:
                    description: |-
                        予約時間

                        照会した予約可能時間スロットの時間範囲を送信します。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                reservationMemo:
                    description: 予約メモ
                    type: string
                reservationRuleId:
                    description: |-
                        予約ルールID

                        スロット照会時に送信した`reservationRuleId`と同じ値を送信します。省略した場合はデフォルト予約ルールを使用します。
                    type: string
                    format: object-id
                sedationRequired:
                    description: 睡眠麻酔要否
                    type: boolean
                visitorBirthDayUtc:
                    description: 患者の生年月日
                    type: string
                    format: date-time
                visitorCategoryIds:
                    description: 患者の顧客分類IDリスト
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorConnectedInformation:
                    description: 患者連携情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation'
                visitorEmail:
                    description: 患者のメールアドレス
                    type: string
                    format: email
                visitorGender:
                    description: 患者の性別
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorIsNew:
                    description: 患者が初診かどうか
                    type: boolean
                visitorLanguageCode:
                    description: |-
                        患者の言語コード

                        locale codeを使用します。
                    type: string
                visitorName:
                    description: 患者名
                    type: string
                visitorNationality:
                    description: |-
                        患者の国籍

                        ISO 3166-1 alpha-2の国コードです。
                    type: string
                visitorPassportGivenNames:
                    description: 患者のパスポート英字名
                    type: string
                visitorPassportNumber:
                    description: 患者のパスポート番号
                    type: string
                visitorPassportSurname:
                    description: 患者のパスポート英字姓
                    type: string
                visitorPhone:
                    description: 患者の電話番号
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                visitorRequest:
                    description: 患者の要望事項
                    type: string
                visitorSnsInfo:
                    description: 患者のSNS情報
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.SnsInfo'
        protos.open.ReserveByTimeSlotCommandResponse:
            type: object
            required:
                - scheduleId
            properties:
                scheduleId:
                    description: 作成されたスケジュールID
                    type: string
                    format: uuid
        protos.open.ReserveByTimeSlotWithVisitorIdCommand:
            type: object
            required:
                - reservationDateTimeRange
                - visitorId
            properties:
                consultationRequired:
                    description: カウンセリング要否
                    type: boolean
                funnel:
                    description: |-
                        流入チャネル情報

                        省略した場合、または流入チャネルカテゴリと流入チャネルがどちらも空の場合（無効化されて無視された場合を含む）、チャネルに応じたデフォルトの流入経路が設定されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.open.CreateReservationFunnel'
                requestedProcedures:
                    description: 希望施術リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.CreateReservationRequestedProcedure'
                reservationDateTimeRange:
                    description: |-
                        予約時間

                        照会した予約可能時間スロットの時間範囲を送信します。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                reservationMemo:
                    description: 予約メモ
                    type: string
                reservationRuleId:
                    description: |-
                        予約ルールID

                        スロット照会時に送信した`reservationRuleId`と同じ値を送信します。省略した場合はデフォルト予約ルールを使用します。
                    type: string
                    format: object-id
                sedationRequired:
                    description: 睡眠麻酔要否
                    type: boolean
                visitorConnectedInformation:
                    description: 患者連携情報
                    allOf:
                        - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation'
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
                visitorRequest:
                    description: 患者の要望事項
                    type: string
        protos.open.ReserveByTimeSlotWithVisitorIdCommandResponse:
            type: object
            required:
                - scheduleId
            properties:
                scheduleId:
                    description: 作成されたスケジュールID
                    type: string
                    format: uuid
        protos.open.ReserveByVisitorIdCommand:
            type: object
            required:
                - visitorId
                - reservationGroupId
                - zoneId
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                consultationRequired:
                    description: カウンセリングの要否
                    type: boolean
                endDateTimeUtc:
                    description: |-
                        予約終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                funnelDetail:
                    description: |-
                        詳細流入経路

                        フリーテキストで入力します。
                    type: string
                requestedProcedures:
                    description: 希望施術リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure'
                reservationGroupId:
                    description: 予約グループID
                    type: string
                    format: object-id
                reservationMemo:
                    description: 予約メモ
                    type: string
                sedationRequired:
                    description: 睡眠麻酔の要否
                    type: boolean
                startDateTimeUtc:
                    description: |-
                        予約開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                visitorId:
                    description: 既存患者ID
                    type: string
                    format: object-id
                zoneId:
                    description: |-
                        予約区域ID

                        予約が作成される区域のIDです。
                    type: string
                    format: object-id
        protos.open.ReserveCommand:
            type: object
            required:
                - visitorName
                - reservationGroupId
                - zoneId
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                consultationRequired:
                    description: カウンセリング必要有無
                    type: boolean
                endDateTimeUtc:
                    description: |-
                        予約終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time 形式です。
                    type: string
                    format: date-time
                funnelDetail:
                    description: |-
                        詳細流入チャネル

                        フリーテキストで送信します。
                    type: string
                requestedProcedures:
                    description: 希望施術リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure'
                reservationGroupId:
                    description: 予約グループID
                    type: string
                    format: object-id
                reservationMemo:
                    description: 予約メモ
                    type: string
                sedationRequired:
                    description: 睡眠麻酔必要有無
                    type: boolean
                startDateTimeUtc:
                    description: |-
                        予約開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time 形式です。
                    type: string
                    format: date-time
                visitorBirthDayUtc:
                    description: |-
                        予約する患者の生年月日

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time 形式です。既存患者の重複検索および新規患者の作成に使用されます。
                    type: string
                    format: date-time
                visitorConnectedInformation:
                    description: |-
                        患者連携情報

                        LINEまたはカンナムオンニ連携情報です。既存患者の重複検索および新規患者の作成に使用されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation'
                visitorEmail:
                    description: |-
                        予約する患者のメールアドレス

                        既存患者の重複検索および新規患者の作成に使用されます。
                    type: string
                    format: email
                visitorLanguage:
                    description: |-
                        予約する患者の言語

                        新規患者を作成する際に患者情報に保存されます。サポートリスト: ko, ja, en, zh-CN, zh-yue, es, th, ru, id, ms, vi, mn, uz, nl, de, pt など
                    type: string
                visitorName:
                    description: |-
                        予約する患者名

                        既存患者の重複検索および新規患者の作成に使用されます。
                    type: string
                visitorNationality:
                    description: |-
                        予約する患者の国籍

                        [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) 国コードです。新規患者を作成する際に患者情報に保存されます。
                    type: string
                visitorPassportGivenNames:
                    description: |-
                        予約する患者のパスポート英字名

                        新規患者を作成する際に患者情報に保存されます。
                    type: string
                visitorPassportNumber:
                    description: |-
                        予約する患者のパスポート番号

                        既存患者の重複検索および新規患者の作成に使用されます。
                    type: string
                visitorPassportSurname:
                    description: |-
                        予約する患者のパスポート英字姓

                        新規患者を作成する際に患者情報に保存されます。
                    type: string
                visitorPhone:
                    description: |-
                        予約する患者の携帯電話番号

                        既存患者の重複検索および新規患者の作成に使用されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                visitorSnsInfo:
                    description: |-
                        予約する患者のSNS情報

                        既存患者の重複検索および新規患者の作成に使用されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.SnsInfo'
                zoneId:
                    description: |-
                        予約区域ID

                        予約が作成される区域のIDです。
                    type: string
                    format: object-id
        protos.open.ReserveCommandResponse:
            type: object
            required:
                - reservationId
            properties:
                reservationId:
                    description: 作成された予約ID
                    type: string
                    format: uuid
        protos.open.SearchProductOptionSummariesQuery:
            type: object
            required:
                - searchText
            properties:
                searchText:
                    description: 検索キーワード
                    type: string
                targetCountryCode:
                    description: |-
                        ターゲット国コード

                        [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) 国コードです。その他の国は`ETC`で指定します。
                    type: string
        protos.open.SearchVisitors:
            type: object
            required:
                - offset
                - limit
            properties:
                chartNumber:
                    description: |-
                        検索条件として使用するカルテ番号

                        保存されているカルテ番号と一致する患者を検索します。
                    type: string
                dateOfBirth:
                    description: |-
                        検索条件として使用する生年月日

                        オフセットを含む [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) の日時文字列、または `yyyy-MM-dd HH:mm:ss.SSS'Z'` パターンの文字列を指定します。保存されている生年月日と一致する患者を検索します。
                    type: string
                email:
                    description: |-
                        検索条件として使用するメールアドレス

                        `phone`、`chartNumber`、`dateOfBirth` のいずれか1つと併せて指定した場合に、追加の検索条件として使用されます。保存されているメールアドレスと一致する患者を検索します。
                    type: string
                    format: email
                limit:
                    description: 照会件数
                    type: integer
                    format: int32
                offset:
                    description: 照会開始位置
                    type: integer
                    format: int32
                partOfVisitorName:
                    description: |-
                        患者名の検索ワード

                        `phone`、`chartNumber`、`dateOfBirth` のいずれか1つと併せて指定した場合に、追加の検索条件として使用されます。患者の氏名または読み仮名に含まれる文字列で検索します。
                    type: string
                phone:
                    description: |-
                        検索条件として使用する電話番号

                        `countryCode` と `phoneNumber` の両方が一致する患者を検索します。
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
        protos.open.SearchVisitorsResponse:
            type: object
            properties:
                data:
                    description: |-
                        照会された患者リスト

                        削除されておらず、条件に一致する患者のリストです。条件に一致する患者が存在しない場合は、空のリストを返します。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.VisitorInformation'
        protos.open.SubmitVisitorQuestionnaireCommand:
            type: object
            required:
                - visitorId
                - name
                - dateOfBirth
                - gender
            properties:
                name:
                    description: 問診回答に保存する患者名
                    type: string
                address:
                    description: |-
                        問診回答に保存する患者の住所

                        送信すると問診回答に保存されます。既存の患者住所情報がある場合のみ、患者情報にも反映されます。
                    type: string
                addressDetail:
                    description: |-
                        問診回答に保存する患者の詳細住所

                        送信すると問診回答に保存されます。既存の患者住所情報がある場合のみ、患者情報にも反映されます。
                    type: string
                agreements:
                    description: |-
                        提出する規約同意項目リスト

                        項目に`type`がある場合、該当タイプの患者同意情報に反映されます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.SubmittedQuestionnaireAgreement'
                answers:
                    description: 提出する問診回答リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.SelectedAnswer'
                dateOfBirth:
                    description: |-
                        患者の生年月日

                        初診問診票の提出リクエストでは、8桁の `yyyyMMdd` パターンの文字列で渡します。
                    type: string
                gender:
                    description: |
                        患者の性別

                        | 値 | 意味 |
                        | --- | --- |
                        | `GENDER_UNSPECIFIED` | 未指定 |
                        | `MALE` | 男性 |
                        | `FEMALE` | 女性 |
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                phone:
                    description: |-
                        問診回答に保存する患者の携帯電話番号

                        入力すると、患者情報の携帯電話番号も更新されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                phoneticName:
                    description: |-
                        問診回答に保存する患者の氏名（カタカナ）

                        送信すると患者情報にも反映されます。
                    type: string
                registrationNumber:
                    description: |-
                        問診回答に保存する住民登録番号

                        送信すると患者情報にも反映されます。
                    type: string
                visitorId:
                    description: 問診票を提出する患者ID
                    type: string
                    format: object-id
        protos.open.SubmitVisitorQuestionnaireCommandResponse:
            type: object
            required:
                - questionnaireId
            properties:
                questionnaireId:
                    description: 作成された問診回答ID
                    type: string
                    format: object-id
        protos.open.VisitorConnectedInformation:
            type: object
            oneOf:
                - properties:
                    line:
                        description: LINE 連携情報
                        allOf:
                            - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation.Line'
                  required:
                    - line
                  title: LINE 連携情報
                  type: object
                - properties:
                    unni:
                        description: カンナムオンニ 連携情報
                        allOf:
                            - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation.Unni'
                  required:
                    - unni
                  title: カンナムオンニ 連携情報
                  type: object
        protos.open.VisitorConnectedInformation.Line:
            type: object
            required:
                - id
                - channelId
                - liffId
                - displayName
            properties:
                channelId:
                    description: LINE チャネルID
                    type: string
                displayName:
                    description: LINE 表示名
                    type: string
                id:
                    description: LINEユーザーID
                    type: string
                liffId:
                    description: LINE LIFF ID
                    type: string
        protos.open.VisitorConnectedInformation.Unni:
            type: object
            required:
                - id
                - nickname
            properties:
                id:
                    description: カンナムオンニ ユーザーID
                    type: string
                nickname:
                    description: カンナムオンニ ニックネーム
                    type: string
        protos.open.VisitorInformation:
            type: object
            required:
                - id
                - chartNumber
                - name
            properties:
                name:
                    description: 患者名
                    type: string
                additionalPhoneNumber:
                    description: 追加電話番号
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                chartNumber:
                    description: カルテ番号
                    type: string
                dateOfBirth:
                    description: 生年月日
                    type: string
                gender:
                    description: |
                        性別

                        | 値 | 意味 |
                        | --- | --- |
                        | `GENDER_UNSPECIFIED` | 未指定 |
                        | `MALE` | 男性 |
                        | `FEMALE` | 女性 |
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                id:
                    description: 患者ID
                    type: string
                    format: object-id
                nationality:
                    description: 国籍
                    type: string
                passportGivenNames:
                    description: パスポート名
                    type: string
                passportSurname:
                    description: パスポート姓
                    type: string
                phoneNumber:
                    description: 電話番号
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
        protos.procedure.Category:
            type: object
            required:
                - id
                - name
                - order
                - deleted
                - opened
            properties:
                name:
                    description: 商品カテゴリ名
                    type: string
                deleted:
                    description: 削除有無
                    type: boolean
                id:
                    description: 商品カテゴリID
                    type: string
                    format: object-id
                opened:
                    description: 公開有無
                    type: boolean
                order:
                    description: 並べ替え順序
                    type: integer
                    format: int32
                translsMap:
                    description: 多言語翻訳マップ
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.procedure.CommonProcedureConfiguration:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 共通施術名
                    type: string
                id:
                    description: 共通施術ID
                    type: string
                    format: object-id
        protos.procedure.GetCategoriesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        公開されている商品カテゴリリスト

                        Open APIでは、リクエスト値に関係なく、公開されているカテゴリのみが含まれます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.Category'
        protos.procedure.GetOpenProductsQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        商品詳細情報リスト

                        リクエストされたAPI Keyに該当するチャネルに公開可能な商品のみを含みます。レスポンス商品の`options`には、該当チャネルに公開可能な削除されていない商品メニューのみが含まれます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.OpenProductDetailContract'
        protos.procedure.GetProductOptionsQuery:
            type: object
            required:
                - optionIds
                - includePromotions
            properties:
                includePromotions:
                    description: |-
                        プロモーション含む有無

                        Deprecated.
                    deprecated: true
                    type: boolean
                optionIds:
                    description: |-
                        照会する商品メニューIDのリスト

                        最低1つ以上指定する必要があります。
                    type: array
                    minItems: 1
                    items:
                        type: string
                        format: object-id
                refOptionIds:
                    description: |-
                        参照メニューIDリスト

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        type: string
        protos.procedure.GetProductOptionsQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        商品メニュー詳細情報リスト

                        リクエストした `optionIds` のうち、削除されておらず使用中の商品に属する削除されていない商品メニューのみを含みます。削除された商品、使用停止された商品、削除された商品メニュー、存在しない `optionIds` はレスポンスに含まれません。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductOptionDetail'
        protos.procedure.GetTargetCountriesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        ターゲット国リスト

                        `order` の昇順で並べ替えられます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.TargetCountryContract'
        protos.procedure.MedicineAndMachine:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 機器・薬名
                    type: string
                id:
                    description: 機器・薬ID
                    type: string
                    format: object-id
        protos.procedure.OpenProductDetailContract:
            type: object
            required:
                - id
                - title
                - description
                - deleted
                - closed
            properties:
                title:
                    description: 商品名
                    type: string
                description:
                    description: 商品説明
                    type: string
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        | 値 | rawValue | 意味 |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | 不明 |
                        | `NEW` | 1 | 新規 |
                        | `POPULAR` | 2 | 人気 |
                        | `RECOMMENDED` | 3 | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                categories:
                    description: カテゴリリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductCategory'
                caution:
                    description: 注意事項
                    type: string
                cautions:
                    description: |-
                        注意事項リスト

                        Deprecated. 代替フィールド: `caution`。
                    deprecated: true
                    type: array
                    items:
                        type: string
                closed:
                    description: |-
                        商品使用停止状態

                        `false`は使用中、`true`は使用しないを意味します。
                    type: boolean
                contentImageUrl:
                    description: コンテンツ画像URL
                    type: string
                coverImageUrl:
                    description: カバー画像URL
                    type: string
                deleted:
                    description: 削除状態
                    type: boolean
                displayPeriod:
                    description: |-
                        商品公開期間

                        未設定の場合、常時公開されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                endDateTimeUtc:
                    description: |-
                        商品販売終了日時

                        Deprecated. `offeringPeriod`または`displayPeriod`を使用します。下位互換性のために維持されており、`offeringPeriod`の終了日時に該当する値が渡されます。UTC [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)値です。
                    deprecated: true
                    type: string
                id:
                    description: 商品ID
                    type: string
                    format: object-id
                isEvent:
                    description: イベント商品かどうか
                    type: boolean
                medicineAndMachines:
                    description: 機器および薬リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                offeringPeriod:
                    description: |-
                        商品予約／会計可能期間

                        未設定の場合、常時提供されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                options:
                    description: 商品メニューリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.OpenProductOptionDetail'
                order:
                    description: 並び順
                    type: integer
                    format: int32
                startDateTimeUtc:
                    description: |-
                        商品販売開始日時

                        Deprecated. `offeringPeriod`または`displayPeriod`を使用します。下位互換性のために維持されており、`offeringPeriod`の開始日時に該当する値が渡されます。UTC [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)値です。
                    deprecated: true
                    type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`、`description`、`caution`、`coverImageUrl`、`contentImageUrl`。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.procedure.OpenProductGroupOptionComposition:
            type: object
            required:
                - refSingleOptionId
                - price
                - title
                - unit
                - count
                - procedure
            properties:
                title:
                    description: 構成名
                    type: string
                count:
                    description: 施術回数
                    type: integer
                    format: int32
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: 機器・薬リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: 価格情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenProductOptionPrice'
                procedure:
                    description: 施術情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                refSingleOptionId:
                    description: 参照単一メニューID
                    deprecated: true
                    type: string
                unit:
                    description: 単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.procedure.OpenProductOptionDetail:
            oneOf:
                - $ref: '#/components/schemas/protos.procedure.OpenProductOptionDetail.SINGLE'
                - $ref: '#/components/schemas/protos.procedure.OpenProductOptionDetail.GROUP'
                - $ref: '#/components/schemas/protos.procedure.OpenProductOptionDetail.CONSULTATION'
            discriminator:
                mapping:
                    CONSULTATION: '#/components/schemas/protos.procedure.OpenProductOptionDetail.CONSULTATION'
                    GROUP: '#/components/schemas/protos.procedure.OpenProductOptionDetail.GROUP'
                    SINGLE: '#/components/schemas/protos.procedure.OpenProductOptionDetail.SINGLE'
                propertyName: type
        protos.procedure.OpenProductOptionDetail.CONSULTATION:
            title: CONSULTATION
            description: '`type` = `CONSULTATION`'
            type: object
            required:
                - id
                - title
                - description
                - type
                - deleted
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: CONSULTATION
                    enum:
                        - CONSULTATION
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        | 値 | rawValue | 意味 |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | 不明 |
                        | `NEW` | 1 | 新規 |
                        | `POPULAR` | 2 | 人気 |
                        | `RECOMMENDED` | 3 | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                deleted:
                    description: 削除状態
                    type: boolean
                displayChannels:
                    description: |
                        公開チャネルリスト

                        | 値 | 意味 |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | 不明 |
                        | `HOMEPAGE` | ホームページ |
                        | `GANGNAMUNNI` | カンナムオンニ |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: クイックメニュー状態
                    type: boolean
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                promotionConfigurations:
                    description: |-
                        プロモーション設定リスト

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - price
                    properties:
                        price: {}
                - not:
                    type: object
                    required:
                        - unit
                    properties:
                        unit: {}
                - not:
                    type: object
                    required:
                        - count
                    properties:
                        count: {}
                - not:
                    type: object
                    required:
                        - procedure
                    properties:
                        procedure: {}
                - not:
                    type: object
                    required:
                        - medicineAndMachines
                    properties:
                        medicineAndMachines: {}
                - not:
                    type: object
                    required:
                        - compositions
                    properties:
                        compositions: {}
                - not:
                    type: object
                    required:
                        - medicalService
                    properties:
                        medicalService: {}
        protos.procedure.OpenProductOptionDetail.GROUP:
            title: GROUP
            description: '`type` = `GROUP`'
            type: object
            required:
                - id
                - title
                - description
                - type
                - deleted
                - price
                - compositions
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        | 値 | rawValue | 意味 |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | 不明 |
                        | `NEW` | 1 | 新規 |
                        | `POPULAR` | 2 | 人気 |
                        | `RECOMMENDED` | 3 | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                compositions:
                    description: |-
                        グループメニューの施術構成リスト

                        `type`が`GROUP`のメニューで使用されます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.OpenProductGroupOptionComposition'
                deleted:
                    description: 削除状態
                    type: boolean
                displayChannels:
                    description: |
                        公開チャネルリスト

                        | 値 | 意味 |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | 不明 |
                        | `HOMEPAGE` | ホームページ |
                        | `GANGNAMUNNI` | カンナムオンニ |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: クイックメニュー状態
                    type: boolean
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                price:
                    description: 価格情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenProductOptionPrice'
                promotionConfigurations:
                    description: |-
                        プロモーション設定リスト

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - unit
                    properties:
                        unit: {}
                - not:
                    type: object
                    required:
                        - count
                    properties:
                        count: {}
                - not:
                    type: object
                    required:
                        - procedure
                    properties:
                        procedure: {}
                - not:
                    type: object
                    required:
                        - medicineAndMachines
                    properties:
                        medicineAndMachines: {}
                - not:
                    type: object
                    required:
                        - medicalService
                    properties:
                        medicalService: {}
        protos.procedure.OpenProductOptionDetail.SINGLE:
            title: SINGLE
            description: '`type` = `SINGLE`'
            type: object
            required:
                - id
                - title
                - description
                - type
                - deleted
                - price
                - medicalService
                - count
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        | 値 | rawValue | 意味 |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | 不明 |
                        | `NEW` | 1 | 新規 |
                        | `POPULAR` | 2 | 人気 |
                        | `RECOMMENDED` | 3 | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                count:
                    description: 施術回数
                    type: integer
                    format: int32
                deleted:
                    description: 削除状態
                    type: boolean
                displayChannels:
                    description: |
                        公開チャネルリスト

                        | 値 | 意味 |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | 不明 |
                        | `HOMEPAGE` | ホームページ |
                        | `GANGNAMUNNI` | カンナムオンニ |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: クイックメニュー状態
                    type: boolean
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: 機器および薬のリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: 価格情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenProductOptionPrice'
                procedure:
                    description: 施術情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                promotionConfigurations:
                    description: |-
                        プロモーション設定リスト

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: 単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
            allOf:
                - not:
                    type: object
                    required:
                        - compositions
                    properties:
                        compositions: {}
        protos.procedure.OpenProductOptionPrice:
            type: object
            required:
                - amount
            properties:
                additional:
                    description: 患者タイプ別特別価格リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductOptionSpecialPrice'
                amount:
                    description: 定価
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxation:
                    description: |
                        課税タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `Taxation_UNKNOWN` | 不明 |
                        | `TAXABLE` | 課税 |
                        | `TAX_FREE` | 免税 |
                        | `MIXED` | 混合課税 |
                    type: string
                    enum:
                        - Taxation_UNKNOWN
                        - TAXABLE
                        - TAX_FREE
                        - MIXED
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
        protos.procedure.OpenSearchProductOptionSummariesContract:
            oneOf:
                - $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.SINGLE'
                - $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.GROUP'
                - $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.CONSULTATION'
            discriminator:
                mapping:
                    CONSULTATION: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.CONSULTATION'
                    GROUP: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.GROUP'
                    SINGLE: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.SINGLE'
                propertyName: type
        protos.procedure.OpenSearchProductOptionSummariesContract.CONSULTATION:
            title: CONSULTATION
            description: '`type` = `CONSULTATION`'
            type: object
            required:
                - id
                - title
                - type
                - productId
                - productTitle
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: CONSULTATION
                    enum:
                        - CONSULTATION
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                productConfiguration:
                    description: 商品構成情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.ProductConfiguration'
                productId:
                    description: |-
                        商品ID

                        Deprecated. 代替フィールド: `productConfiguration.id`.
                    deprecated: true
                    type: string
                    format: object-id
                productIsEvent:
                    description: |-
                        イベント商品かどうか

                        Deprecated. 代替フィールド: `productConfiguration.isEvent`.
                    deprecated: true
                    type: boolean
                productTitle:
                    description: |-
                        商品名

                        Deprecated. 代替フィールド: `productConfiguration.title`.
                    deprecated: true
                    type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`, `productTitle`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - price
                    properties:
                        price: {}
                - not:
                    type: object
                    required:
                        - unit
                    properties:
                        unit: {}
                - not:
                    type: object
                    required:
                        - count
                    properties:
                        count: {}
                - not:
                    type: object
                    required:
                        - procedure
                    properties:
                        procedure: {}
                - not:
                    type: object
                    required:
                        - medicineAndMachines
                    properties:
                        medicineAndMachines: {}
                - not:
                    type: object
                    required:
                        - compositions
                    properties:
                        compositions: {}
                - not:
                    type: object
                    required:
                        - medicalService
                    properties:
                        medicalService: {}
        protos.procedure.OpenSearchProductOptionSummariesContract.GROUP:
            title: GROUP
            description: '`type` = `GROUP`'
            type: object
            required:
                - id
                - title
                - type
                - productId
                - productTitle
                - price
                - compositions
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                compositions:
                    description: |-
                        グループメニューの施術構成リスト

                        `type`が`GROUP`のメニューで使用されます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductGroupOptionComposition'
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                price:
                    description: 価格情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                productConfiguration:
                    description: 商品構成情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.ProductConfiguration'
                productId:
                    description: |-
                        商品ID

                        Deprecated. 代替フィールド: `productConfiguration.id`.
                    deprecated: true
                    type: string
                    format: object-id
                productIsEvent:
                    description: |-
                        イベント商品かどうか

                        Deprecated. 代替フィールド: `productConfiguration.isEvent`.
                    deprecated: true
                    type: boolean
                productTitle:
                    description: |-
                        商品名

                        Deprecated. 代替フィールド: `productConfiguration.title`.
                    deprecated: true
                    type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`, `productTitle`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - unit
                    properties:
                        unit: {}
                - not:
                    type: object
                    required:
                        - count
                    properties:
                        count: {}
                - not:
                    type: object
                    required:
                        - procedure
                    properties:
                        procedure: {}
                - not:
                    type: object
                    required:
                        - medicineAndMachines
                    properties:
                        medicineAndMachines: {}
                - not:
                    type: object
                    required:
                        - medicalService
                    properties:
                        medicalService: {}
        protos.procedure.OpenSearchProductOptionSummariesContract.ProductConfiguration:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: 商品名
                    type: string
                displayPeriod:
                    description: |-
                        商品の公開期間

                        未設定の場合、常時公開されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                id:
                    description: 商品ID
                    type: string
                    format: object-id
                isEvent:
                    description: イベント商品かどうか
                    type: boolean
                offeringPeriod:
                    description: |-
                        商品の予約・会計可能期間

                        未設定の場合、常時提供されます。
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.procedure.OpenSearchProductOptionSummariesContract.SINGLE:
            title: SINGLE
            description: '`type` = `SINGLE`'
            type: object
            required:
                - id
                - title
                - type
                - productId
                - productTitle
                - price
                - medicalService
                - count
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                count:
                    description: 施術回数
                    type: integer
                    format: int32
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: 機器および薬リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: 価格情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                procedure:
                    description: 施術情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                productConfiguration:
                    description: 商品構成情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.ProductConfiguration'
                productId:
                    description: |-
                        商品ID

                        Deprecated. 代替フィールド: `productConfiguration.id`.
                    deprecated: true
                    type: string
                    format: object-id
                productIsEvent:
                    description: |-
                        イベント商品かどうか

                        Deprecated. 代替フィールド: `productConfiguration.isEvent`.
                    deprecated: true
                    type: boolean
                productTitle:
                    description: |-
                        商品名

                        Deprecated. 代替フィールド: `productConfiguration.title`.
                    deprecated: true
                    type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`, `productTitle`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: 単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
            allOf:
                - not:
                    type: object
                    required:
                        - compositions
                    properties:
                        compositions: {}
        protos.procedure.OpenSearchProductOptionSummariesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        検索された商品メニューのサマリーリスト

                        リクエストされたAPI Keyに該当するチャネルに公開可能な商品メニューのみを含みます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract'
        protos.procedure.Price:
            type: object
            required:
                - amount
            properties:
                amount:
                    description: 金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                suppliedAmount:
                    description: 課税供給価額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxation:
                    description: |
                        課税タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `Taxation_UNKNOWN` | 不明 |
                        | `TAXABLE` | 課税 |
                        | `TAX_FREE` | 免税 |
                        | `MIXED` | 混合課税 |
                    type: string
                    enum:
                        - Taxation_UNKNOWN
                        - TAXABLE
                        - TAX_FREE
                        - MIXED
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
        protos.procedure.PriceAmount:
            type: object
            required:
                - value
                - currency
            properties:
                value:
                    description: 金額
                    type: integer
                    format: int32
                currency:
                    description: |-
                        通貨コード

                        [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)標準の通貨コードです。例: `KRW`
                    type: string
        protos.procedure.Procedure:
            type: object
            required:
                - id
                - name
                - createDate
            properties:
                name:
                    description: 施術名
                    type: string
                commonProcedureConfiguration:
                    description: 共通施術設定
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.CommonProcedureConfiguration'
                createDate:
                    description: 作成日時
                    type: string
                deleted:
                    description: 削除状態
                    type: boolean
                id:
                    description: 施術ID
                    type: string
                    format: object-id
                searchPhoneticName:
                    description: 検索用読み仮名
                    type: string
        protos.procedure.ProductCategory:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: カテゴリ名
                    type: string
                id:
                    description: カテゴリID
                    type: string
                    format: object-id
                translsMap:
                    description: 多言語翻訳マップ
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.procedure.ProductGroupOptionComposition:
            type: object
            required:
                - price
                - title
                - procedure
            properties:
                title:
                    description: |-
                        構成名

                        Deprecated. 2024-10-11より使用されなくなり、常に空文字列が返されます。
                    type: string
                count:
                    description: 施術回数
                    type: integer
                    format: int32
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: 機器・薬リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: 価格情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                procedure:
                    description: 施術情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                refSingleOptionId:
                    description: |-
                        参照単一メニューID

                        Deprecated. 2024-10-11より使用されなくなり、常に空の値が返されます。
                    type: string
                unit:
                    description: 単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.procedure.ProductOptionDetail:
            oneOf:
                - $ref: '#/components/schemas/protos.procedure.ProductOptionDetail.SINGLE'
                - $ref: '#/components/schemas/protos.procedure.ProductOptionDetail.GROUP'
                - $ref: '#/components/schemas/protos.procedure.ProductOptionDetail.CONSULTATION'
            discriminator:
                mapping:
                    CONSULTATION: '#/components/schemas/protos.procedure.ProductOptionDetail.CONSULTATION'
                    GROUP: '#/components/schemas/protos.procedure.ProductOptionDetail.GROUP'
                    SINGLE: '#/components/schemas/protos.procedure.ProductOptionDetail.SINGLE'
                propertyName: type
        protos.procedure.ProductOptionDetail.CONSULTATION:
            title: CONSULTATION
            description: '`type` = `CONSULTATION`'
            type: object
            required:
                - id
                - title
                - description
                - type
                - deleted
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: CONSULTATION
                    enum:
                        - CONSULTATION
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        | 値 | rawValue | 意味 |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | 不明 |
                        | `NEW` | 1 | 新規 |
                        | `POPULAR` | 2 | 人気 |
                        | `RECOMMENDED` | 3 | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                deleted:
                    description: 削除状態
                    type: boolean
                displayChannels:
                    description: |
                        表示チャネルリスト

                        | 値 | 意味 |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | 不明 |
                        | `HOMEPAGE` | ホームページ |
                        | `GANGNAMUNNI` | カンナムオンニ |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: クイックメニュー状態
                    type: boolean
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                promotionConfigurations:
                    description: |-
                        プロモーション設定リスト

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`、`description`。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - price
                    properties:
                        price: {}
                - not:
                    type: object
                    required:
                        - unit
                    properties:
                        unit: {}
                - not:
                    type: object
                    required:
                        - count
                    properties:
                        count: {}
                - not:
                    type: object
                    required:
                        - procedure
                    properties:
                        procedure: {}
                - not:
                    type: object
                    required:
                        - medicineAndMachines
                    properties:
                        medicineAndMachines: {}
                - not:
                    type: object
                    required:
                        - compositions
                    properties:
                        compositions: {}
                - not:
                    type: object
                    required:
                        - medicalService
                    properties:
                        medicalService: {}
        protos.procedure.ProductOptionDetail.GROUP:
            title: GROUP
            description: '`type` = `GROUP`'
            type: object
            required:
                - id
                - title
                - description
                - type
                - deleted
                - price
                - compositions
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        | 値 | rawValue | 意味 |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | 不明 |
                        | `NEW` | 1 | 新規 |
                        | `POPULAR` | 2 | 人気 |
                        | `RECOMMENDED` | 3 | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                compositions:
                    description: |-
                        グループメニューの施術構成リスト

                        `type`が`GROUP`のメニューで使用されます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductGroupOptionComposition'
                deleted:
                    description: 削除状態
                    type: boolean
                displayChannels:
                    description: |
                        表示チャネルリスト

                        | 値 | 意味 |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | 不明 |
                        | `HOMEPAGE` | ホームページ |
                        | `GANGNAMUNNI` | カンナムオンニ |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: クイックメニュー状態
                    type: boolean
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                price:
                    description: 価格情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                promotionConfigurations:
                    description: |-
                        プロモーション設定リスト

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`、`description`。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - unit
                    properties:
                        unit: {}
                - not:
                    type: object
                    required:
                        - count
                    properties:
                        count: {}
                - not:
                    type: object
                    required:
                        - procedure
                    properties:
                        procedure: {}
                - not:
                    type: object
                    required:
                        - medicineAndMachines
                    properties:
                        medicineAndMachines: {}
                - not:
                    type: object
                    required:
                        - medicalService
                    properties:
                        medicalService: {}
        protos.procedure.ProductOptionDetail.SINGLE:
            title: SINGLE
            description: '`type` = `SINGLE`'
            type: object
            required:
                - id
                - title
                - description
                - type
                - deleted
                - price
                - medicalService
                - count
            properties:
                title:
                    description: 商品メニュー名
                    type: string
                description:
                    description: 商品メニュー説明
                    type: string
                type:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                badges:
                    description: |
                        バッジリスト

                        整数値で渡されます。

                        | 値 | rawValue | 意味 |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | 不明 |
                        | `NEW` | 1 | 新規 |
                        | `POPULAR` | 2 | 人気 |
                        | `RECOMMENDED` | 3 | おすすめ |
                    type: array
                    items:
                        type: integer
                        format: int32
                count:
                    description: 施術回数
                    type: integer
                    format: int32
                deleted:
                    description: 削除状態
                    type: boolean
                displayChannels:
                    description: |
                        表示チャネルリスト

                        | 値 | 意味 |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | 不明 |
                        | `HOMEPAGE` | ホームページ |
                        | `GANGNAMUNNI` | カンナムオンニ |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: クイックメニュー状態
                    type: boolean
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: |-
                        機器および薬リスト

                        Deprecated. 診療項目の機器および薬リストを使用します。
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: 価格情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                procedure:
                    description: |-
                        施術情報

                        Deprecated. 診療項目の施術情報を使用します。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                promotionConfigurations:
                    description: |-
                        プロモーション設定リスト

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`、`description`。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: |-
                        単位

                        Deprecated. 診療項目の単位を使用します。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
            allOf:
                - not:
                    type: object
                    required:
                        - compositions
                    properties:
                        compositions: {}
        protos.procedure.ProductOptionPrice:
            type: object
            required:
                - amount
            properties:
                additional:
                    description: 患者別価格タイプ別価格リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductOptionSpecialPrice'
                amount:
                    description: 定価
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxation:
                    description: |
                        課税タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `Taxation_UNKNOWN` | 不明 |
                        | `TAXABLE` | 課税 |
                        | `TAX_FREE` | 免税 |
                        | `MIXED` | 混合課税 |
                    type: string
                    enum:
                        - Taxation_UNKNOWN
                        - TAXABLE
                        - TAX_FREE
                        - MIXED
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
        protos.procedure.ProductOptionPriceVisitorType:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 患者別価格タイプ名
                    type: string
                id:
                    description: 患者別価格タイプID
                    type: string
        protos.procedure.ProductOptionSpecialPrice:
            type: object
            required:
                - amount
                - visitorType
            properties:
                amount:
                    description: 価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxation:
                    description: |
                        課税タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `Taxation_UNKNOWN` | 不明 |
                        | `TAXABLE` | 課税 |
                        | `TAX_FREE` | 免税 |
                        | `MIXED` | 混合課税 |
                    type: string
                    enum:
                        - Taxation_UNKNOWN
                        - TAXABLE
                        - TAX_FREE
                        - MIXED
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                visitorType:
                    description: 患者別価格タイプ情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPriceVisitorType'
        protos.procedure.PromotionConfiguration:
            type: object
            required:
                - id
                - title
                - startDate
                - endDate
                - optionId
                - discountedPrice
            properties:
                title:
                    description: プロモーションタイトル
                    type: string
                discountedPrice:
                    description: 割引適用価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                endDate:
                    description: プロモーション終了日
                    type: string
                id:
                    description: プロモーションID
                    type: string
                optionId:
                    description: プロモーションメニューID
                    type: string
                startDate:
                    description: プロモーション開始日
                    type: string
        protos.procedure.TargetCountryContract:
            type: object
            required:
                - code
                - order
            properties:
                code:
                    description: |-
                        ターゲット国コード

                        [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) 国コードです。`ETC` はその他の国を意味します。
                    type: string
                order:
                    description: 並べ替え順序
                    type: integer
                    format: int32
                suggestingVisitorTypeId:
                    description: |-
                        推奨患者タイプID

                        値がない場合、デフォルトの診療報酬タイプである `通常価格` を使用します。
                    type: string
        protos.procedure.Unit:
            type: object
            required:
                - type
                - value
            properties:
                type:
                    description: |
                        単位タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `UnitType_UNKNOWN` | 不明 |
                        | `UNIT` | 個 |
                        | `CC` | cc |
                        | `VIAL` | バイアル |
                        | `PEN` | ペン |
                        | `STRING` | 糸 |
                        | `SHOT` | ショット |
                        | `PAD` | パッド |
                        | `MINUTE` | 分 |
                        | `KJ` | kJ |
                        | `QUANTITY` | 数量 |
                        | `DOT` | ドット |
                        | `J` | J |
                        | `MG` | mg |
                        | `G` | g |
                        | `PULSE` | パルス |
                        | `BOTTLE` | 本 |
                        | `SYRINGE` | シリンジ |
                        | `PASS` | パス |
                        | `IU` | IU |
                        | `KHZ` | kHz |
                        | `MHZ` | MHz |
                    type: string
                    enum:
                        - UnitType_UNKNOWN
                        - UNIT
                        - CC
                        - VIAL
                        - PEN
                        - STRING
                        - SHOT
                        - PAD
                        - MINUTE
                        - KJ
                        - QUANTITY
                        - DOT
                        - J
                        - MG
                        - G
                        - PULSE
                        - BOTTLE
                        - SYRINGE
                        - PASS
                        - IU
                        - KHZ
                        - MHZ
                value:
                    description: 単位値
                    type: number
                    format: double
        protos.procedure.medical_service.MedicalService:
            type: object
            required:
                - id
                - title
                - status
                - deleted
                - configuration
                - draftedDateTimeUtc
                - updatedDateTimeUtc
            properties:
                title:
                    description: 診療項目名
                    type: string
                description:
                    description: 診療項目説明
                    type: string
                caution:
                    description: 注意事項
                    type: string
                configuration:
                    description: 診療項目設定
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceConfiguration'
                contributionConstant:
                    description: 貢献定数
                    type: integer
                    format: int32
                deleted:
                    description: 削除有無
                    type: boolean
                draftedDateTimeUtc:
                    description: 一時保存日時
                    type: string
                durationTime:
                    description: 所要時間
                    type: number
                    format: double
                id:
                    description: 診療項目ID
                    type: string
                    format: object-id
                priceAmount:
                    description: 価格金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                recommendedInterval:
                    description: 推奨間隔
                    type: integer
                    format: int32
                status:
                    description: |
                        診療項目ステータス

                        | 値 | 意味 |
                        | --- | --- |
                        | `MedicalServiceStatus_UNKNOWN` | 不明 |
                        | `DRAFT` | 下書き |
                        | `PUBLISHED` | 公開済み |
                    type: string
                    enum:
                        - MedicalServiceStatus_UNKNOWN
                        - DRAFT
                        - PUBLISHED
                translsMap:
                    description: 診療項目多言語翻訳マップ
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                updatedDateTimeUtc:
                    description: 修正日時
                    type: string
        protos.procedure.medical_service.MedicalServiceConfiguration:
            type: object
            required:
                - code
                - procedure
                - healthcareReimbursement
                - taxation
            properties:
                code:
                    description: 診療項目コード
                    type: string
                healthcareReimbursement:
                    description: |
                        保険診療区分

                        | 値 | 意味 |
                        | --- | --- |
                        | `HealthcareReimbursement_UNKNOWN` | 不明 |
                        | `REIMBURSABLE` | 保険診療 |
                        | `NON_REIMBURSABLE` | 自由診療 |
                    type: string
                    enum:
                        - HealthcareReimbursement_UNKNOWN
                        - REIMBURSABLE
                        - NON_REIMBURSABLE
                machines:
                    description: 機器リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceMachine'
                medicines:
                    description: 医薬品リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceMedicine'
                procedure:
                    description: 診療行為
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceProcedure'
                taxation:
                    description: |
                        課税タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `Taxation_UNKNOWN` | 不明 |
                        | `TAXABLE` | 課税 |
                        | `TAX_FREE` | 免税 |
                        | `MIXED` | 混合課税 |
                    type: string
                    enum:
                        - Taxation_UNKNOWN
                        - TAXABLE
                        - TAX_FREE
                        - MIXED
                unit:
                    description: 単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.procedure.medical_service.MedicalServiceMachine:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 機器名
                    type: string
                id:
                    description: 機器ID
                    type: string
                    format: object-id
                searchPhoneticName:
                    description: 検索用読み仮名
                    type: string
        protos.procedure.medical_service.MedicalServiceMedicine:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 医薬品名
                    type: string
                id:
                    description: 医薬品ID
                    type: string
                    format: object-id
                searchPhoneticName:
                    description: 検索用読み仮名
                    type: string
        protos.procedure.medical_service.MedicalServiceProcedure:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 診療行為名
                    type: string
                id:
                    description: 診療行為ID
                    type: string
                    format: object-id
                searchPhoneticName:
                    description: 検索用読み仮名
                    type: string
        protos.purchase.BusinessCashReceiptConfiguration:
            type: object
            required:
                - businessNumber
            properties:
                businessNumber:
                    description: 事業者登録番号
                    type: string
        protos.purchase.CardCompany:
            type: object
            required:
                - name
            properties:
                name:
                    description: カード会社
                    type: string
        protos.purchase.CardTransactionConfiguration:
            type: object
            required:
                - cardCompany
            properties:
                acquirerName:
                    description: カード仕入れ会社名
                    type: string
                approvalNumber:
                    description: 承認番号
                    type: string
                cardCompany:
                    description: カード会社
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CardCompany'
                cardNumber:
                    description: カード番号
                    type: string
                installmentConfiguration:
                    description: 分割設定
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.InstallmentConfiguration'
                issuerName:
                    description: カード発行会社名
                    type: string
        protos.purchase.CashReceiptConfiguration:
            oneOf:
                - $ref: '#/components/schemas/protos.purchase.CashReceiptConfiguration.PERSONAL'
                - $ref: '#/components/schemas/protos.purchase.CashReceiptConfiguration.BUSINESS'
                - $ref: '#/components/schemas/protos.purchase.CashReceiptConfiguration.VOLUNTARY'
            discriminator:
                mapping:
                    BUSINESS: '#/components/schemas/protos.purchase.CashReceiptConfiguration.BUSINESS'
                    PERSONAL: '#/components/schemas/protos.purchase.CashReceiptConfiguration.PERSONAL'
                    VOLUNTARY: '#/components/schemas/protos.purchase.CashReceiptConfiguration.VOLUNTARY'
                propertyName: type
        protos.purchase.CashReceiptConfiguration.BUSINESS:
            title: BUSINESS
            description: '`type` = `BUSINESS`'
            type: object
            required:
                - type
                - businessConfiguration
            properties:
                type:
                    description: |
                        現金領収書タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `CASH_RECEIPT_TYPE_UNKNOWN` | 不明 |
                        | `PERSONAL` | 個人所得控除 |
                        | `BUSINESS` | 事業者支出証憑 |
                        | `VOLUNTARY` | 自主発行 |
                    type: string
                    const: BUSINESS
                    enum:
                        - BUSINESS
                businessConfiguration:
                    description: 事業者現金領収書設定
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.BusinessCashReceiptConfiguration'
            allOf:
                - not:
                    type: object
                    required:
                        - personalConfiguration
                    properties:
                        personalConfiguration: {}
        protos.purchase.CashReceiptConfiguration.PERSONAL:
            title: PERSONAL
            description: '`type` = `PERSONAL`'
            type: object
            required:
                - type
                - personalConfiguration
            properties:
                type:
                    description: |
                        現金領収書タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `CASH_RECEIPT_TYPE_UNKNOWN` | 不明 |
                        | `PERSONAL` | 個人所得控除 |
                        | `BUSINESS` | 事業者支出証憑 |
                        | `VOLUNTARY` | 自主発行 |
                    type: string
                    const: PERSONAL
                    enum:
                        - PERSONAL
                personalConfiguration:
                    description: 個人現金領収書設定
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PersonalCashReceiptConfiguration'
            allOf:
                - not:
                    type: object
                    required:
                        - businessConfiguration
                    properties:
                        businessConfiguration: {}
        protos.purchase.CashReceiptConfiguration.VOLUNTARY:
            title: VOLUNTARY
            description: '`type` = `VOLUNTARY`'
            type: object
            required:
                - type
            properties:
                type:
                    description: |
                        現金領収書タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `CASH_RECEIPT_TYPE_UNKNOWN` | 不明 |
                        | `PERSONAL` | 個人所得控除 |
                        | `BUSINESS` | 事業者支出証憑 |
                        | `VOLUNTARY` | 自主発行 |
                    type: string
                    const: VOLUNTARY
                    enum:
                        - VOLUNTARY
            allOf:
                - not:
                    type: object
                    required:
                        - personalConfiguration
                    properties:
                        personalConfiguration: {}
                - not:
                    type: object
                    required:
                        - businessConfiguration
                    properties:
                        businessConfiguration: {}
        protos.purchase.CashTransactionConfiguration:
            type: object
            properties:
                cashReceiptConfiguration:
                    description: 現金領収書設定
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CashReceiptConfiguration'
                incomeTaxDeductionNumber:
                    description: 現金領収書承認番号
                    type: string
        protos.purchase.EasyPayProvider:
            type: object
            required:
                - name
            properties:
                name:
                    description: キャッシュレス決済会社
                    type: string
        protos.purchase.EasyPayTransactionConfiguration:
            type: object
            required:
                - easyPayProvider
            properties:
                approvalNumber:
                    description: 承認番号
                    type: string
                easyPayProvider:
                    description: キャッシュレス決済会社
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.EasyPayProvider'
                incomeTaxDeductionNumber:
                    description: 現金領収書承認番号
                    type: string
                installmentConfiguration:
                    description: 分割設定
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.InstallmentConfiguration'
        protos.purchase.GetPrepaidCardChargingEventsQuery:
            type: object
            required:
                - id
            properties:
                id:
                    description: プリペイドカードID
                    type: string
        protos.purchase.GetPrepaidCardChargingEventsQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        プリペイドカードイベントリスト

                        該当するプリペイドカードがない場合、リストは空です。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PrepaidCardChargingEvent'
        protos.purchase.GetPrepaidCardSummariesQuery:
            type: object
            required:
                - visitorId
            properties:
                available:
                    description: |-
                        使用可否フィルター

                        値を省略した場合、使用可否に関わらず照会します。`true`の場合、有効期限が切れておらず、現金残高またはポイント残高が残っているプリペイドカードのみ照会します。`false`の場合、有効期限が切れているか、現金残高とポイント残高がいずれも残っていないプリペイドカードのみ照会します。
                    type: boolean
                visitorId:
                    description: プリペイドカードリストを照会する患者ID
                    type: string
                    format: object-id
        protos.purchase.GetPrepaidCardSummariesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        プリペイドカードリスト

                        削除されていないプリペイドカードのみを含みます。`available`を指定した場合、該当する使用可否条件を満たすプリペイドカードのみを含みます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PrepaidCardSummaryContract'
        protos.purchase.GetPurchaseSummariesQueryByVisitorId:
            type: object
            required:
                - visitorId
            properties:
                visitorId:
                    description: 照会する患者ID
                    type: string
                    format: object-id
        protos.purchase.GetPurchaseSummariesQueryByVisitorIdResponse:
            type: object
            properties:
                data:
                    description: |-
                        会計リスト

                        削除されていない会計のみを含みます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseSummary'
        protos.purchase.GetVisitorPrepaidCardBalanceQuery:
            type: object
            required:
                - visitorId
            properties:
                visitorId:
                    description: 残高を照会する患者ID
                    type: string
                    format: object-id
        protos.purchase.GetVisitorPrepaidCardBalanceQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        使用可能なプリペイドカードの合算残高情報

                        有効期限が切れておらず、現金残高またはポイント残高が残っており、削除されていないプリペイドカードのみを合算します。照会対象のプリペイドカードがない場合、合算残高は0です。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.VisitorPrepaidCardBalanceContract'
        protos.purchase.InstallmentConfiguration:
            type: object
            required:
                - month
            properties:
                month:
                    description: 分割払い回数
                    type: integer
                    format: int32
        protos.purchase.MedicalLoanCompany:
            type: object
            required:
                - name
            properties:
                name:
                    description: 医療ローン提供会社
                    type: string
        protos.purchase.MedicalLoanTransactionConfiguration:
            type: object
            required:
                - medicalLoanCompany
            properties:
                medicalLoanCompany:
                    description: 医療ローン提供会社
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.MedicalLoanCompany'
        protos.purchase.PersonalCashReceiptConfiguration:
            type: object
            required:
                - phoneNumber
            properties:
                phoneNumber:
                    description: 個人現金領収書携帯電話番号
                    type: string
        protos.purchase.PlatformTransactionConfiguration:
            type: object
            required:
                - platform
            properties:
                platform:
                    description: プラットフォーム
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPlatform'
        protos.purchase.PrepaidCardAmount:
            type: object
            required:
                - balance
                - total
            properties:
                balance:
                    description: 残り残高
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                total:
                    description: チャージ総額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
        protos.purchase.PrepaidCardChargingEvent:
            type: object
            required:
                - type
                - createdDateTimeUtc
                - amount
                - chargingId
            properties:
                type:
                    description: |
                        プリペイドカードイベントタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `PrepaidCardChargingEventType_UNKNOWN` | 不明 |
                        | `PAYMENT` | 使用 |
                        | `PAYMENT_CANCEL` | 使用キャンセル |
                        | `REFUND` | 返金 |
                        | `CHARGE` | チャージ |
                        | `EXPIRATION` | 満了 |
                        | `SUBTRACT` | 差し引き |
                    type: string
                    enum:
                        - PrepaidCardChargingEventType_UNKNOWN
                        - PAYMENT
                        - PAYMENT_CANCEL
                        - REFUND
                        - CHARGE
                        - EXPIRATION
                        - SUBTRACT
                amount:
                    description: イベント金額情報
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardChargingEventAmount'
                chargingId:
                    description: 重複防止識別子
                    type: string
                createdDateTimeUtc:
                    description: プリペイドカードイベント生成日時
                    type: string
                    format: date-time
                memo:
                    description: メモ
                    type: string
                visitor:
                    description: イベント関連患者情報
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardVisitor'
        protos.purchase.PrepaidCardChargingEventAmount:
            type: object
            required:
                - type
                - amount
            properties:
                type:
                    description: |
                        プリペイドカード金額タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `PrepaidCardChargingEventAmountType_UNKNOWN` | 不明 |
                        | `BALANCE` | 現金残高 |
                        | `POINT` | ポイント |
                    type: string
                    enum:
                        - PrepaidCardChargingEventAmountType_UNKNOWN
                        - BALANCE
                        - POINT
                amount:
                    description: 金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
        protos.purchase.PrepaidCardSummaryContract:
            type: object
            required:
                - id
                - title
                - remainingBalance
                - expirationDateTimeUtc
                - createdDateTimeUtc
            properties:
                title:
                    description: プリペイドカード名
                    type: string
                description:
                    description: プリペイドカード説明
                    type: string
                createdDateTimeUtc:
                    description: プリペイドカード作成日時
                    type: string
                    format: date-time
                expirationDateTimeUtc:
                    description: プリペイドカード満了日時
                    type: string
                    format: date-time
                id:
                    description: プリペイドカードID
                    type: string
                ownerId:
                    description: 所有者患者ID
                    type: string
                    format: object-id
                remainingBalance:
                    description: 現金残高
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardAmount'
                remainingPoint:
                    description: ポイント残高
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardAmount'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        翻訳対象：`title`、`description`。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                updatedDateTimeUtc:
                    description: プリペイドカード更新日時
                    type: string
                    format: date-time
        protos.purchase.PrepaidCardTransactionConfiguration:
            type: object
            required:
                - prepaidCardId
                - chargingId
                - prepaidCardName
            properties:
                chargingId:
                    description: プリペイドカードチャージID
                    type: string
                prepaidCardId:
                    description: プリペイドカードID
                    type: string
                prepaidCardName:
                    description: プリペイドカード名
                    type: string
        protos.purchase.PrepaidCardVisitor:
            type: object
            required:
                - visitorId
                - name
                - chartNumber
                - owner
            properties:
                name:
                    description: 患者名
                    type: string
                chartNumber:
                    description: カルテ番号
                    type: string
                owner:
                    description: プリペイドカード所有者の有無
                    type: boolean
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
        protos.purchase.PriceAdjustment:
            type: object
            required:
                - method
                - value
            properties:
                value:
                    description: 価格調整値
                    type: number
                    format: double
                method:
                    description: |
                        価格調整方式

                        | 値 | 意味 |
                        | --- | --- |
                        | `PriceAdjustmentMethod_UNSPECIFIED` | 不明 |
                        | `FIXED_AMOUNT` | 定額 |
                        | `PERCENTAGE` | 定率 |
                    type: string
                    enum:
                        - PriceAdjustmentMethod_UNSPECIFIED
                        - FIXED_AMOUNT
                        - PERCENTAGE
        protos.purchase.PurchaseAssignee:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 担当者名
                    type: string
                id:
                    description: 担当者ID
                    type: string
        protos.purchase.PurchaseConversion:
            type: object
            required:
                - type
                - refConversionId
            properties:
                type:
                    description: |
                        会計転換タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `PURCHASE_CONVERSION_TYPE_UNSPECIFIED` | 不明 |
                        | `PREPAID_CARD_CONVERSION` | プリペイドカード切り替え |
                    type: string
                    enum:
                        - PURCHASE_CONVERSION_TYPE_UNSPECIFIED
                        - PREPAID_CARD_CONVERSION
                refConversionId:
                    description: 参照転換ID
                    type: string
        protos.purchase.PurchaseItem:
            oneOf:
                - $ref: '#/components/schemas/protos.purchase.PurchaseItem.PRODUCT_OPTION'
                - $ref: '#/components/schemas/protos.purchase.PurchaseItem.ETCETRA_PRODUCT'
                - $ref: '#/components/schemas/protos.purchase.PurchaseItem.PREPAID_CARD_PRODUCT'
            discriminator:
                mapping:
                    ETCETRA_PRODUCT: '#/components/schemas/protos.purchase.PurchaseItem.ETCETRA_PRODUCT'
                    PREPAID_CARD_PRODUCT: '#/components/schemas/protos.purchase.PurchaseItem.PREPAID_CARD_PRODUCT'
                    PRODUCT_OPTION: '#/components/schemas/protos.purchase.PurchaseItem.PRODUCT_OPTION'
                propertyName: type
        protos.purchase.PurchaseItem.ETCETRA_PRODUCT:
            title: ETCETRA_PRODUCT
            description: '`type` = `ETCETRA_PRODUCT`'
            type: object
            required:
                - id
                - price
                - type
                - etceteraConfiguration
            properties:
                type:
                    description: |
                        購入項目タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `PurchaseItemType_UNSPECIFIED` | 不明 |
                        | `PRODUCT_OPTION` | 商品メニュー |
                        | `ETCETRA_PRODUCT` | その他商品 |
                        | `PREPAID_CARD_PRODUCT` | プリペイドカード商品 |
                    type: string
                    const: ETCETRA_PRODUCT
                    enum:
                        - ETCETRA_PRODUCT
                adjustPriceV2:
                    description: 調整後の最終価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                adjustedPrice:
                    description: |-
                        調整金額

                        Deprecated. `adjustPriceV2` を使用してください。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                basePrice:
                    description: 価格調整基準価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                etceteraConfiguration:
                    description: |-
                        その他商品設定

                        条件: `type` = `ETCETRA_PRODUCT`
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemEtceteraConfiguration'
                id:
                    description: 購入項目ID
                    type: string
                migratedDateTimeUtc:
                    description: 移行日時
                    type: string
                price:
                    description: |-
                        金額

                        Deprecated. `priceV2` を使用してください。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                priceAdjustments:
                    description: 購入項目単価調整リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItemPriceAdjustment'
                priceV2:
                    description: 最終価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
            allOf:
                - not:
                    type: object
                    required:
                        - optionConfiguration
                    properties:
                        optionConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
        protos.purchase.PurchaseItem.PREPAID_CARD_PRODUCT:
            title: PREPAID_CARD_PRODUCT
            description: '`type` = `PREPAID_CARD_PRODUCT`'
            type: object
            required:
                - id
                - price
                - type
                - prepaidCardConfiguration
            properties:
                type:
                    description: |
                        購入項目タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `PurchaseItemType_UNSPECIFIED` | 不明 |
                        | `PRODUCT_OPTION` | 商品メニュー |
                        | `ETCETRA_PRODUCT` | その他商品 |
                        | `PREPAID_CARD_PRODUCT` | プリペイドカード商品 |
                    type: string
                    const: PREPAID_CARD_PRODUCT
                    enum:
                        - PREPAID_CARD_PRODUCT
                adjustPriceV2:
                    description: 調整後の最終価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                adjustedPrice:
                    description: |-
                        調整金額

                        Deprecated. `adjustPriceV2` を使用してください。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                basePrice:
                    description: 価格調整基準価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                id:
                    description: 購入項目ID
                    type: string
                migratedDateTimeUtc:
                    description: 移行日時
                    type: string
                prepaidCardConfiguration:
                    description: |-
                        プリペイドカード商品設定

                        条件: `type` = `PREPAID_CARD_PRODUCT`
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemPrepaidCardConfiguration'
                price:
                    description: |-
                        金額

                        Deprecated. `priceV2` を使用してください。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                priceAdjustments:
                    description: 購入項目単価調整リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItemPriceAdjustment'
                priceV2:
                    description: 最終価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
            allOf:
                - not:
                    type: object
                    required:
                        - optionConfiguration
                    properties:
                        optionConfiguration: {}
                - not:
                    type: object
                    required:
                        - etceteraConfiguration
                    properties:
                        etceteraConfiguration: {}
        protos.purchase.PurchaseItem.PRODUCT_OPTION:
            title: PRODUCT_OPTION
            description: '`type` = `PRODUCT_OPTION`'
            type: object
            required:
                - id
                - price
                - type
                - optionConfiguration
            properties:
                type:
                    description: |
                        購入項目タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `PurchaseItemType_UNSPECIFIED` | 不明 |
                        | `PRODUCT_OPTION` | 商品メニュー |
                        | `ETCETRA_PRODUCT` | その他商品 |
                        | `PREPAID_CARD_PRODUCT` | プリペイドカード商品 |
                    type: string
                    const: PRODUCT_OPTION
                    enum:
                        - PRODUCT_OPTION
                adjustPriceV2:
                    description: 調整後の最終価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                adjustedPrice:
                    description: |-
                        調整金額

                        Deprecated. `adjustPriceV2` を使用してください。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                basePrice:
                    description: 価格調整基準価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                id:
                    description: 購入項目ID
                    type: string
                migratedDateTimeUtc:
                    description: 移行日時
                    type: string
                optionConfiguration:
                    description: |-
                        商品メニュー設定

                        条件: `type` = `PRODUCT_OPTION`
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemOptionConfiguration'
                price:
                    description: |-
                        金額

                        Deprecated. `priceV2` を使用してください。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                priceAdjustments:
                    description: 購入項目単価調整リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItemPriceAdjustment'
                priceV2:
                    description: 最終価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
            allOf:
                - not:
                    type: object
                    required:
                        - etceteraConfiguration
                    properties:
                        etceteraConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
        protos.purchase.PurchaseItemEtceteraConfiguration:
            type: object
            required:
                - id
                - title
                - price
            properties:
                title:
                    description: その他商品タイトル
                    type: string
                id:
                    description: その他商品ID
                    type: string
                price:
                    description: その他商品価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.purchase.PurchaseItemOptionComposition:
            type: object
            required:
                - procedure
                - count
                - price
            properties:
                count:
                    description: 構成数量
                    type: integer
                    format: int32
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: 構成別機器・薬リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: 構成価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                procedure:
                    description: 構成施術情報
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemProcedure'
                unit:
                    description: 構成単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.purchase.PurchaseItemOptionConfiguration:
            oneOf:
                - $ref: '#/components/schemas/protos.purchase.PurchaseItemOptionConfiguration.SINGLE'
                - $ref: '#/components/schemas/protos.purchase.PurchaseItemOptionConfiguration.GROUP'
            discriminator:
                mapping:
                    GROUP: '#/components/schemas/protos.purchase.PurchaseItemOptionConfiguration.GROUP'
                    SINGLE: '#/components/schemas/protos.purchase.PurchaseItemOptionConfiguration.SINGLE'
                propertyName: optionType
        protos.purchase.PurchaseItemOptionConfiguration.GROUP:
            title: GROUP
            description: '`optionType` = `GROUP`'
            type: object
            required:
                - id
                - title
                - productTitle
                - optionType
                - price
                - compositions
            properties:
                title:
                    description: 商品メニュータイトル
                    type: string
                compositions:
                    description: |-
                        商品メニュー構成リスト

                        `optionType` が `GROUP` の場合に存在します。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItemOptionComposition'
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                optionType:
                    description: 商品メニュータイプ
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                price:
                    description: 初回価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                productTitle:
                    description: 商品タイトル
                    type: string
                promotionConfiguration:
                    description: プロモーション設定
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemOptionPromotionConfiguration'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`, `productTitle`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - medicineAndMachines
                    properties:
                        medicineAndMachines: {}
                - not:
                    type: object
                    required:
                        - procedure
                    properties:
                        procedure: {}
                - not:
                    type: object
                    required:
                        - count
                    properties:
                        count: {}
                - not:
                    type: object
                    required:
                        - unit
                    properties:
                        unit: {}
        protos.purchase.PurchaseItemOptionConfiguration.SINGLE:
            title: SINGLE
            description: '`optionType` = `SINGLE`'
            type: object
            required:
                - id
                - title
                - productTitle
                - optionType
                - price
                - medicineAndMachines
                - procedure
                - count
                - unit
            properties:
                title:
                    description: 商品メニュータイトル
                    type: string
                count:
                    description: |-
                        数量

                        `optionType` が `SINGLE` の場合に存在します。
                    type: integer
                    format: int32
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: |-
                        機器・薬リスト

                        `optionType` が `SINGLE` の場合に存在します。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                optionType:
                    description: 商品メニュータイプ
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                price:
                    description: 初回価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                procedure:
                    description: |-
                        施術情報

                        `optionType` が `SINGLE` の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemProcedure'
                productTitle:
                    description: 商品タイトル
                    type: string
                promotionConfiguration:
                    description: プロモーション設定
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemOptionPromotionConfiguration'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`, `productTitle`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: |-
                        単位

                        `optionType` が `SINGLE` の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
            allOf:
                - not:
                    type: object
                    required:
                        - compositions
                    properties:
                        compositions: {}
        protos.purchase.PurchaseItemOptionPromotionConfiguration:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: プロモーションタイトル
                    type: string
                id:
                    description: プロモーションID
                    type: string
        protos.purchase.PurchaseItemPrepaidCardConfiguration:
            type: object
            required:
                - id
                - title
                - price
                - balance
                - point
                - expirationDateTimeUtc
                - prepaidCardId
            properties:
                title:
                    description: プリペイドカード商品タイトル
                    type: string
                description:
                    description: プリペイドカード説明
                    type: string
                balance:
                    description: プリペイドカード商品残高
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                expirationDateTimeUtc:
                    description: プリペイドカード満了日時
                    type: string
                expirationDurationInDays:
                    description: プリペイドカード商品使用期間
                    type: integer
                    format: int32
                id:
                    description: プリペイドカード商品ID
                    type: string
                point:
                    description: プリペイドカード商品ポイント
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                prepaidCardId:
                    description: プリペイドカードID
                    type: string
                price:
                    description: プリペイドカード商品価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        対応フィールド: `title`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.purchase.PurchaseItemPriceAdjustment:
            type: object
            required:
                - id
                - priceAdjustment
                - source
            properties:
                id:
                    description: 購入項目価格調整ID
                    type: string
                priceAdjustment:
                    description: 購入項目価格調整情報
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PriceAdjustment'
                source:
                    description: |
                        購入項目価格調整出典

                        | 値 | 意味 |
                        | --- | --- |
                        | `PriceAdjustmentSource_UNSPECIFIED` | 不明 |
                        | `DIRECT` | 直接適用 |
                        | `DISTRIBUTED` | カート価格調整から分配 |
                    type: string
                    enum:
                        - PriceAdjustmentSource_UNSPECIFIED
                        - DIRECT
                        - DISTRIBUTED
        protos.purchase.PurchaseItemProcedure:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 施術名
                    type: string
                id:
                    description: 施術ID
                    type: string
                    format: object-id
        protos.purchase.PurchasePriceAdjustment:
            type: object
            required:
                - id
                - priceAdjustment
                - status
            properties:
                id:
                    description: 価格調整ID
                    type: string
                priceAdjustment:
                    description: 価格調整情報
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PriceAdjustment'
                status:
                    description: |
                        価格調整状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `PriceAdjustmentStatus_UNSPECIFIED` | 不明 |
                        | `PENDING` | 分配待機 |
                        | `DISTRIBUTED` | 分配済み |
                    type: string
                    enum:
                        - PriceAdjustmentStatus_UNSPECIFIED
                        - PENDING
                        - DISTRIBUTED
        protos.purchase.PurchaseSummary:
            type: object
            required:
                - id
                - status
                - lastUpdatedDateTimeUtc
                - createdDateTimeUtc
                - process
                - visitorId
            properties:
                items:
                    description: 購入項目リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItem'
                assignee:
                    description: |-
                        担当者

                        Deprecated. `assignees`を使用してください。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                assignees:
                    description: 担当者リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                conversion:
                    description: 会計転換情報
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseConversion'
                createdDateTimeUtc:
                    description: |-
                        作成日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) の日時形式です。
                    type: string
                    format: date-time
                id:
                    description: 会計ID
                    type: string
                lastUpdatedDateTimeUtc:
                    description: |-
                        最終更新日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) の日時形式です。
                    type: string
                    format: date-time
                migratedDateTimeUtc:
                    description: |-
                        マイグレーション日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) の日時形式です。
                    type: string
                    format: date-time
                pendingItems:
                    description: 追加待ち購入項目リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItem'
                priceAdjustments:
                    description: 会計単価調整リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchasePriceAdjustment'
                process:
                    description: |
                        会計プロセス状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `PURCHASE_PROCESS_UNSPECIFIED` | 不明 |
                        | `NOT_IN_PROCESS` | 進行中のプロセスなし |
                        | `PENDING` | 会計追加進行中 |
                        | `REVOKING` | 会計購入変更進行中 |
                        | `REFUNDING` | 会計返金進行中 |
                        | `PREPAID_CARD_ITEM_SUBSTITUTING` | 別のプリペイドカードへの切り替え進行中 |
                    type: string
                    enum:
                        - PURCHASE_PROCESS_UNSPECIFIED
                        - NOT_IN_PROCESS
                        - PENDING
                        - REVOKING
                        - REFUNDING
                        - PREPAID_CARD_ITEM_SUBSTITUTING
                purchaseMemo:
                    description: 会計メモ
                    type: string
                refundingItems:
                    description: 返金中の購入項目リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.RefundingPurchaseItem'
                revokingItems:
                    description: 変更キャンセル中の購入項目リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.RevokingPurchaseItem'
                status:
                    description: |
                        会計状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `PURCHASE_STATUS_UNSPECIFIED` | 不明 |
                        | `REFUNDED` | 全額返金 |
                        | `PARTIALLY_REFUNDED` | 一部返金 |
                        | `ACCEPTED` | 会計確定 |
                        | `PAID` | 決済完了 |
                        | `INITIALIZED` | 初期化済み |
                    type: string
                    enum:
                        - PURCHASE_STATUS_UNSPECIFIED
                        - REFUNDED
                        - PARTIALLY_REFUNDED
                        - ACCEPTED
                        - PAID
                        - INITIALIZED
                transactions:
                    description: 取引リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction'
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
        protos.purchase.PurchaseSummaryTransaction:
            oneOf:
                - $ref: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.CARD'
                - $ref: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.CASH'
                - $ref: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.TRANSFER'
                - $ref: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.PLATFORM'
                - $ref: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.PREPAID_CARD'
                - $ref: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.EASY_PAY'
                - $ref: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.MEDICAL_LOAN'
            discriminator:
                mapping:
                    CARD: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.CARD'
                    CASH: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.CASH'
                    EASY_PAY: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.EASY_PAY'
                    MEDICAL_LOAN: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.MEDICAL_LOAN'
                    PLATFORM: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.PLATFORM'
                    PREPAID_CARD: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.PREPAID_CARD'
                    TRANSFER: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction.TRANSFER'
                propertyName: paymentType
        protos.purchase.PurchaseSummaryTransaction.CARD:
            title: CARD
            description: '`paymentType` = `CARD`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - cardConfiguration
            properties:
                assignee:
                    description: 取引担当者
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                cardConfiguration:
                    description: |-
                        カード取引設定

                        `paymentType`が`CARD`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CardTransactionConfiguration'
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: CARD
                    enum:
                        - CARD
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 付加価値税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.PurchaseSummaryTransaction.CASH:
            title: CASH
            description: '`paymentType` = `CASH`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - cashConfiguration
            properties:
                assignee:
                    description: 取引担当者
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                cashConfiguration:
                    description: |-
                        現金取引設定

                        `paymentType`が`CASH`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CashTransactionConfiguration'
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: CASH
                    enum:
                        - CASH
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 付加価値税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.PurchaseSummaryTransaction.EASY_PAY:
            title: EASY_PAY
            description: '`paymentType` = `EASY_PAY`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - easyPayConfiguration
            properties:
                assignee:
                    description: 取引担当者
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                easyPayConfiguration:
                    description: |-
                        キャッシュレス決済設定

                        `paymentType`が`EASY_PAY`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.EasyPayTransactionConfiguration'
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: EASY_PAY
                    enum:
                        - EASY_PAY
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 付加価値税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.PurchaseSummaryTransaction.MEDICAL_LOAN:
            title: MEDICAL_LOAN
            description: '`paymentType` = `MEDICAL_LOAN`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - medicalLoanConfiguration
            properties:
                assignee:
                    description: 取引担当者
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                medicalLoanConfiguration:
                    description: |-
                        医療ローン取引設定

                        `paymentType`が`MEDICAL_LOAN`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.MedicalLoanTransactionConfiguration'
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: MEDICAL_LOAN
                    enum:
                        - MEDICAL_LOAN
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 付加価値税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
        protos.purchase.PurchaseSummaryTransaction.PLATFORM:
            title: PLATFORM
            description: '`paymentType` = `PLATFORM`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - platformConfiguration
            properties:
                assignee:
                    description: 取引担当者
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: PLATFORM
                    enum:
                        - PLATFORM
                platformConfiguration:
                    description: |-
                        プラットフォーム取引設定

                        `paymentType`が`PLATFORM`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PlatformTransactionConfiguration'
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 付加価値税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.PurchaseSummaryTransaction.PREPAID_CARD:
            title: PREPAID_CARD
            description: '`paymentType` = `PREPAID_CARD`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - prepaidCardConfiguration
            properties:
                assignee:
                    description: 取引担当者
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: PREPAID_CARD
                    enum:
                        - PREPAID_CARD
                prepaidCardConfiguration:
                    description: |-
                        プリペイドカード取引設定

                        `paymentType`が`PREPAID_CARD`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardTransactionConfiguration'
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 付加価値税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.PurchaseSummaryTransaction.TRANSFER:
            title: TRANSFER
            description: '`paymentType` = `TRANSFER`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - transferConfiguration
            properties:
                assignee:
                    description: 取引担当者
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: TRANSFER
                    enum:
                        - TRANSFER
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                transferConfiguration:
                    description: |-
                        口座振込取引設定

                        `paymentType`が`TRANSFER`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransferTransactionConfiguration'
                vatAmount:
                    description: 付加価値税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.RefundingPurchaseItem:
            type: object
            required:
                - targetItemId
            properties:
                adjustedPrice:
                    description: 返金調整価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                targetItemId:
                    description: 返金対象の購入項目ID
                    type: string
        protos.purchase.RevokingPurchaseItem:
            type: object
            required:
                - targetItemId
            properties:
                targetItemId:
                    description: 変更キャンセル対象の購入項目ID
                    type: string
        protos.purchase.Transaction:
            oneOf:
                - $ref: '#/components/schemas/protos.purchase.Transaction.CARD'
                - $ref: '#/components/schemas/protos.purchase.Transaction.CASH'
                - $ref: '#/components/schemas/protos.purchase.Transaction.TRANSFER'
                - $ref: '#/components/schemas/protos.purchase.Transaction.PLATFORM'
                - $ref: '#/components/schemas/protos.purchase.Transaction.PREPAID_CARD'
                - $ref: '#/components/schemas/protos.purchase.Transaction.EASY_PAY'
                - $ref: '#/components/schemas/protos.purchase.Transaction.MEDICAL_LOAN'
            discriminator:
                mapping:
                    CARD: '#/components/schemas/protos.purchase.Transaction.CARD'
                    CASH: '#/components/schemas/protos.purchase.Transaction.CASH'
                    EASY_PAY: '#/components/schemas/protos.purchase.Transaction.EASY_PAY'
                    MEDICAL_LOAN: '#/components/schemas/protos.purchase.Transaction.MEDICAL_LOAN'
                    PLATFORM: '#/components/schemas/protos.purchase.Transaction.PLATFORM'
                    PREPAID_CARD: '#/components/schemas/protos.purchase.Transaction.PREPAID_CARD'
                    TRANSFER: '#/components/schemas/protos.purchase.Transaction.TRANSFER'
                propertyName: paymentType
        protos.purchase.Transaction.CARD:
            title: CARD
            description: '`paymentType` = `CARD`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - cardConfiguration
            properties:
                assigneeId:
                    description: 取引担当者ID
                    type: string
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                cardConfiguration:
                    description: |-
                        カード取引設定

                        `paymentType`が`CARD`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CardTransactionConfiguration'
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: CARD
                    enum:
                        - CARD
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.Transaction.CASH:
            title: CASH
            description: '`paymentType` = `CASH`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - cashConfiguration
            properties:
                assigneeId:
                    description: 取引担当者ID
                    type: string
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                cashConfiguration:
                    description: |-
                        現金取引設定

                        `paymentType`が`CASH`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CashTransactionConfiguration'
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: CASH
                    enum:
                        - CASH
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.Transaction.EASY_PAY:
            title: EASY_PAY
            description: '`paymentType` = `EASY_PAY`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - easyPayConfiguration
            properties:
                assigneeId:
                    description: 取引担当者ID
                    type: string
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                easyPayConfiguration:
                    description: |-
                        キャッシュレス決済設定

                        `paymentType`が`EASY_PAY`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.EasyPayTransactionConfiguration'
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: EASY_PAY
                    enum:
                        - EASY_PAY
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.Transaction.MEDICAL_LOAN:
            title: MEDICAL_LOAN
            description: '`paymentType` = `MEDICAL_LOAN`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - medicalLoanConfiguration
            properties:
                assigneeId:
                    description: 取引担当者ID
                    type: string
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                medicalLoanConfiguration:
                    description: |-
                        医療ローン取引設定

                        `paymentType`が`MEDICAL_LOAN`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.MedicalLoanTransactionConfiguration'
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: MEDICAL_LOAN
                    enum:
                        - MEDICAL_LOAN
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
        protos.purchase.Transaction.PLATFORM:
            title: PLATFORM
            description: '`paymentType` = `PLATFORM`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - platformConfiguration
            properties:
                assigneeId:
                    description: 取引担当者ID
                    type: string
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: PLATFORM
                    enum:
                        - PLATFORM
                platformConfiguration:
                    description: |-
                        プラットフォーム取引設定

                        `paymentType`が`PLATFORM`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PlatformTransactionConfiguration'
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.Transaction.PREPAID_CARD:
            title: PREPAID_CARD
            description: '`paymentType` = `PREPAID_CARD`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - prepaidCardConfiguration
            properties:
                assigneeId:
                    description: 取引担当者ID
                    type: string
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: PREPAID_CARD
                    enum:
                        - PREPAID_CARD
                prepaidCardConfiguration:
                    description: |-
                        プリペイドカード取引設定

                        `paymentType`が`PREPAID_CARD`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardTransactionConfiguration'
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - transferConfiguration
                    properties:
                        transferConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.Transaction.TRANSFER:
            title: TRANSFER
            description: '`paymentType` = `TRANSFER`'
            type: object
            required:
                - id
                - price
                - status
                - paymentType
                - transferConfiguration
            properties:
                assigneeId:
                    description: 取引担当者ID
                    type: string
                canceledRefId:
                    description: キャンセル参照ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        取引作成日時

                        Deprecated. `paymentDateTime.lastUpdatedDateTimeUtc`を使用してください。
                    deprecated: true
                    type: string
                id:
                    description: 取引ID
                    type: string
                paymentDateTime:
                    description: |-
                        取引支払い日時情報

                        `paymentDateTime.lastUpdatedDateTimeUtc`がない場合、下位互換のために`createdDateTimeUtc`を使用してください。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        取引支払いタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | 不明 |
                        | `CASH` | 現金 |
                        | `CARD` | カード |
                        | `PREPAID_CARD` | プリペイドカード |
                        | `PLATFORM` | アプリ決済 |
                        | `TRANSFER` | 口座振込 |
                        | `EASY_PAY` | キャッシュレス決済 |
                        | `MEDICAL_LOAN` | 医療ローン |
                    type: string
                    const: TRANSFER
                    enum:
                        - TRANSFER
                price:
                    description: 取引金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: 取引元データ
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        取引状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | 不明 |
                        | `REQUESTED` | リクエスト済み |
                        | `APPROVED` | 承認済み |
                        | `CANCELED` | キャンセル取引 |
                        | `SPENT` | 返還取引 |
                        | `FAILED` | 処理失敗 |

                        `CANCELED` は取引がキャンセルされた状態ではなく、キャンセル取引を意味します。`SPENT` は取引が承認された状態ではなく、金額がマイナスの取引です。患者に取引キャンセルなしで返金する際に使用されます。`FAILED` はリクエストされた取引の処理失敗を意味します。外部決済連携先の失敗やカードリーダーの認識失敗などにより発生する場合があります。
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: 課税供給価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: 免税金額
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                transferConfiguration:
                    description: |-
                        口座振込取引設定

                        `paymentType`が`TRANSFER`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransferTransactionConfiguration'
                vatAmount:
                    description: 消費税
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
            allOf:
                - not:
                    type: object
                    required:
                        - cardConfiguration
                    properties:
                        cardConfiguration: {}
                - not:
                    type: object
                    required:
                        - cashConfiguration
                    properties:
                        cashConfiguration: {}
                - not:
                    type: object
                    required:
                        - platformConfiguration
                    properties:
                        platformConfiguration: {}
                - not:
                    type: object
                    required:
                        - prepaidCardConfiguration
                    properties:
                        prepaidCardConfiguration: {}
                - not:
                    type: object
                    required:
                        - easyPayConfiguration
                    properties:
                        easyPayConfiguration: {}
                - not:
                    type: object
                    required:
                        - medicalLoanConfiguration
                    properties:
                        medicalLoanConfiguration: {}
        protos.purchase.TransactionPaymentDateTime:
            type: object
            required:
                - lastUpdatedDateTimeUtc
            properties:
                approvedDateTimeUtc:
                    description: 承認日時
                    type: string
                canceledDateTimeUtc:
                    description: キャンセル日時
                    type: string
                failedDateTimeUtc:
                    description: 失敗日時
                    type: string
                lastUpdatedDateTimeUtc:
                    description: 最終決済状態変更日時
                    type: string
                requestedDateTimeUtc:
                    description: リクエスト日時
                    type: string
                spentDateTimeUtc:
                    description: 返却日時
                    type: string
        protos.purchase.TransactionPlatform:
            type: object
            required:
                - name
            properties:
                name:
                    description: プラットフォーム
                    type: string
        protos.purchase.TransactionPrimaryData:
            type: object
            required:
                - vendor
                - terminalTransactionId
            properties:
                acquirerName:
                    description: カード仕入れ会社名
                    type: string
                approvalNumber:
                    description: 承認番号
                    type: string
                cardCompanyName:
                    description: カード会社名
                    type: string
                cardNumber:
                    description: カード番号
                    type: string
                easyPayProviderCode:
                    description: キャッシュレス決済会社コード
                    type: string
                failureReasonMessage:
                    description: 失敗理由メッセージ
                    type: string
                installmentConfiguration:
                    description: 分割設定
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.InstallmentConfiguration'
                issuerName:
                    description: 発行会社名
                    type: string
                merchantId:
                    description: 加盟店ID
                    type: string
                paymentUrl:
                    description: 決済URL
                    type: string
                rawData:
                    description: 決済端末元の応答
                    type: string
                terminalId:
                    description: 端末ID
                    type: string
                terminalTransactionId:
                    description: 端末取引ID
                    type: string
                vatAmount:
                    description: |-
                        付加価値税

                        Deprecated. `Transaction.vatAmount`を使用してください。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vendor:
                    description: |
                        決済端末業者

                        | 値 | 意味 |
                        | --- | --- |
                        | `PaymentTerminalVendor_UNSPECIFIED` | 不明 |
                        | `KOVAN` | KOVAN |
                        | `KSNET` | KSNET |
                        | `STRIPE` | Stripe |
                        | `KPN` | KPN |
                    type: string
                    enum:
                        - PaymentTerminalVendor_UNSPECIFIED
                        - KOVAN
                        - KSNET
                        - STRIPE
                        - KPN
        protos.purchase.TransferTransactionConfiguration:
            type: object
            properties:
                cashReceiptConfiguration:
                    description: 口座振込現金領収書設定
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CashReceiptConfiguration'
                incomeTaxDeductionNumber:
                    description: 現金領収書承認番号
                    type: string
        protos.purchase.VisitorPrepaidCardBalanceContract:
            type: object
            required:
                - remainingBalance
                - remainingPoint
            properties:
                lastBalanceChargedDateTimeUtc:
                    description: |-
                        最新の現金チャージ日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC日時です。`BALANCE`金額タイプの`CHARGE`イベントがない場合、レスポンスに含まれません。
                    type: string
                    format: date-time
                lastPointChargedDateTimeUtc:
                    description: |-
                        最新のポイントチャージ日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC日時です。`POINT`金額タイプの`CHARGE`イベントがない場合、レスポンスに含まれません。
                    type: string
                    format: date-time
                remainingBalance:
                    description: |-
                        利用可能なプリペイドカードの合算現金残高

                        `balance`は残りの現金残高合計、`total`は現金チャージ総額です。照会対象のプリペイドカードがない場合、金額は0です。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardAmount'
                remainingPoint:
                    description: |-
                        利用可能なプリペイドカードの合算ポイント残高

                        `balance`は残りのポイント残高合計、`total`はポイントチャージ総額です。照会対象のプリペイドカードがない場合、金額は0です。
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardAmount'
        protos.schedule.BreaktimeContract:
            type: object
            required:
                - startTime
                - endTime
            properties:
                endTime:
                    description: |-
                        休憩終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                startTime:
                    description: |-
                        休憩開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
        protos.schedule.CancelReservationCommand:
            type: object
            required:
                - scheduleId
                - reason
            properties:
                reason:
                    description: |
                        予約キャンセル理由

                        | 値 | 意味 |
                        | --- | --- |
                        | `CANCEL_RESERVATION_REASON_UNSPECIFIED` | 不明 |
                        | `CANCELED` | 予約キャンセル |
                        | `NO_SHOW` | ノーショー |

                        `CANCEL_RESERVATION_REASON_UNSPECIFIED` は、一般的な予約キャンセルリクエストでは使用しないデフォルト値です。
                    type: string
                    enum:
                        - CANCEL_RESERVATION_REASON_UNSPECIFIED
                        - CANCELED
                        - NO_SHOW
                scheduleId:
                    description: キャンセルするスケジュールID
                    type: string
                    format: uuid
        protos.schedule.Counselor:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: カウンセラーアカウント名
                    type: string
                id:
                    description: カウンセラーアカウントID
                    type: string
                    format: object-id
        protos.schedule.Doctor:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: アカウント名
                    type: string
                id:
                    description: アカウントID
                    type: string
                    format: object-id
        protos.schedule.EventInitiator:
            type: object
            oneOf:
                - properties:
                    account:
                        description: アカウント主体
                        allOf:
                            - $ref: '#/components/schemas/protos.schedule.EventInitiator.Account'
                  required:
                    - account
                  title: アカウント主体
                  type: object
                - properties:
                    system:
                        description: システム主体
                        allOf:
                            - $ref: '#/components/schemas/protos.schedule.EventInitiator.System'
                  required:
                    - system
                  title: システム主体
                  type: object
        protos.schedule.EventInitiator.Account:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: アカウント名
                    type: string
                id:
                    description: アカウントID
                    type: string
        protos.schedule.EventInitiator.System:
            type: object
        protos.schedule.IntervalCapacityContract:
            type: object
            required:
                - enabled
                - intervalCapacity
                - zoneId
            properties:
                enabled:
                    description: 該当区域の有効状態
                    type: boolean
                intervalCapacity:
                    description: 単位時間あたりの予約定員
                    type: integer
                    format: int32
                zoneId:
                    description: 区域ID
                    type: string
                    format: object-id
        protos.schedule.OccupiedResource:
            type: object
            required:
                - id
                - type
                - reservationTime
            properties:
                type:
                    description: |
                        予約日程リソースタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `OccupiedResourceType_UNSPECIFIED` | 不明 |
                        | `RESERVATION_GROUP` | 予約グループ |
                    type: string
                    enum:
                        - OccupiedResourceType_UNSPECIFIED
                        - RESERVATION_GROUP
                id:
                    description: 予約日程リソースID
                    type: string
                reservationTime:
                    description: 予約日程時間範囲
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
            oneOf:
                - properties:
                    reservationGroup:
                        description: 予約グループリソース
                        allOf:
                            - $ref: '#/components/schemas/protos.schedule.ReservationGroupResource'
                  required:
                    - reservationGroup
                  title: 予約グループリソース
                  type: object
        protos.schedule.OperationTimeContract:
            type: object
            required:
                - enabled
            properties:
                breaktime:
                    description: 休憩時間
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.BreaktimeContract'
                enabled:
                    description: 診療有無
                    type: boolean
                endTime:
                    description: |-
                        診療終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                startTime:
                    description: |-
                        診療開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
        protos.schedule.OperationTimetableContract:
            type: object
            required:
                - monday
                - tuesday
                - wednesday
                - thursday
                - friday
                - saturday
                - sunday
            properties:
                friday:
                    description: 金曜日の診療時間
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                monday:
                    description: 月曜日の診療時間
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                saturday:
                    description: 土曜日の診療時間
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                sunday:
                    description: 日曜日の診療時間
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                thursday:
                    description: 木曜日の診療時間
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                tuesday:
                    description: 火曜日の診療時間
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                wednesday:
                    description: 水曜日の診療時間
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
        protos.schedule.ReservationAssignee:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 担当者名
                    type: string
                id:
                    description: 担当者ID
                    type: string
        protos.schedule.ReservationFunnel:
            type: object
            required:
                - funnel
                - funnelDetail
            properties:
                funnel:
                    description: 予約流入チャネルコード
                    allOf:
                        - $ref: '#/components/schemas/protos.tenant.Code'
                funnelCategory:
                    description: 予約流入チャネルカテゴリコード
                    allOf:
                        - $ref: '#/components/schemas/protos.tenant.Code'
                funnelDetail:
                    description: |-
                        詳細流入チャネル

                        フリーテキストで渡します。
                    type: string
        protos.schedule.ReservationGroupContract:
            type: object
            required:
                - id
                - title
                - memo
                - startDate
                - intervalMinutes
                - intervalCapacities
                - isDefault
                - operationTimetable
                - order
            properties:
                title:
                    description: 予約グループ名
                    type: string
                id:
                    description: 予約グループID
                    type: string
                    format: object-id
                intervalCapacities:
                    description: 区域別予約定員設定リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.IntervalCapacityContract'
                intervalMinutes:
                    description: 予約単位時間（分）
                    type: integer
                    format: int32
                isDefault:
                    description: デフォルト予約グループ有無
                    type: boolean
                memo:
                    description: 予約グループメモ
                    type: string
                operationTimetable:
                    description: 診療時間表
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimetableContract'
                order:
                    description: 並べ替え順序
                    type: integer
                    format: int32
                reservationPolicy:
                    description: |-
                        予約ポリシー

                        詳細フィールド値がない場合、病院の基本診療ポリシーを使用します。
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy'
                sameDayCloseBufferMinutes:
                    description: |-
                        当日予約締め切りバッファ（分）

                        Deprecated フィールドです。
                    deprecated: true
                    type: integer
                    format: int32
                startDate:
                    description: |-
                        予約開始可能日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time 形式です。
                    type: string
                    format: date-time
        protos.schedule.ReservationGroupResource:
            type: object
            required:
                - reservationGroupId
                - zoneId
            properties:
                doctors:
                    description: 医師リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.Doctor'
                reservationGroupId:
                    description: 予約グループID
                    type: string
                    format: object-id
                zoneId:
                    description: 区域ID
                    type: string
                    format: object-id
        protos.schedule.ReservationPolicy:
            type: object
            properties:
                cancel:
                    description: 予約キャンセル可能締切ルール
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy.ClosingRule'
                reschedule:
                    description: 予約変更可能締切ルール
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy.ClosingRule'
                reservation:
                    description: 予約作成ルール
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy.ReservationRule'
        protos.schedule.ReservationPolicy.ClosingRule:
            type: object
            required:
                - allowed
                - minimumAdvance
            properties:
                allowed:
                    description: 許可有無
                    type: boolean
                minimumAdvance:
                    description: 最小締切設定
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy.MinimumAdvanceConfiguration'
        protos.schedule.ReservationPolicy.MinimumAdvanceConfiguration:
            type: object
            oneOf:
                - properties:
                    minReservationStartDateTimeLeadMinutes:
                        description: 予約開始日時基準の最小締切時間（分）
                        type: integer
                        format: int32
                  required:
                    - minReservationStartDateTimeLeadMinutes
                  title: 予約開始日時基準の最小締切時間（分）
                  type: object
                - properties:
                    minReservationStartDateLeadDays:
                        description: 予約日基準の最小締切日数
                        type: integer
                        format: int32
                  required:
                    - minReservationStartDateLeadDays
                  title: 予約日基準の最小締切日数
                  type: object
        protos.schedule.ReservationPolicy.ReservationRule:
            type: object
            properties:
                maxAdvanceDays:
                    description: |-
                        選択可能な最大予約日数

                        現在の日付を基準に計算します。
                    type: integer
                    format: int32
                minimumAdvance:
                    description: 予約最小締切設定
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy.MinimumAdvanceConfiguration'
        protos.schedule.ReservationRequestedOptionConfiguration:
            type: object
            required:
                - optionId
                - optionTitle
                - price
            properties:
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                optionId:
                    description: 商品メニューID
                    type: string
                    format: object-id
                optionTitle:
                    description: 商品メニュー名
                    type: string
                price:
                    description: 価格情報
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationRequestedOptionPrice'
                productTitle:
                    description: 商品名
                    type: string
                promotionTitle:
                    description: プロモーション名
                    type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.schedule.ReservationRequestedOptionPrice:
            type: object
            required:
                - amount
                - currency
                - reason
            properties:
                amount:
                    description: 価格金額
                    type: integer
                    format: int32
                currency:
                    description: |-
                        通貨コード

                        [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)標準の通貨コードです。例: `KRW`
                    type: string
                reason:
                    description: 価格理由
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationRequestedOptionPriceReason'
        protos.schedule.ReservationRequestedOptionPriceReason:
            oneOf:
                - $ref: '#/components/schemas/protos.schedule.ReservationRequestedOptionPriceReason.GENERAL'
                - $ref: '#/components/schemas/protos.schedule.ReservationRequestedOptionPriceReason.VISITOR_TYPE'
            discriminator:
                mapping:
                    GENERAL: '#/components/schemas/protos.schedule.ReservationRequestedOptionPriceReason.GENERAL'
                    VISITOR_TYPE: '#/components/schemas/protos.schedule.ReservationRequestedOptionPriceReason.VISITOR_TYPE'
                propertyName: type
        protos.schedule.ReservationRequestedOptionPriceReason.GENERAL:
            title: GENERAL
            description: '`type` = `GENERAL`'
            type: object
            required:
                - type
            properties:
                type:
                    description: |
                        リクエスト施術価格理由タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `RESERVATION_REQUESTED_OPTION_PRICE_REASON_TYPE_UNSPECIFIED` | 不明 |
                        | `GENERAL` | 通常価格 |
                        | `PROMOTION` | プロモーション価格 (Deprecated) |
                        | `VISITOR_TYPE` | 患者タイプ別価格 |
                    type: string
                    const: GENERAL
                    enum:
                        - GENERAL
            allOf:
                - not:
                    type: object
                    required:
                        - promotionId
                    properties:
                        promotionId: {}
                - not:
                    type: object
                    required:
                        - visitorTypeId
                    properties:
                        visitorTypeId: {}
        protos.schedule.ReservationRequestedOptionPriceReason.VISITOR_TYPE:
            title: VISITOR_TYPE
            description: '`type` = `VISITOR_TYPE`'
            type: object
            required:
                - type
                - visitorTypeId
            properties:
                type:
                    description: |
                        リクエスト施術価格理由タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `RESERVATION_REQUESTED_OPTION_PRICE_REASON_TYPE_UNSPECIFIED` | 不明 |
                        | `GENERAL` | 通常価格 |
                        | `PROMOTION` | プロモーション価格 (Deprecated) |
                        | `VISITOR_TYPE` | 患者タイプ別価格 |
                    type: string
                    const: VISITOR_TYPE
                    enum:
                        - VISITOR_TYPE
                visitorTypeId:
                    description: 患者タイプID
                    type: string
            allOf:
                - not:
                    type: object
                    required:
                        - promotionId
                    properties:
                        promotionId: {}
        protos.schedule.ReservationRequestedProcedure:
            oneOf:
                - $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure.OPTION'
                - $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure.TICKET'
            discriminator:
                mapping:
                    OPTION: '#/components/schemas/protos.schedule.ReservationRequestedProcedure.OPTION'
                    TICKET: '#/components/schemas/protos.schedule.ReservationRequestedProcedure.TICKET'
                propertyName: type
        protos.schedule.ReservationRequestedProcedure.OPTION:
            title: OPTION
            description: '`type` = `OPTION`'
            type: object
            required:
                - type
                - optionConfiguration
            properties:
                type:
                    description: |
                        リクエスト施術タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `RESERVATION_REQUESTED_PROCEDURE_TYPE_UNSPECIFIED` | 不明 |
                        | `OPTION` | 商品メニュー |
                        | `TICKET` | 施術チケット |
                    type: string
                    const: OPTION
                    enum:
                        - OPTION
                optionConfiguration:
                    description: |-
                        商品メニュー設定

                        `type`が`OPTION`であるリクエスト施術の設定です。
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationRequestedOptionConfiguration'
            allOf:
                - not:
                    type: object
                    required:
                        - ticketConfiguration
                    properties:
                        ticketConfiguration: {}
        protos.schedule.ReservationRequestedProcedure.TICKET:
            title: TICKET
            description: '`type` = `TICKET`'
            type: object
            required:
                - type
                - ticketConfiguration
            properties:
                type:
                    description: |
                        リクエスト施術タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `RESERVATION_REQUESTED_PROCEDURE_TYPE_UNSPECIFIED` | 不明 |
                        | `OPTION` | 商品メニュー |
                        | `TICKET` | 施術チケット |
                    type: string
                    const: TICKET
                    enum:
                        - TICKET
                ticketConfiguration:
                    description: |-
                        施術チケット設定

                        `type`が`TICKET`であるリクエスト施術の設定です。
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationRequestedTicketConfiguration'
            allOf:
                - not:
                    type: object
                    required:
                        - optionConfiguration
                    properties:
                        optionConfiguration: {}
        protos.schedule.ReservationRequestedTicketConfiguration:
            type: object
            required:
                - ticketId
                - ticketTitle
                - optionTitle
            properties:
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                optionTitle:
                    description: メニュー名
                    type: string
                productTitle:
                    description: 商品名
                    type: string
                ticketId:
                    description: 施術チケットID
                    type: string
                ticketTitle:
                    description: 施術チケット名
                    type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.schedule.ReservationRuleSummary:
            type: object
            required:
                - id
                - title
                - isActive
                - isDefault
                - lastModifiedBy
                - updatedDateTimeUtc
                - createdDateTimeUtc
            properties:
                title:
                    description: 予約ルール名
                    type: string
                createdDateTimeUtc:
                    description: |-
                        作成日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC日時形式です。
                    type: string
                    format: date-time
                id:
                    description: 予約ルールID
                    type: string
                isActive:
                    description: 予約ルール有効状態
                    type: boolean
                isDefault:
                    description: デフォルト予約ルール状態
                    type: boolean
                lastModifiedBy:
                    description: 最終更新者
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.EventInitiator'
                updatedDateTimeUtc:
                    description: |-
                        最終更新日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC日時形式です。
                    type: string
                    format: date-time
        protos.schedule.RoomContract:
            type: object
            required:
                - id
                - zoneId
                - title
                - order
            properties:
                title:
                    description: ルーム名
                    type: string
                id:
                    description: ルームID
                    type: string
                    format: object-id
                order:
                    description: 並び順
                    type: integer
                    format: int32
                zoneId:
                    description: 区域ID
                    type: string
                    format: object-id
        protos.schedule.UpdateReservationCommand:
            type: object
            required:
                - scheduleId
                - reservationGroupId
                - startDateTime
                - endDateTime
                - zoneId
            properties:
                consultationRequired:
                    description: カウンセリング必要有無
                    type: boolean
                counselor:
                    description: 希望カウンセラー
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Counselor'
                doctor:
                    description: 希望医師
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Doctor'
                endDateTime:
                    description: |-
                        予約終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                funnel:
                    description: 予約流入チャネル情報
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationFunnel'
                reservationAssignee:
                    description: 予約担当者
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationAssignee'
                reservationGroupId:
                    description: 予約グループID
                    type: string
                    format: object-id
                reservationMemo:
                    description: 予約メモ
                    type: string
                scheduleId:
                    description: 修正するスケジュールID
                    type: string
                    format: uuid
                sedationRequired:
                    description: 睡眠麻酔必要有無
                    type: boolean
                startDateTime:
                    description: |-
                        予約開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                zoneId:
                    description: 予約区域ID
                    type: string
                    format: object-id
        protos.schedule.VisitorLocation:
            type: object
            required:
                - zoneId
            properties:
                zoneId:
                    description: 受付区域ID
                    type: string
                    format: object-id
        protos.schedule.consultation.ConsultationContent:
            type: object
            required:
                - text
            properties:
                text:
                    description: カウンセリング内容テキスト
                    type: string
        protos.schedule.consultation.ConsultationContract:
            type: object
            required:
                - id
                - visitor
                - consultationStartedDateTimeUtc
                - content
                - createdDateTimeUtc
                - updatedDateTimeUtc
            properties:
                consultationDoctors:
                    description: 診察医師リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.Doctor'
                consultationProcedures:
                    description: カウンセリング施術リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.consultation.ConsultationProcedure'
                consultationStartedDateTimeUtc:
                    description: カウンセリング開始日時
                    type: string
                content:
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationContent'
                    description: カウンセリング内容
                counselors:
                    description: カウンセラーリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.Counselor'
                createdDateTimeUtc:
                    description: 作成日時
                    type: string
                id:
                    description: カウンセリングID
                    type: string
                result:
                    description: カウンセリング結果
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationResult'
                scheduleId:
                    description: |-
                        連携スケジュールID

                        非対面カウンセリングには含まれない場合があります。
                    type: string
                    format: uuid
                updatedDateTimeUtc:
                    description: 修正日時
                    type: string
                visitor:
                    description: カウンセリング患者情報
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationVisitor'
        protos.schedule.consultation.ConsultationOptionComposition:
            type: object
            required:
                - count
                - price
            properties:
                count:
                    description: 構成数量
                    type: integer
                    format: int32
                medicalService:
                    description: 構成診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                price:
                    description: 構成価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
        protos.schedule.consultation.ConsultationOptionConfiguration:
            oneOf:
                - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationOptionConfiguration.SINGLE'
                - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationOptionConfiguration.GROUP'
            discriminator:
                mapping:
                    GROUP: '#/components/schemas/protos.schedule.consultation.ConsultationOptionConfiguration.GROUP'
                    SINGLE: '#/components/schemas/protos.schedule.consultation.ConsultationOptionConfiguration.SINGLE'
                propertyName: optionType
        protos.schedule.consultation.ConsultationOptionConfiguration.GROUP:
            title: GROUP
            description: '`optionType` = `GROUP`'
            type: object
            required:
                - id
                - title
                - productTitle
                - optionType
                - price
                - compositions
            properties:
                title:
                    description: 商品メニュータイトル
                    type: string
                compositions:
                    description: |-
                        商品メニュー構成リスト

                        `optionType`が`GROUP`の場合に存在します。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.consultation.ConsultationOptionComposition'
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                optionType:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                price:
                    description: 価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                productTitle:
                    description: 商品タイトル
                    type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - medicalService
                    properties:
                        medicalService: {}
                - not:
                    type: object
                    required:
                        - count
                    properties:
                        count: {}
        protos.schedule.consultation.ConsultationOptionConfiguration.SINGLE:
            title: SINGLE
            description: '`optionType` = `SINGLE`'
            type: object
            required:
                - id
                - title
                - productTitle
                - optionType
                - price
                - medicalService
                - count
            properties:
                title:
                    description: 商品メニュータイトル
                    type: string
                count:
                    description: |-
                        数量

                        `optionType`が`SINGLE`の場合に存在します。
                    type: integer
                    format: int32
                id:
                    description: 商品メニューID
                    type: string
                    format: object-id
                medicalService:
                    description: |-
                        診療項目

                        `optionType`が`SINGLE`の場合に存在します。
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                optionType:
                    description: |
                        商品メニュータイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | 不明 |
                        | `SINGLE` | 単一メニュー |
                        | `GROUP` | グループメニュー |
                        | `CONSULTATION` | カウンセリングメニュー |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                price:
                    description: 価格
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                productTitle:
                    description: 商品タイトル
                    type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - compositions
                    properties:
                        compositions: {}
        protos.schedule.consultation.ConsultationProcedure:
            type: object
            required:
                - type
            properties:
                type:
                    description: |
                        カウンセリング施術タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `CONSULTATION_PROCEDURE_TYPE_UNSPECIFIED` | 不明 |
                        | `OPTION` | 商品メニュー |
                        | `TICKET` | 施術チケット |
                    type: string
                    enum:
                        - CONSULTATION_PROCEDURE_TYPE_UNSPECIFIED
                        - OPTION
                        - TICKET
            oneOf:
                - properties:
                    optionConfiguration:
                        description: |-
                            商品メニュー設定

                            `type`が`OPTION`のカウンセリング施術の設定です。
                        allOf:
                            - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationOptionConfiguration'
                  required:
                    - optionConfiguration
                  title: |-
                    商品メニュー設定

                    `type`が`OPTION`のカウンセリング施術の設定です。
                  type: object
                - properties:
                    ticketConfiguration:
                        description: |-
                            施術チケット設定

                            `type`が`TICKET`のカウンセリング施術の設定です。
                        allOf:
                            - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationTicketConfiguration'
                  required:
                    - ticketConfiguration
                  title: |-
                    施術チケット設定

                    `type`が`TICKET`のカウンセリング施術の設定です。
                  type: object
        protos.schedule.consultation.ConsultationResult:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: カウンセリング結果名
                    type: string
                color:
                    description: カウンセリング結果カラー
                    type: string
                    enum:
                        - CodeColor_UNSPECIFIED
                        - RED
                        - LAVA
                        - ORANGE
                        - GREEN
                        - CYAN
                        - BLUE
                        - PURPLE
                        - MAGENTA
                        - GRAY
                id:
                    description: カウンセリング結果ID
                    type: string
        protos.schedule.consultation.ConsultationTicketConfiguration:
            type: object
            required:
                - ticketId
                - ticketTitle
                - optionTitle
                - medicalService
                - productTitle
            properties:
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                optionTitle:
                    description: メニュー名
                    type: string
                productTitle:
                    description: 商品名
                    type: string
                ticketId:
                    description: 施術チケットID
                    type: string
                ticketTitle:
                    description: 施術チケット名
                    type: string
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.schedule.consultation.ConsultationVisitor:
            type: object
            required:
                - id
                - name
                - isNew
            properties:
                name:
                    description: カウンセリング患者名
                    type: string
                id:
                    description: カウンセリング患者ID
                    type: string
                isNew:
                    description: カウンセリング作成時点の新規患者かどうか
                    type: boolean
        protos.schedule.flow.FlowTask:
            oneOf:
                - $ref: '#/components/schemas/protos.schedule.flow.FlowTask.PROCEDURE'
                - $ref: '#/components/schemas/protos.schedule.flow.FlowTask.ETCETERA'
            discriminator:
                mapping:
                    ETCETERA: '#/components/schemas/protos.schedule.flow.FlowTask.ETCETERA'
                    PROCEDURE: '#/components/schemas/protos.schedule.flow.FlowTask.PROCEDURE'
                propertyName: type
        protos.schedule.flow.FlowTask.ETCETERA:
            title: ETCETERA
            description: '`type` = `ETCETERA`'
            type: object
            required:
                - type
                - sequence
                - title
                - status
                - paymentRequired
                - anesthesiaType
                - etceteraConfiguration
            properties:
                title:
                    description: タスク名
                    type: string
                type:
                    description: |
                        タスクタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `FLOW_TASK_TYPE_UNSPECIFIED` | 不明 |
                        | `PROCEDURE` | 施術 |
                        | `ETCETERA` | その他 |
                    type: string
                    const: ETCETERA
                    enum:
                        - ETCETERA
                anesthesiaType:
                    description: |
                        麻酔タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ANESTHESIA_TYPE_UNSPECIFIED` | 不明 |
                        | `SEDATION` | 睡眠麻酔 |
                        | `SPRAY` | スプレー麻酔 |
                        | `CREAM` | クリーム麻酔 |
                        | `DENTAL` | デンタル麻酔 |
                        | `GAS` | ガス麻酔 |
                        | `ICE` | アイス麻酔 |
                        | `CREAM_DENTAL` | クリーム+デンタル麻酔 |
                    type: string
                    enum:
                        - ANESTHESIA_TYPE_UNSPECIFIED
                        - SEDATION
                        - SPRAY
                        - CREAM
                        - DENTAL
                        - GAS
                        - ICE
                        - CREAM_DENTAL
                assigneeMemo:
                    description: 担当者メモ
                    type: string
                assignees:
                    description: 担当者リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskAssignee'
                calledDoctors:
                    description: 呼び出された医師リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskCalledDoctor'
                completedDateTimeUtc:
                    description: |-
                        タスク完了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                doctorAssignedDateTimeUtc:
                    description: |-
                        医師配置日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                doctorCallDateTime:
                    description: 医師呼び出し日時
                    type: string
                doctorMemo:
                    description: 医師メモ
                    type: string
                doctors:
                    description: 医師リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskDoctor'
                doctorsCalledZone:
                    description: 医師呼び出しゾーン
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskZone'
                etceteraConfiguration:
                    description: |-
                        その他タスク構成

                        `type`が`ETCETERA`であるタスクの構成です。
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskEtceteraConfiguration'
                memo:
                    description: メモ
                    type: string
                order:
                    description: 並び順
                    type: integer
                    format: int32
                paymentRequired:
                    description: 会計要否
                    type: boolean
                purchaseId:
                    description: 会計ID
                    type: string
                readyDateTimeUtc:
                    description: |-
                        タスク準備日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                responsibleDoctor:
                    description: 責任医師
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskResponsibleDoctor'
                room:
                    description: 配置ルーム
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.RoomContract'
                roomAssignedDateTimeUtc:
                    description: |-
                        ルーム配置日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                sequence:
                    description: タスク順番
                    type: integer
                    format: int32
                signed:
                    description: 署名有無
                    type: boolean
                signedDateTimeUtc:
                    description: |-
                        署名日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                status:
                    description: |
                        タスクステータス

                        | 値 | 意味 |
                        | --- | --- |
                        | `FLOW_TASK_STATUS_UNSPECIFIED` | 不明 |
                        | `WAITING` | 待機 |
                        | `READY` | 準備 |
                        | `DONE` | 完了 |
                        | `NOT_STARTED` | 開始前 |
                        | `CANCELED` | キャンセル |

                        `FLOW_TASK_STATUS_UNSPECIFIED` は、問題が発生した場合を除き使用しないデフォルト値です。
                    type: string
                    enum:
                        - FLOW_TASK_STATUS_UNSPECIFIED
                        - WAITING
                        - READY
                        - DONE
                        - NOT_STARTED
                        - CANCELED
                translsMap:
                    description: |-
                        多言語フィールド翻訳マップ

                        `title`の言語別翻訳文字列です。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - procedureConfiguration
                    properties:
                        procedureConfiguration: {}
        protos.schedule.flow.FlowTask.PROCEDURE:
            title: PROCEDURE
            description: '`type` = `PROCEDURE`'
            type: object
            required:
                - type
                - sequence
                - title
                - status
                - paymentRequired
                - anesthesiaType
                - procedureConfiguration
            properties:
                title:
                    description: タスク名
                    type: string
                type:
                    description: |
                        タスクタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `FLOW_TASK_TYPE_UNSPECIFIED` | 不明 |
                        | `PROCEDURE` | 施術 |
                        | `ETCETERA` | その他 |
                    type: string
                    const: PROCEDURE
                    enum:
                        - PROCEDURE
                anesthesiaType:
                    description: |
                        麻酔タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `ANESTHESIA_TYPE_UNSPECIFIED` | 不明 |
                        | `SEDATION` | 睡眠麻酔 |
                        | `SPRAY` | スプレー麻酔 |
                        | `CREAM` | クリーム麻酔 |
                        | `DENTAL` | デンタル麻酔 |
                        | `GAS` | ガス麻酔 |
                        | `ICE` | アイス麻酔 |
                        | `CREAM_DENTAL` | クリーム+デンタル麻酔 |
                    type: string
                    enum:
                        - ANESTHESIA_TYPE_UNSPECIFIED
                        - SEDATION
                        - SPRAY
                        - CREAM
                        - DENTAL
                        - GAS
                        - ICE
                        - CREAM_DENTAL
                assigneeMemo:
                    description: 担当者メモ
                    type: string
                assignees:
                    description: 担当者リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskAssignee'
                calledDoctors:
                    description: 呼び出された医師リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskCalledDoctor'
                completedDateTimeUtc:
                    description: |-
                        タスク完了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                doctorAssignedDateTimeUtc:
                    description: |-
                        医師配置日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                doctorCallDateTime:
                    description: 医師呼び出し日時
                    type: string
                doctorMemo:
                    description: 医師メモ
                    type: string
                doctors:
                    description: 医師リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskDoctor'
                doctorsCalledZone:
                    description: 医師呼び出しゾーン
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskZone'
                memo:
                    description: メモ
                    type: string
                order:
                    description: 並び順
                    type: integer
                    format: int32
                paymentRequired:
                    description: 会計要否
                    type: boolean
                procedureConfiguration:
                    description: |-
                        施術タスク構成

                        `type`が`PROCEDURE`であるタスクの構成です。
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskProcedureConfiguration'
                purchaseId:
                    description: 会計ID
                    type: string
                readyDateTimeUtc:
                    description: |-
                        タスク準備日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                responsibleDoctor:
                    description: 責任医師
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskResponsibleDoctor'
                room:
                    description: 配置ルーム
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.RoomContract'
                roomAssignedDateTimeUtc:
                    description: |-
                        ルーム配置日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                sequence:
                    description: タスク順番
                    type: integer
                    format: int32
                signed:
                    description: 署名有無
                    type: boolean
                signedDateTimeUtc:
                    description: |-
                        署名日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time 形式です。
                    type: string
                    format: date-time
                status:
                    description: |
                        タスクステータス

                        | 値 | 意味 |
                        | --- | --- |
                        | `FLOW_TASK_STATUS_UNSPECIFIED` | 不明 |
                        | `WAITING` | 待機 |
                        | `READY` | 準備 |
                        | `DONE` | 完了 |
                        | `NOT_STARTED` | 開始前 |
                        | `CANCELED` | キャンセル |

                        `FLOW_TASK_STATUS_UNSPECIFIED` は、問題が発生した場合を除き使用しないデフォルト値です。
                    type: string
                    enum:
                        - FLOW_TASK_STATUS_UNSPECIFIED
                        - WAITING
                        - READY
                        - DONE
                        - NOT_STARTED
                        - CANCELED
                translsMap:
                    description: |-
                        多言語フィールド翻訳マップ

                        `title`の言語別翻訳文字列です。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            allOf:
                - not:
                    type: object
                    required:
                        - etceteraConfiguration
                    properties:
                        etceteraConfiguration: {}
        protos.schedule.flow.FlowTaskAssignee:
            type: object
            required:
                - id
                - name
                - role
            properties:
                name:
                    description: 担当者名
                    type: string
                id:
                    description: 担当者アカウントID
                    type: string
                role:
                    description: 担当者の役割
                    allOf:
                        - $ref: '#/components/schemas/protos.account.AccountRoleV2Contract'
        protos.schedule.flow.FlowTaskCalledDoctor:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 呼び出された医師名
                    type: string
                id:
                    description: 呼び出された医師アカウントID
                    type: string
        protos.schedule.flow.FlowTaskDoctor:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 医師名
                    type: string
                id:
                    description: 医師アカウントID
                    type: string
        protos.schedule.flow.FlowTaskEtceteraConfiguration:
            type: object
            required:
                - etceteraTaskId
                - name
            properties:
                name:
                    description: その他タスク名
                    type: string
                etceteraTaskId:
                    description: その他タスクID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        多言語フィールド翻訳マップ

                        `name`の言語別翻訳文字列です。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.schedule.flow.FlowTaskProcedureConfiguration:
            type: object
            properties:
                medicalServiceConfiguration:
                    description: 診療項目構成
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskProcedureConfiguration.MedicalServiceConfiguration'
                productOptionConfiguration:
                    description: 商品メニュー構成
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskProcedureConfiguration.ProductOptionConfiguration'
                ticketConfiguration:
                    description: 施術チケット構成
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskProcedureConfiguration.TicketConfiguration'
        protos.schedule.flow.FlowTaskProcedureConfiguration.MedicalServiceConfiguration:
            type: object
            required:
                - id
                - code
                - title
            properties:
                title:
                    description: 診療項目名
                    type: string
                code:
                    description: 診療項目コード
                    type: string
                id:
                    description: 診療項目ID
                    type: string
                    format: object-id
                machines:
                    description: 機器リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceMachine'
                medicines:
                    description: 薬品リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceMedicine'
                translsMap:
                    description: |-
                        多言語フィールド翻訳マップ

                        `title`の言語別翻訳文字列です。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: 単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.schedule.flow.FlowTaskProcedureConfiguration.ProductOptionConfiguration:
            type: object
            required:
                - optionId
                - optionTitle
                - procedure
            properties:
                medicineAndMachines:
                    description: 機器・薬リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                optionId:
                    description: 商品メニューID
                    type: string
                    format: object-id
                optionTitle:
                    description: 商品メニュー名
                    type: string
                procedure:
                    description: 施術情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                productTitle:
                    description: 商品名
                    type: string
                translsMap:
                    description: |-
                        多言語フィールド翻訳マップ

                        `optionTitle`と`productTitle`の言語別翻訳文字列です。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: 単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.schedule.flow.FlowTaskProcedureConfiguration.TicketConfiguration:
            type: object
            properties:
                round:
                    description: 施術チケット回次
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.ProcedureRound'
                ticketId:
                    description: 施術チケットID
                    type: string
        protos.schedule.flow.FlowTaskResponsibleDoctor:
            type: object
            required:
                - id
                - name
                - realName
            properties:
                name:
                    description: 責任医師名
                    type: string
                id:
                    description: 責任医師アカウントID
                    type: string
                realName:
                    description: 責任医師の実名
                    type: string
        protos.schedule.flow.FlowTaskZone:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: 区域名
                    type: string
                id:
                    description: 区域ID
                    type: string
                    format: object-id
        protos.schedule.flow.ProcedureRound:
            type: object
            required:
                - total
                - current
            properties:
                current:
                    description: 現在の回次
                    type: integer
                    format: int32
                total:
                    description: 全回次
                    type: integer
                    format: int32
        protos.schedule.reservation_time_slot.ReservationTimeSlot:
            type: object
            required:
                - dateTimeRangeUtc
                - available
            properties:
                available:
                    description: スロットの空き状況
                    type: boolean
                dateTimeRangeUtc:
                    description: スロット時間範囲
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
        protos.schedule.schedule.EtceteraWorkConfiguration:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: その他業務タイトル
                    type: string
                id:
                    description: その他業務設定ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        多言語翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.schedule.schedule.GetScheduleDetailQuery:
            type: object
            required:
                - scheduleId
            properties:
                scheduleId:
                    description: 照会するスケジュールID
                    type: string
                    format: uuid
        protos.schedule.schedule.GetScheduleDetailQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: スケジュール詳細情報
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleContract'
        protos.schedule.schedule.GetSchedulesByVisitorQuery:
            type: object
            required:
                - visitorId
            properties:
                deleted:
                    description: |-
                        削除済みスケジュールを含めるかどうか

                        レスポンスには削除されていないスケジュールのみが含まれます。
                    type: boolean
                endDateTimeUtc:
                    description: |-
                        照会範囲の終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                startDateTimeUtc:
                    description: |-
                        照会範囲の開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                visitorId:
                    description: 照会する患者ID
                    type: string
                    format: object-id
        protos.schedule.schedule.GetSchedulesByVisitorQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        スケジュールリスト

                        削除されていないスケジュールのみ含みます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleContract'
        protos.schedule.schedule.GetSchedulesSummarizedByTaskQuery:
            type: object
            required:
                - visitorId
            properties:
                deleted:
                    description: |-
                        削除済みスケジュールを含めるかどうか

                        レスポンスには削除されていないスケジュールのみが含まれます。
                    type: boolean
                paymentRequired:
                    description: |-
                        会計が必要な項目フィルター

                        設定すると、施術タスクリストを同じ会計必要有無の値でフィルタリングします。設定しない場合は、すべての施術タスクを返します。
                    type: boolean
                visitorId:
                    description: 照会する患者ID
                    type: string
                    format: object-id
        protos.schedule.schedule.GetSchedulesSummarizedByTaskQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        スケジュール別施術タスクサマリーリスト

                        削除されていないスケジュールのみ含みます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleSummarizedByTask'
        protos.schedule.schedule.Reaction:
            type: object
            required:
                - id
            properties:
                id:
                    description: リアクションID
                    type: string
        protos.schedule.schedule.ScheduleContract:
            type: object
            required:
                - id
                - visitor
                - flowStep
                - reservation
                - createdDateTimeUtc
                - tasks
                - purchaseIds
                - prescriptionIds
                - etceteraWorks
                - occupiedResources
            properties:
                consultation:
                    description: |-
                        カウンセリング情報

                        Deprecated. 単件カウンセリング情報です。複数件のカウンセリング情報は`consultations`を使用します。
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleDetailConsultationContract'
                consultations:
                    description: カウンセリングリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.consultation.ConsultationContract'
                createdDateTimeUtc:
                    description: |-
                        作成日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。
                    type: string
                    format: date-time
                deleted:
                    description: 削除有無
                    type: boolean
                etceteraWorks:
                    description: その他業務リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleEtceteraWork'
                flowStep:
                    description: |
                        現在の来院段階

                        | 値 | 意味 |
                        | --- | --- |
                        | `FLOW_STATUS_UNSPECIFIED` | 不明 |
                        | `RESERVED` | 予約済み |
                        | `RECEPTION` | 受付 |
                        | `CONSULTATION_WAITING` | カウンセリング待機 |
                        | `CONSULTATION` | カウンセリング |
                        | `PROCEDURE_WAITING` | 施術待機 |
                        | `PROCEDURE` | 施術 |
                        | `PROCEDURE_DONE` | 帰宅待ち |
                        | `COMPLETED` | 帰宅 |
                    type: string
                    enum:
                        - FLOW_STATUS_UNSPECIFIED
                        - RESERVED
                        - RECEPTION
                        - CONSULTATION_WAITING
                        - CONSULTATION
                        - PROCEDURE_WAITING
                        - PROCEDURE
                        - PROCEDURE_DONE
                        - COMPLETED
                flowStepUpdatedDateTimeUtc:
                    description: |-
                        来院段階変更日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。
                    type: string
                    format: date-time
                id:
                    description: スケジュールID
                    type: string
                    format: uuid
                occupiedResources:
                    description: 予約日程リソースリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.OccupiedResource'
                orderMemo:
                    description: オーダーメモ
                    type: string
                prescriptionIds:
                    description: 処方せんIDリスト
                    type: array
                    items:
                        type: string
                purchaseIds:
                    description: 会計IDリスト
                    type: array
                    items:
                        type: string
                purchases:
                    description: |-
                        会計リスト

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleDetailPurchaseContract'
                reactions:
                    description: リアクションリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleReaction'
                receptionDateTimeUtc:
                    description: |-
                        受付日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。
                    type: string
                    format: date-time
                receptionNumber:
                    description: 受付番号
                    type: integer
                    format: int32
                reservation:
                    description: 予約情報
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleDetailReservationContract'
                tasks:
                    description: 施術タスクリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTask'
                updatedDateTimeUtc:
                    description: |-
                        修正日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。
                    type: string
                    format: date-time
                visitor:
                    description: 患者情報
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleVisitorContract'
                visitorLocation:
                    description: 患者の位置
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.VisitorLocation'
                visitorRequest:
                    description: 患者のリクエスト事項
                    type: string
                zone:
                    description: 受付区域情報
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ZoneSummaryContract'
        protos.schedule.schedule.ScheduleDetailConsultationContract:
            type: object
            properties:
                consultationMemo:
                    description: カウンセリングメモ
                    type: string
                counselor:
                    description: カウンセラー
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Counselor'
                doctor:
                    description: 医師
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Doctor'
        protos.schedule.schedule.ScheduleDetailPurchaseContract:
            type: object
            required:
                - id
                - status
                - lastUpdatedDateTimeUtc
            properties:
                items:
                    description: 購入項目リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItem'
                id:
                    description: 会計ID
                    type: string
                lastUpdatedDateTimeUtc:
                    description: 最終修正日時
                    type: string
                status:
                    description: |-
                        会計状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `SCHEDULE_DETAIL_PURCHASE_STATUS_UNSPECIFIED` | 不明 |
                        | `REFUNDED` | 全額返金 |
                        | `PARTIALLY_REFUNDED` | 一部返金 |
                        | `APPROVED` | 承認済み |


                        Deprecated.
                    type: string
                    enum:
                        - SCHEDULE_DETAIL_PURCHASE_STATUS_UNSPECIFIED
                        - REFUNDED
                        - PARTIALLY_REFUNDED
                        - APPROVED
                transactions:
                    description: 取引リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.Transaction'
        protos.schedule.schedule.ScheduleDetailReservationContract:
            type: object
            required:
                - reservationGroupId
                - startDateTime
                - endDateTime
                - zoneId
                - status
                - requestedProcedures
                - connectedChannel
            properties:
                connectedChannel:
                    description: |
                        流入チャネル

                        | 値 | 意味 |
                        | --- | --- |
                        | `Channel_UNSPEICIFED` | 不明 |
                        | `GANGNAMUNNI` | カンナムオンニ |
                        | `HOMEPAGE` | ホームページ |
                        | `KOS_CONNECT` | KOS Connect |
                    type: string
                    enum:
                        - Channel_UNSPEICIFED
                        - GANGNAMUNNI
                        - HOMEPAGE
                        - KOS_CONNECT
                consultationRequired:
                    description: カウンセリング要否
                    type: boolean
                counselor:
                    description: 希望カウンセラー
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Counselor'
                desiredDischargeDateTimeUtc:
                    description: |-
                        帰宅希望日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                doctor:
                    description: |-
                        希望医師

                        Deprecated.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Doctor'
                endDateTime:
                    description: |-
                        予約終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                funnel:
                    description: 予約経路
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationFunnel'
                requestedProcedures:
                    description: 希望施術リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure'
                reservationAssignee:
                    description: 予約担当者
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationAssignee'
                reservationGroupId:
                    description: |-
                        予約グループID

                        Deprecated.
                    deprecated: true
                    type: string
                    format: object-id
                reservationMemo:
                    description: 予約メモ
                    type: string
                sedationRequired:
                    description: 睡眠麻酔要否
                    type: boolean
                startDateTime:
                    description: |-
                        予約開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                status:
                    description: |
                        予約状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `RESERVATION_STATUS_UNSPECIFIED` | 不明 |
                        | `RESERVED` | 予約済み |
                        | `CANCELED` | 予約キャンセル |
                        | `NO_SHOW` | ノーショー |
                        | `IN_PROGRESS` | 進行中 |
                        | `COMPLETED` | 完了 |
                    type: string
                    enum:
                        - RESERVATION_STATUS_UNSPECIFIED
                        - RESERVED
                        - CANCELED
                        - NO_SHOW
                        - IN_PROGRESS
                        - COMPLETED
                zoneId:
                    description: |-
                        区域ID

                        Deprecated.
                    deprecated: true
                    type: string
                    format: object-id
        protos.schedule.schedule.ScheduleEtceteraWork:
            type: object
            required:
                - sequence
                - status
                - memo
                - etceteraWorkConfiguration
            properties:
                assignees:
                    description: その他業務担当者リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleEtceteraWorkAssignee'
                etceteraWorkConfiguration:
                    description: その他業務設定
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.EtceteraWorkConfiguration'
                memo:
                    description: その他業務メモ
                    type: string
                sequence:
                    description: その他業務順序
                    type: integer
                    format: int32
                status:
                    description: |
                        その他業務状態

                        | 値 | 意味 |
                        | --- | --- |
                        | `STATUS_UNSPECIFIED` | 不明 |
                        | `WAITING` | 待機中 |
                        | `COMPLETED` | 完了 |
                        | `CANCELED` | キャンセル済み |
                    type: string
                    enum:
                        - STATUS_UNSPECIFIED
                        - WAITING
                        - COMPLETED
                        - CANCELED
        protos.schedule.schedule.ScheduleEtceteraWorkAssignee:
            type: object
            required:
                - id
                - name
                - role
            properties:
                name:
                    description: その他業務担当者名
                    type: string
                id:
                    description: その他業務担当者アカウントID
                    type: string
                role:
                    description: その他業務担当者役割
                    allOf:
                        - $ref: '#/components/schemas/protos.account.AccountRoleV2Contract'
        protos.schedule.schedule.ScheduleReaction:
            type: object
            required:
                - reaction
            properties:
                accounts:
                    description: リアクション済みアカウントリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleReactionAccount'
                reaction:
                    description: リアクション情報
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.Reaction'
        protos.schedule.schedule.ScheduleReactionAccount:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: アカウント名
                    type: string
                id:
                    description: アカウントID
                    type: string
        protos.schedule.schedule.ScheduleSummarizedByTask:
            type: object
            required:
                - scheduleId
                - startDateTimeUtc
                - endDateTimeUtc
                - tasks
            properties:
                endDateTimeUtc:
                    description: |-
                        予約終了日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。
                    type: string
                    format: date-time
                scheduleId:
                    description: スケジュールID
                    type: string
                    format: uuid
                startDateTimeUtc:
                    description: |-
                        予約開始日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。
                    type: string
                    format: date-time
                tasks:
                    description: |-
                        施術タスクリスト

                        `paymentRequired`を指定すると、同じ会計必要有無の値を持つ施術タスクのみが含まれます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTask'
        protos.schedule.schedule.ScheduleVisitorCategoryContract:
            type: object
            required:
                - id
                - name
                - order
            properties:
                name:
                    description: 患者カテゴリ名
                    type: string
                color:
                    description: カラー
                    type: string
                    enum:
                        - CodeColor_UNSPECIFIED
                        - RED
                        - LAVA
                        - ORANGE
                        - GREEN
                        - CYAN
                        - BLUE
                        - PURPLE
                        - MAGENTA
                        - GRAY
                id:
                    description: 患者カテゴリID
                    type: string
                order:
                    description: 並び順
                    type: integer
                    format: int32
        protos.schedule.schedule.ScheduleVisitorContract:
            type: object
            required:
                - id
                - name
                - chartNumber
            properties:
                name:
                    description: 患者名
                    type: string
                categories:
                    description: 患者カテゴリリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleVisitorCategoryContract'
                chartNumber:
                    description: カルテ番号
                    type: string
                dateOfBirth:
                    description: 生年月日
                    type: string
                gender:
                    description: |
                        性別

                        | 値 | 意味 |
                        | --- | --- |
                        | `GENDER_UNSPECIFIED` | 未指定 |
                        | `MALE` | 男性 |
                        | `FEMALE` | 女性 |
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                id:
                    description: 患者ID
                    type: string
                    format: object-id
                isNew:
                    description: 新規患者かどうか
                    type: boolean
                memo:
                    description: メモ
                    type: string
                nationality:
                    description: 国籍
                    type: string
                phone:
                    description: 電話番号
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                phoneticName:
                    description: 発音表記名
                    type: string
                snsInfo:
                    description: SNS情報
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.SnsInfo'
                visitorType:
                    description: 患者タイプ
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleVisitorTypeContract'
        protos.schedule.schedule.ScheduleVisitorTypeContract:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: 患者タイプ名
                    type: string
                id:
                    description: 患者タイプID
                    type: string
        protos.schedule.schedule.ZoneSummaryContract:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: 受付区域名
                    type: string
                id:
                    description: 受付区域ID
                    type: string
                    format: object-id
        protos.schedule.zone.GetZoneQuery:
            type: object
            required:
                - zoneId
            properties:
                zoneId:
                    description: 照会する区域ID
                    type: string
                    format: object-id
        protos.schedule.zone.GetZoneQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: 区域情報
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.zone.ZoneContract'
        protos.schedule.zone.GetZonesResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        区域リスト

                        `order` の昇順で並べ替えられます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.zone.ZoneContract'
        protos.schedule.zone.ZoneContract:
            type: object
            required:
                - id
                - title
                - order
                - isDefault
            properties:
                title:
                    description: 区域名
                    type: string
                id:
                    description: 区域ID
                    type: string
                    format: object-id
                isDefault:
                    description: デフォルト区域状態
                    type: boolean
                order:
                    description: 並べ替え順序
                    type: integer
                    format: int32
        protos.tenant.Code:
            type: object
            required:
                - id
                - category
                - name
                - order
                - closed
            properties:
                name:
                    description: コード名
                    type: string
                category:
                    description: |
                        コード分類

                        | 値 | 意味 |
                        | --- | --- |
                        | `CODE_CATEGORY_UNSPECIFIED` | 不明 |
                        | `FUNNEL` | 流入チャネル |
                        | `EXPOSURE_CHANNEL` | 公開チャネル |
                        | `ETCETRA_PRODUCT_CATEGORY` | その他商品分類 |
                        | `IMAGE_EQUIPMENT` | 撮影機器 |
                        | `CALL_CONSULTATION_RESULT` | 電話カウンセリング結果 |
                        | `IMAGE_CATEGORY` | 画像分類 |
                        | `FUNNEL_CATEGORY` | 流入チャネルカテゴリ |
                        | `VISITOR_CATEGORY` | 患者分類 |
                        | `ACCOUNT_STATUS` | アカウント状態 |
                        | `CONSULTATION_RESULT` | カウンセリング結果 |
                    type: string
                    enum:
                        - CODE_CATEGORY_UNSPECIFIED
                        - FUNNEL
                        - EXPOSURE_CHANNEL
                        - ETCETRA_PRODUCT_CATEGORY
                        - IMAGE_EQUIPMENT
                        - CALL_CONSULTATION_RESULT
                        - IMAGE_CATEGORY
                        - FUNNEL_CATEGORY
                        - VISITOR_CATEGORY
                        - ACCOUNT_STATUS
                        - CONSULTATION_RESULT
                closed:
                    description: 非活性化の有無
                    type: boolean
                color:
                    description: |
                        コードの色

                        | 値 | 意味 |
                        | --- | --- |
                        | `CodeColor_UNSPECIFIED` | 不明 |
                        | `RED` | 赤 |
                        | `LAVA` | ラバ |
                        | `ORANGE` | オレンジ |
                        | `GREEN` | 緑 |
                        | `CYAN` | シアン |
                        | `BLUE` | 青 |
                        | `PURPLE` | 紫 |
                        | `MAGENTA` | マゼンタ |
                        | `GRAY` | グレー |
                    type: string
                    enum:
                        - CodeColor_UNSPECIFIED
                        - RED
                        - LAVA
                        - ORANGE
                        - GREEN
                        - CYAN
                        - BLUE
                        - PURPLE
                        - MAGENTA
                        - GRAY
                default:
                    description: デフォルト選択の有無
                    type: boolean
                id:
                    description: コードID
                    type: string
                order:
                    description: 並べ替え順序
                    type: integer
                    format: int32
        protos.ticket.GetTicketBundlesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        使用可能な施術チケットバンドルリスト

                        削除されておらず、含まれる施術チケットの中に`AVAILABLE`ステータスが1つ以上あるバンドルのみを含みます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.ticket.TicketBundleContract'
        protos.ticket.PriceAmount:
            type: object
            required:
                - value
                - currency
            properties:
                value:
                    description: 金額
                    type: number
                    format: double
                currency:
                    description: |-
                        通貨コード

                        [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)標準の通貨コードです。例: `KRW`
                    type: string
        protos.ticket.ReferenceOptionConfiguration:
            type: object
            required:
                - optionId
                - optionTitle
                - productTitle
            properties:
                optionId:
                    description: 商品メニューID
                    type: string
                    format: object-id
                optionTitle:
                    description: 商品メニュータイトル
                    type: string
                productTitle:
                    description: 商品タイトル
                    type: string
                promotionConfiguration:
                    description: プロモーション情報
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.ReferenceOptionPromotionConfiguration'
                translsMap:
                    description: |-
                        商品メニューと商品タイトルの多言語翻訳マップ

                        キーは翻訳対象フィールド名、値は言語別翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.ticket.ReferenceOptionPromotionConfiguration:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: プロモーションタイトル
                    type: string
                id:
                    description: プロモーションID
                    type: string
                    format: object-id
        protos.ticket.TicketBundleContract:
            type: object
            required:
                - purchaseId
                - purchaseItemId
                - optionConfiguration
                - price
            properties:
                title:
                    description: 施術チケットバンドルタイトル
                    type: string
                optionConfiguration:
                    description: 商品メニュー情報
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.ReferenceOptionConfiguration'
                price:
                    description: |-
                        施術チケットバンドル金額

                        `CANCELED`ステータスの施術チケット金額は合計に含まれません。
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                purchaseId:
                    description: 会計ID
                    type: string
                    format: object-id
                purchaseItemId:
                    description: 購入項目ID
                    type: string
                    format: object-id
                ticketSets:
                    description: 施術チケットセットリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.ticket.TicketSetContract'
                translsMap:
                    description: |-
                        施術チケットバンドルタイトルの多言語翻訳マップ

                        キーは翻訳対象フィールド名、値は言語別翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
        protos.ticket.TicketContract:
            type: object
            required:
                - id
                - status
                - price
                - createdDateTimeUtc
            properties:
                createdDateTimeUtc:
                    description: |-
                        施術チケット作成日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time形式です。
                    type: string
                    format: date-time
                id:
                    description: |-
                        施術チケットID

                        UUID形式です。
                    type: string
                    format: uuid
                price:
                    description: 施術チケット金額
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                status:
                    description: |
                        施術チケットステータス

                        | 値 | 意味 |
                        | --- | --- |
                        | `TicketStatus_UNSPECIFIED` | 不明 |
                        | `AVAILABLE` | 使用可能 |
                        | `USED` | 使用完了 |
                        | `CANCELED` | キャンセル済み |
                        | `IN_USE` | 使用中 |
                    type: string
                    enum:
                        - TicketStatus_UNSPECIFIED
                        - AVAILABLE
                        - USED
                        - CANCELED
                        - IN_USE
        protos.ticket.TicketSetContract:
            type: object
            required:
                - procedure
                - ticketGroupId
            properties:
                title:
                    description: 施術チケットセットタイトル
                    type: string
                medicalService:
                    description: 診療項目
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: 施術に使用するデバイス／薬剤リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                procedure:
                    description: 施術情報
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                ticketGroupId:
                    description: 施術チケットグループID
                    type: string
                    format: object-id
                tickets:
                    description: 施術チケットリスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.ticket.TicketContract'
                translsMap:
                    description: |-
                        施術チケットセットタイトルの多言語翻訳マップ

                        キーは翻訳対象フィールド名、値は言語別翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: 施術単位
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.visitor.Answers:
            type: object
            required:
                - answerId
                - title
                - inputType
                - isSubText
                - subText
            properties:
                title:
                    description: 選択肢タイトル
                    type: string
                answerId:
                    description: 問診票選択肢ID
                    type: string
                inputType:
                    description: |
                        選択肢入力タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `CHECK_BOX` | チェックボックス |
                        | `SELECT_BOX` | セレクトボックス |
                        | `INPUT_BOX` | 入力ボックス |
                        | `DISCOUNT_SELECT_BOX` | 割引セレクトボックス |

                        `DISCOUNT_SELECT_BOX`は現在使用していない値です。
                    type: string
                    enum:
                        - CHECK_BOX
                        - SELECT_BOX
                        - INPUT_BOX
                        - DISCOUNT_SELECT_BOX
                isSubText:
                    description: 追加入力使用有無
                    type: boolean
                subText:
                    description: |-
                        追加入力テキスト

                        値がある場合、プレースホルダーとして使用されます。
                    type: string
                translsMap:
                    description: |-
                        選択肢翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.visitor.GetQuestionnaireLagacyQueryResponse:
            type: object
            required:
                - name
                - phoneNumber
                - address
                - addressDetail
                - dateOfBirth
                - gender
            properties:
                name:
                    description: 患者の氏名
                    type: string
                address:
                    description: 患者の住所
                    type: string
                addressDetail:
                    description: 患者の詳細住所
                    type: string
                agreements:
                    description: 規約同意項目リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.SubmittedQuestionnaireAgreement'
                dateOfBirth:
                    description: |-
                        患者の生年月日

                        文字列として返されます。
                    type: string
                gender:
                    description: |
                        患者の性別

                        | 値 | 意味 |
                        | --- | --- |
                        | `GENDER_UNSPECIFIED` | 未指定 |
                        | `MALE` | 男性 |
                        | `FEMALE` | 女性 |
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                pages:
                    description: |-
                        問診票ページリスト

                        ページは`id`基準で並べ替えられます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.Pages'
                phone:
                    description: 患者の携帯電話番号
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                phoneNumber:
                    description: |-
                        患者の携帯電話番号

                        Deprecated: `phone`フィールドを使用します。
                    deprecated: true
                    type: string
                phoneticName:
                    description: 患者の氏名（カタカナ）
                    type: string
        protos.visitor.GetQuestionnaireSubmitLegacyQueryResponse:
            type: object
            required:
                - id
                - visitorId
                - visitorName
                - phoneNumber
                - dateOfBirth
                - gender
            properties:
                address:
                    description: 患者の住所
                    type: string
                addressDetail:
                    description: 患者の詳細住所
                    type: string
                agreements:
                    description: 規約同意項目リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.SubmittedQuestionnaireAgreement'
                answers:
                    description: 問診回答リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.QuestionnaireSubmitAnswer'
                createdDateTimeUtc:
                    description: |-
                        初診問診票提出日時

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time形式です。
                    type: string
                    format: date-time
                dateOfBirth:
                    description: |-
                        患者の生年月日

                        `yyyyMMdd` 形式の8桁の文字列です。
                    type: string
                gender:
                    description: |
                        患者の性別

                        | 値 | 意味 |
                        | --- | --- |
                        | `GENDER_UNSPECIFIED` | 未指定 |
                        | `MALE` | 男性 |
                        | `FEMALE` | 女性 |
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                id:
                    description: 提出された初診問診票ID
                    type: string
                    format: object-id
                phone:
                    description: 患者の携帯電話番号
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                phoneNumber:
                    description: |-
                        患者電話番号

                        `phone` フィールドが存在する場合、このフィールドの代わりに `phone` を使用します。
                    type: string
                phoneticName:
                    description: 患者の氏名（カタカナ）
                    type: string
                visitorId:
                    description: 患者ID
                    type: string
                    format: object-id
                visitorName:
                    description: 患者名
                    type: string
        protos.visitor.Pages:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: 問診票ページタイトル
                    type: string
                id:
                    description: 問診票ページID
                    type: string
                questions:
                    description: |-
                        ページの質問リスト

                        質問は`sequence`基準で並べ替えられます。
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.Questions'
                translsMap:
                    description: |-
                        ページ翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.visitor.QuestionnaireAgreement:
            type: object
            required:
                - id
                - title
                - required
            properties:
                title:
                    description: 規約タイトル
                    type: string
                type:
                    description: |
                        規約タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `PERSONAL_INFORMATION` | 個人情報の収集および利用への同意 |
                        | `ADVERTISEMENT` | 広告メッセージ受信への同意 |
                        | `INFORMATIONAL_NOTIFICATION` | 情報メッセージ受信への同意 |
                    type: string
                    enum:
                        - PERSONAL_INFORMATION
                        - ADVERTISEMENT
                        - INFORMATIONAL_NOTIFICATION
                required:
                    description: 必須同意有無
                    type: boolean
                id:
                    description: 規約ID
                    type: string
                link:
                    description: 規約リンク
                    type: string
                translsMap:
                    description: |-
                        規約翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.visitor.QuestionnaireSubmitAnswer:
            type: object
            required:
                - seq
                - questionId
                - questionTitle
                - answerId
                - answerTitle
                - memo
            properties:
                answerId:
                    description: 選択済み回答ID
                    type: string
                answerTitle:
                    description: 選択済み回答タイトル
                    type: string
                memo:
                    description: 直接入力テキスト
                    type: string
                questionId:
                    description: 質問ID
                    type: string
                questionTitle:
                    description: 質問タイトル
                    type: string
                seq:
                    description: 表示順序
                    type: string
        protos.visitor.Questions:
            type: object
            required:
                - questionId
                - title
                - sequence
            properties:
                title:
                    description: 質問タイトル
                    type: string
                answers:
                    description: 質問の選択肢リスト
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.Answers'
                questionId:
                    description: 問診票質問ID
                    type: string
                sequence:
                    description: 質問順序
                    type: integer
                    format: int32
                translsMap:
                    description: |-
                        質問翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.visitor.SelectedAnswer:
            type: object
            required:
                - id
                - title
                - subText
                - inputText
                - parentQuestionId
                - parentQuestionTitle
                - inputType
            properties:
                title:
                    description: 選択した選択肢のタイトル
                    type: string
                id:
                    description: 選択した選択肢のID
                    type: string
                inputText:
                    description: |-
                        直接入力の回答

                        `inputType`が`INPUT_BOX`の場合、問診回答のメモとして保存されます。
                    type: string
                inputType:
                    description: |
                        選択肢の入力タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `CHECK_BOX` | チェックボックス |
                        | `SELECT_BOX` | セレクトボックス |
                        | `INPUT_BOX` | 入力ボックス |
                        | `DISCOUNT_SELECT_BOX` | 割引セレクトボックス |

                        `DISCOUNT_SELECT_BOX`は現在使用していない値です。
                    type: string
                    enum:
                        - CHECK_BOX
                        - SELECT_BOX
                        - INPUT_BOX
                        - DISCOUNT_SELECT_BOX
                parentQuestionId:
                    description: 親質問ID
                    type: string
                parentQuestionTitle:
                    description: 親質問タイトル
                    type: string
                subText:
                    description: |-
                        選択した選択肢の追加入力内容

                        `inputType`が`INPUT_BOX`でない場合、問診回答のメモとして保存されます。
                    type: string
        protos.visitor.SnsInfo:
            type: object
            required:
                - snsType
                - accountId
            properties:
                accountId:
                    description: SNSアカウントID
                    type: string
                snsType:
                    description: |
                        SNSタイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `etc` | その他 |
                        | `kakaotalk` | KakaoTalk |
                        | `line` | LINE |
                        | `instagram` | Instagram |
                        | `whatsapp` | WhatsApp |
                        | `wechat` | WeChat |
                    type: string
                    enum:
                        - etc
                        - kakaotalk
                        - line
                        - instagram
                        - whatsapp
                        - wechat
        protos.visitor.SubmittedQuestionnaireAgreement:
            type: object
            required:
                - id
                - title
                - required
                - agreed
            properties:
                title:
                    description: 規約タイトル
                    type: string
                type:
                    description: |
                        規約タイプ

                        | 値 | 意味 |
                        | --- | --- |
                        | `PERSONAL_INFORMATION` | 個人情報の収集および利用への同意 |
                        | `ADVERTISEMENT` | 広告メッセージ受信への同意 |
                        | `INFORMATIONAL_NOTIFICATION` | 情報メッセージ受信への同意 |
                    type: string
                    enum:
                        - PERSONAL_INFORMATION
                        - ADVERTISEMENT
                        - INFORMATIONAL_NOTIFICATION
                required:
                    description: 必須同意有無
                    type: boolean
                agreed:
                    description: 同意有無
                    type: boolean
                id:
                    description: 規約ID
                    type: string
                link:
                    description: 規約リンク
                    type: string
                translsMap:
                    description: |-
                        規約翻訳マップ

                        キーは言語コード、値は翻訳データです。
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
