openapi: 3.2.0
info:
    title: KOS OpenAPI
    version: 1.0.1
    description: |
        KOS OpenAPI is available only to development teams at hospitals that use the KOS solution.

        For details, contact the KOS sales representative for your hospital.

        This document can be checked through the [OpenAPI Spec](/openapi.yaml) file.

        ### API Request Method

        1. KOS OpenAPI uses POST for all requests, including queries, updates, and deletions.

        2. Except for authentication APIs, every request must include an Auth Token in the `Authorization` header. For details, see [Authentication](/docs/openapi/authorization).

        3. All error responses return the `400` status code regardless of error type. Check the error response details to identify the cause. For details, see [Error Response](#error-response).

        ### Date And Time Format

        Fields that convey date or time follow the format specified in each field description.

        Fields documented as `format: date-time` use [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time strings. Fields specified as UTC deliver values in the UTC timezone.

        ### Country Code Format

        Country codes used in product and target country queries are [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) strings.

        The country code for phone numbers follows the `countryCode` description in the phone number schema.

        <Callout type="caution">
        <p>For target countries used to decide which products to show and which prices to apply, <strong>"Other countries" is represented as <code>ETC</code></strong>.</p>
        <p>For details, see <a href="/docs/openapi/targetcountry">Target Country</a>.</p>
        </Callout>

        ### Error Response

        When a query or command cannot be processed successfully, the API returns a `400` HTTP status code with an error response like this:

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

        - `key`: the missing field name or the field name that has an invalid value
        - `reason`: the error reason
          - `TooShort`: the string is too short
          - `TooLong`: the string is too long
          - `Required`: a required field is missing
          - `Duplicated`: duplicated value
          - `InvalidTimeRange`: time range validation failed
          - `NotAvailable`: not available
          - `NotFound`: target not found
          - `TooSmall`: the value is too small
          - `TooBig`: the value is too large
servers:
    - description: Production
      url: https://open-api.kos-solution.com
    - description: Development
      url: https://open-api.kos-solution.dev
tags:
    - description: |
        ## Authentication Method

        All API requests, except those related to authentication, require an Auth Token.

        The Auth Token must be included in the HTTP Header.

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

        _\* A prefix such as `Bearer` is not required._

        <details>
        <summary>Key Concepts</summary>
        <dl>
        <dt>API Key</dt>
        <dd><strong>Definition:</strong> A server-side authentication key issued to the clinic by the KOS team.<br /><strong>Description:</strong> This is the input value used to obtain an authentication token. It must not be exposed to the client and should only be used server-side.</dd>
        <dt>Auth Token</dt>
        <dd><strong>Definition:</strong> A token sent in the <code>Authorization</code> header with each API request.<br /><strong>Description:</strong> Required for all requests except authentication-related APIs. The token may expire after a certain period of time, and calling with an expired token will return a <code>401</code> response.</dd>
        <dt>Auth Token Exchange</dt>
        <dd><strong>Definition:</strong> A server-side process for exchanging an API Key for an authentication token.<br /><strong>Description:</strong> This must only be performed server-side, as executing it on the client side may expose the API Key.</dd>
        <dt>Authorization Header</dt>
        <dd><strong>Definition:</strong> An HTTP header used to transmit the authentication token.<br /><strong>Description:</strong> Only the authentication token is included as the value; no prefix such as <code>Bearer</code> is added.</dd>
        </dl>
        </details>

        <Callout type="danger">
        <p><strong>Never expose your API Key or Auth Token to the client.</strong></p>
        <p>Take care that they are not exposed to or stored on the client.</p>
        <p>Auth Token exchange must also never be performed on the client side.</p>
        <p>If exposed, a malicious user could obtain the Auth Token and use the API.</p>
        <p>If exposed, you must immediately obtain a new API Key through the KOS team.</p>
        </Callout>

        To obtain an Auth Token, you need the API Key provided by the KOS team.

        You can obtain an Auth Token through the [Auth Token Exchange](/docs/openapi/exchange-token) API.

        ## Authentication Flow

        1. Obtain an API Key from the KOS team.
        2. On the server side, pass the API Key to the [Auth Token Exchange](/docs/openapi/exchange-token) API to obtain an Auth Token.
        3. Include the obtained Auth Token in the `Authorization` header of subsequent API requests.

        <Callout type="info">
        <p>API Key issuance, Auth Token exchange, and all calls that use the Auth Token must be performed on the server side only.</p>
        </Callout>

        ## Token Validity Period

        The Auth Token expires after a certain time. The validity period may vary according to KOS policy.

        ## Token Expiration Handling

        If you call the API with an expired token, a `401` status code is returned.

        In this case, call the [Auth Token Exchange](/docs/openapi/exchange-token) API again to obtain a new token, then retry the request.

        ## Token Management Strategy

        Rather than exchanging a new token for every request, we recommend managing tokens with the following strategy.

        - **Reuse**: Store the obtained token in server-side memory or cache and reuse it.
        - **401 Handling**: When an API request returns a `401` response, exchange the token again to refresh it and retry the failed request.

        Do not parse the token value to determine expiration; handle expiration via the API's `401` response.

        ## API Key Management

        - Store the API Key in server-side environment variables or a secret store, and do not include it in code repositories or on the client.
        - If the API Key is leaked or a leak is suspected, immediately obtain a new API Key through the KOS team.
      name: Authorization
      x-displayName: Authentication
    - description: |
        This is the API for images.

        It provides features for generating upload URLs and registering Client images.

        <details>
        <summary>Key Concepts</summary>
        <dl>
        <dt>presigned URL</dt>
        <dd><strong>Definition:</strong> A temporary upload URL issued to allow image files to be uploaded.<br /><strong>Description:</strong> Instead of sending files directly to the KOS API, upload the image binary to the URL in the response via a <code>PUT</code> request. The issued URL is valid for 5 minutes.</dd>
        <dt>Client Image</dt>
        <dd><strong>Definition:</strong> Image file information linked to and managed for a Client.<br /><strong>Description:</strong> After uploading a file, register it as a Client image by providing the file name, Client ID, image source, capture date and time, and other details.</dd>
        <dt>Image Source</dt>
        <dd><strong>Definition:</strong> A value that identifies where the image was generated.<br /><strong>Description:</strong> Indicates the context in which the image was created, such as in-clinic capture, Client capture, consent form, or pen chart.</dd>
        <dt>Capture Device Code</dt>
        <dd><strong>Definition:</strong> A code representing the device used to capture the image.<br /><strong>Description:</strong> Used to identify the capture device of an image by linking it to the device code managed by the clinic.</dd>
        <dt>Image Classification Code</dt>
        <dd><strong>Definition:</strong> A code used to classify images based on operational criteria.<br /><strong>Description:</strong> Used to organize images according to the image classification system defined by the clinic, such as progress photos or consultation materials.</dd>
        <dt>Image Folder Path</dt>
        <dd><strong>Definition:</strong> The path indicating the folder location to which an image belongs.<br /><strong>Description:</strong> Subfolders are separated by a slash (<code>/</code>), allowing Client images to be managed in a folder structure.</dd>
        </dl>
        </details>
      name: Image
      x-displayName: Image
    - description: |
        This is the API for prepaid cards.

        It provides features for querying a Client's prepaid card balance, prepaid card list, and prepaid card top-up events.

        <details>
        <summary>Key Concepts</summary>
        <dl>
        <dt>Prepaid Card</dt>
        <dd><strong>Definition:</strong> A card pre-loaded with a monetary amount or points that a Client can use at the clinic.<br /><strong>Description:</strong> The prepaid card list displays information such as card name, balance, linked Client, and expiration date.</dd>
        <dt>Prepaid Card Balance</dt>
        <dd><strong>Definition:</strong> The remaining prepaid card amount available for a Client to use.<br /><strong>Description:</strong> Cash balance and point balance may be provided separately, and can be checked in the balance inquiry by Client.</dd>
        <dt>Charging Event</dt>
        <dd><strong>Definition:</strong> A record of changes to the prepaid card amount.<br /><strong>Description:</strong> Events such as charge, use, use cancellation, refund, expiration, and deduction are used to track the cause of balance changes.</dd>
        <dt>Card Owner</dt>
        <dd><strong>Definition:</strong> The Client who paid for the prepaid card. Only one owner exists per prepaid card.<br /><strong>Description:</strong> A single prepaid card can be shared and used by multiple Clients, so the list shows whether each Client is the owner of that prepaid card.</dd>
        <dt>Amount Type</dt>
        <dd><strong>Definition:</strong> A value that distinguishes whether the prepaid card event amount is a cash balance or points.<br /><strong>Description:</strong> Required to correctly interpret event amounts when balances and points are managed separately.</dd>
        </dl>
        </details>
      name: PrepaidCard
      x-displayName: Prepaid Card
    - description: |
        This is the API related to products, product options, and product categories.

        <details>
        <summary>Key Concepts</summary>
        <dl>
        <dt>Product</dt>
        <dd><strong>Definition:</strong> A top-level item that the clinic sells to Clients or exposes as a bookable target.<br /><strong>Description:</strong> A single product can contain multiple product options, and it serves as the basic unit for product lists and product detail views.</dd>
        <dt>Product Option</dt>
        <dd><strong>Definition:</strong> An item that contains the treatment composition and pricing information that Clients actually select.<br /><strong>Description:</strong> Desired treatments for reservations, purchase items, and treatment tickets are typically linked at the product option level.</dd>
        <dt>Product Category</dt>
        <dd><strong>Definition:</strong> A value used to classify products.<br /><strong>Description:</strong> Used to filter product lists by category or to group products together on screen. Multiple categories can be assigned to a single product.</dd>
        <dt>Medical Service Item</dt>
        <dd><strong>Definition:</strong> A standard item representing a medical service or treatment provided by the clinic.<br /><strong>Description:</strong> By checking which medical service item a product option is linked to, the same treatment concept can be handled consistently across reservations, payments, and treatment tickets.</dd>
        <dt>Treatment Composition</dt>
        <dd><strong>Definition:</strong> Information about the treatments, equipment, medications, quantities, and units included in a product option.<br /><strong>Description:</strong> A single option can have one treatment composition, while a group option can include multiple compositions.</dd>
        <dt>Target Country</dt>
        <dd><strong>Definition:</strong> The target country for which a product is displayed or a price is applied.<br /><strong>Description:</strong> Since the products or prices shown may differ by country, this is used together with product retrieval and filtering.</dd>
        </dl>
        </details>
      name: Product
      x-displayName: Product
    - description: |
        Payment-related APIs.

        Provides payment lookup and Client-based payment lookup.

        <details>
        <summary>Key Concepts</summary>
        <dl>
        <dt>Payment</dt>
        <dd><strong>Definition:</strong> A unit for managing payment or billing details incurred by a Client.<br /><strong>Description:</strong> The payment list allows you to view Client information, payment date and time, person in charge, payment amount, and linked schedule information.</dd>
        <dt>Purchase Item</dt>
        <dd><strong>Definition:</strong> An individual item representing what a Client purchased within a single payment.<br /><strong>Description:</strong> Product options, other products, and prepaid card products can be included as purchase items.</dd>
        <dt>Transaction</dt>
        <dd><strong>Definition:</strong> A record of money exchanged within a payment.<br /><strong>Description:</strong> The transaction payment type, amount, and status show how purchase items were paid for.</dd>
        <dt>Client-Based Payment</dt>
        <dd><strong>Definition:</strong> Payment details linked to a specific Client.<br /><strong>Description:</strong> Searching by Client ID allows you to view the consolidated payment and billing history for that Client.</dd>
        <dt>Schedule Link</dt>
        <dd><strong>Definition:</strong> A relationship in which a payment record is linked to a specific visit schedule.<br /><strong>Description:</strong> Payment linked to a schedule is used to identify which visit or reservation generated the associated cost.</dd>
        </dl>
        </details>
      name: Purchase
      x-displayName: Payment
    - description: |
        This is the API for reservations and schedules.

        It provides features for creating reservations, modifying reservations, canceling reservations, querying reservation slots, reservation groups, zones, and schedule lookups.

        <details>
        <summary>Key Concepts</summary>
        <dl>
        <dt>Reservation</dt>
        <dd><strong>Definition:</strong> A scheduled request registered for a Client to visit the clinic at a specific time.<br /><strong>Description:</strong> The central subject of the reservation creation, modification, and cancellation APIs. When making a request, Client information, reservation group, zone, start/end time, and desired treatment information are submitted together.</dd>
        <dt>Schedule</dt>
        <dd><strong>Definition:</strong> Visit schedule information managed within the clinic's operational flow, based on reservations.<br /><strong>Description:</strong> The schedule lookup API allows you to view information required for actual visit management, such as Client details, reservations, payments, and treatment progress.</dd>
        <dt>Reservation Slot</dt>
        <dd><strong>Definition:</strong> A time interval during which a reservation can be created.<br /><strong>Description:</strong> Available time slots are queried based on conditions such as products, reservation groups, and existing schedules, and then used when submitting a reservation creation request.</dd>
        <dt>Reservation Group</dt>
        <dd><strong>Definition:</strong> A reservation unit that bundles and manages available reservation times, zones, resources, and policies.<br /><strong>Description:</strong> The slots displayed and the available reservation times may vary depending on which reservation group is used for booking.</dd>
        <dt>Zone</dt>
        <dd><strong>Definition:</strong> An area within the clinic to which a reservation or schedule is assigned.<br /><strong>Description:</strong> Used in reservation creation and slot queries to designate the space where a Client will visit or where a resource will be occupied.</dd>
        <dt>Occupied Time</dt>
        <dd><strong>Definition:</strong> Information that excludes a specific time slot from the reservable range or marks it as resource usage time.<br /><strong>Description:</strong> Creating an occupied time allows you to control the clinic so that reservations are not accepted during that period.</dd>
        <dt>Visit Stage</dt>
        <dd><strong>Definition:</strong> This is the stage indicating which visit stage the schedule is currently in.<br /><strong>Description:</strong> Used to query schedules based on the visit process, such as appointment, check-in, counseling, and treatment.</dd>
        </dl>
        </details>
      name: Schedule
      x-displayName: Schedule
    - description: |
        This is an API for querying clinic operation data by item.

        To protect personal information, personally identifiable data such as client name, phone number, and date of birth are not provided. Use `visitorChartNumber` (chart number) as the key for mapping clients to your clinic system.

        <details>
        <summary>Cursor-based Pagination</summary>

        Definition: A method of retrieving large amounts of data in sequential pages

        If `limit` is specified, the response will include `nextCursor`. Pass the `cursor` value as-is when requesting the next page. `totalCount` is only returned in the first response made without a `cursor`.
        </details>
      name: Statistics
      x-displayName: Statistics
    - description: |
        This is the API for target countries.

        Retrieves the list of target countries used in products.

        <details>
        <summary>Key Concepts</summary>
        <dl>
        <dt>Target Country</dt>
        <dd><strong>Definition:</strong> The target country where a product is exposed or prices are set.<br /><strong>Description:</strong> Used when applying different product configurations or pricing policies by country.</dd>
        <dt>Country Code</dt>
        <dd><strong>Definition:</strong> A code in ISO 3166-1 alpha-2 format that identifies a country.<br /><strong>Description:</strong> For example, Korea is represented as <code>KR</code> and Japan as <code>JP</code>, using two-letter codes.</dd>
        <dt>Other Countries (ETC)</dt>
        <dd><strong>Definition:</strong> A value representing all remaining countries not separated by individual country codes.<br /><strong>Description:</strong> Can be used as a common fallback when no country-specific settings are defined.</dd>
        <dt>Product Association</dt>
        <dd><strong>Definition:</strong> A relationship indicating which country a product is targeting.<br /><strong>Description:</strong> Retrieving the target country list first makes it easier to interpret country-related values in subsequent product responses.</dd>
        </dl>
        </details>
      name: TargetCountry
      x-displayName: Target Country
    - description: |
        This is the API related to treatment tickets.

        It provides functionality to retrieve treatment ticket bundles for a Client.

        <details>
        <summary>Key Concepts</summary>
        <dl>
        <dt>Treatment Ticket</dt>
        <dd><strong>Definition:</strong> A unit of entitlement that manages the use of purchased product options for actual treatments.<br /><strong>Description:</strong> It has statuses such as available, used, and cancelled, and is linked to treatment progress.</dd>
        <dt>Treatment Ticket Bundle</dt>
        <dd><strong>Definition:</strong> A unit that groups multiple treatment tickets generated from the same purchase item.<br /><strong>Description:</strong> When retrieving a Client's available treatment tickets, the product options, purchase information, and individual treatment ticket list are reviewed together.</dd>
        <dt>Product Option Link</dt>
        <dd><strong>Definition:</strong> Information indicating which product option a treatment ticket was generated from.<br /><strong>Description:</strong> The sales configuration of a treatment ticket can be confirmed through the product name, option name, and promotion information.</dd>
        <dt>Medical Service Item</dt>
        <dd><strong>Definition:</strong> The standard item of medical care or treatment that can be received with a treatment ticket.<br /><strong>Description:</strong> Used to understand which treatment a treatment ticket is applicable to and to link it with the treatment information in the schedule.</dd>
        <dt>Treatment Ticket Status</dt>
        <dd><strong>Definition:</strong> A value indicating the current availability of a treatment ticket.<br /><strong>Description:</strong> Status verification is required, as only available treatment tickets can be used for reservations or treatment progress.</dd>
        </dl>
        </details>
      name: Ticket
      x-displayName: Treatment Ticket
    - description: |
        This is the API for Clients.

        It provides features for querying Clients, querying duplicate Clients, searching Clients, and retrieving and submitting first-visit questionnaires.

        <details>
        <summary>Key Concepts</summary>
        <dl>
        <dt>Client</dt>
        <dd><strong>Definition:</strong> Customer information for a person who visits or makes a reservation at the clinic.<br /><strong>Description:</strong> Lookup and search are performed based on information such as name, phone number, chart number, date of birth, gender, and nationality.</dd>
        <dt>Client ID</dt>
        <dd><strong>Definition:</strong> A unique ID that identifies a Client.<br /><strong>Description:</strong> Used to link data from other domains, such as reservations, payments, treatment tickets, and prepaid cards, to a specific Client.</dd>
        <dt>Duplicate Client</dt>
        <dd><strong>Definition:</strong> An existing Client candidate who may be the same person.<br /><strong>Description:</strong> Used to check whether a Client has already been registered, based on criteria such as name, phone number, passport information, date of birth, and SNS information.</dd>
        <dt>First-Visit Questionnaire</dt>
        <dd><strong>Definition:</strong> Questionnaire information filled out by a Client before their first visit.<br /><strong>Description:</strong> Use the questionnaire retrieval API to check the form fields, and the submission API to submit the Client's responses.</dd>
        <dt>Integration Information</dt>
        <dd><strong>Definition:</strong> Linked information used to identify a Client from an external channel.<br /><strong>Description:</strong> User information from channels such as LINE and UNNI can be linked to a Client for use in duplicate checks or reservation creation.</dd>
        <dt>Marketing Communication Consent</dt>
        <dd><strong>Definition:</strong> Consent information related to whether a Client agrees to receive marketing communications.<br /><strong>Description:</strong> In the public API, marketing communication consent can be withdrawn based on phone number.</dd>
        </dl>
        </details>
      name: Visitor
      x-displayName: Client
paths:
    /image/open/v1/commands/generate-uploading-url:
        post:
            tags:
                - Image
            operationId: generateUploadingImageUrl
            summary: Issue image upload URL
            description: |
                This API does not upload image files directly; instead, it issues a presigned URL that can be used to upload image files.

                The upload flow is as follows:

                1. Pass a `fileName` that is unique per clinic to this API to obtain a presigned URL.
                2. Upload the image file binary via a `PUT` request to the `data` URL in the response.
                3. The issued URL is valid for 5 minutes. If the URL expires, obtain a new one and upload again.

                In the example below, `{presigned URL issued via this API}` is the `data` value in the response.

                ```bash
                curl -X PUT "{presigned URL issued via this API}" \
                  -H "Content-Type: image/jpeg" \
                  --data-binary "@./image.jpg"
                ```

                Set `Content-Type` according to the format of the image file to be uploaded.
            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: Register Client images
            description: Registers Client images.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: '`memo` must be 150 characters or fewer.'
                                    summary: When the memo exceeds 150 characters
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: memo
                                              reason: TooLong
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: Each folder name in `path` must be 200 characters or fewer.
                                    summary: When the folder name exceeds 200 characters
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: path
                                              reason: TooLong
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`path` cannot contain `*` or `?`.'
                                    summary: When the path contains characters that are not allowed
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: path
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
    /open/authorization/commands/exchange-token:
        post:
            tags:
                - Authorization
            operationId: exchangeToken
            summary: Exchange authentication token
            description: |-
                Exchanges the issued API Key for an authentication token.

                For the full authentication flow, refer to the [Authentication Method](/docs/openapi/authorization) document. Exchanging an authentication token is the only request that does not require authentication.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No API Key matching the provided `key` was found.
                                    summary: API Key is invalid
                                    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: List Product Categories
            description: Retrieves a list of product categories.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: The sortable field is `order`.
                                    summary: If the sort criteria is invalid
                                    value:
                                        className: InvalidRequestException
                                        errorProperties: []
                                        message: sort is invalid
                                        status: 400
    /procedure-menu/open/products/queries/get-product:
        post:
            tags:
                - Product
            operationId: getProduct
            summary: Retrieve product
            description: |-
                Retrieves detailed product information.

                Only the product options that can be exposed on the channel corresponding to the requested API Key are returned.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: When the product cannot be found
                                    summary: When the product cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: productId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: When there are no options available for display on the channel
                                    summary: When there are no options available for display on the channel
                                    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: Retrieve product list
            description: |-
                Retrieves the product list.

                Only products available for display on the channel corresponding to the requested API Key are returned.
            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: Search product options
            description: |-
                Searches product options.

                Searches only for product options that can be displayed on the channel corresponding to the requested 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: Retrieve target country list
            description: Retrieves the list of target countries configured for the hospital.
            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: Retrieve machine list
            description: Retrieves the list of non-deleted machines.
            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: Retrieve medical service list
            description: Retrieves the list of non-deleted medical services.
            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: Retrieve medicine list
            description: Retrieves the list of non-deleted medicines.
            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: Retrieve procedure list
            description: Retrieves the list of non-deleted procedures.
            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: Retrieve product option list
            description: Retrieves detailed information on product options.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: At least one `optionIds` value is required.
                                    summary: Product option ID list is empty
                                    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: Add product option
            description: Adds an option to a product.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No product exists for the given `productId`.
                                    summary: When the product cannot be found
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: productId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: The `medicalServiceId` included in the option configuration does not exist.
                                    summary: When the medical service cannot be found
                                    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: Create product
            description: Creates a product.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: One or more category IDs in `categoryIds` do not exist.
                                    summary: When a category cannot be found
                                    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: Delete product
            description: Deletes a product.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No product exists for the given `productId`.
                                    summary: When the product cannot be found
                                    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: Remove product option
            description: Removes a product option.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No product exists for the given `productId`.
                                    summary: When the product cannot be found
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: productId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: No product option exists for the given `id`.
                                    summary: When the product option cannot be found
                                    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: Update product information
            description: Updates product information.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No product exists for the given `id`.
                                    summary: When the product cannot be found
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: id
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: One or more category IDs in `categoryIds` do not exist.
                                    summary: When a category cannot be found
                                    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: Update product option
            description: Updates a product option.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No product exists for the given `productId`.
                                    summary: When the product cannot be found
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: productId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: No product option exists for the given `id`.
                                    summary: When the product option cannot be found
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: id
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: The `medicalServiceId` included in the option configuration does not exist.
                                    summary: When the medical service cannot be found
                                    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: Retrieve prepaid card events
            description: |-
                Retrieves charge, usage, usage cancellation, refund, expiration, and deduction events for a prepaid card.

                If no prepaid card matching the ID exists, an empty list is returned.
            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: Retrieve prepaid card list
            description: Retrieves the list of prepaid cards for a Client.
            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: Retrieve Client prepaid card combined balance
            description: Retrieves the combined cash balance and point balance of available prepaid cards held by the Client.
            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: Retrieve payment list
            description: Retrieves a list of payments.
            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: Retrieve Client payment list
            description: Retrieves the payment list for a Client.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: Client ID is empty
                                    summary: Client ID is empty
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
    /schedule/open/v1/commands/cancel-reservation:
        post:
            tags:
                - Schedule
            operationId: cancelReservation
            summary: Cancel reservation
            description: |-
                Cancels an existing reservation.

                Cancellation may be restricted depending on the reservation status and the clinic's cancellation policy.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: If the schedule corresponding to `scheduleId` has been deleted, it cannot be canceled.
                                    summary: When the schedule cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: Cannot be canceled if the reservation status is not `RESERVED`.
                                    summary: When the reservation status cannot be canceled
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: status
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_3:
                                    description: Occurs when reservation cancellation is not permitted under the hospital's reservation cancellation policy, or when the cancellation window has passed.
                                    summary: When cancellation is not allowed by the reservation cancellation policy
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: cancellationPolicy
                                              reason: NotAvailable
                                        message: ReservationNotAllowedByPolicy
                                        status: 400
                                error_4:
                                    description: '`CANCEL_RESERVATION_REASON_UNSPECIFIED` is a default value not used in general reservation cancellation requests.'
                                    summary: If the reservation cancellation reason is the default value
                                    value:
                                        className: InvalidRequestException
                                        errorProperties: []
                                        message: ""
                                        status: 400
    /schedule/open/v1/commands/change-flow-step:
        post:
            tags:
                - Schedule
            operationId: changeFlowStep
            summary: Change flow step
            description: Changes the flow step of a schedule.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No schedule exists for the given `scheduleId`.
                                    summary: Schedule cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: A counselor must be assigned before changing `step` to `CONSULTATION`.
                                    summary: No counselor assigned when changing to consultation step
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: counselor
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_3:
                                    description: At least one procedure must exist before changing `step` to `PROCEDURE_WAITING` or `PROCEDURE`.
                                    summary: No procedures assigned when changing to procedure step
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: procedures
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_4:
                                    description: All procedures must be completed before changing `step` to `COMPLETED`.
                                    summary: Incomplete procedures when changing to completed step
                                    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: Create time block
            description: Creates a time block.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: '`startDateTimeUtc` is not a valid date-time value.'
                                    summary: When the block start date and time is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: startDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`endDateTimeUtc` is not a valid date-time value.'
                                    summary: When the block end date and time is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`endDateTimeUtc` must be later than `startDateTimeUtc`, and both date-times must be less than 24 hours apart within the same date.'
                                    summary: When the time block range is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: InvalidTimeRange
                                        message: InvalidCommandException
                                        status: 400
                                error_4:
                                    description: The zone corresponding to `zoneId` cannot be found.
                                    summary: When the zone cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_5:
                                    description: The reservation group corresponding to `reservationGroupId` cannot be found.
                                    summary: When the reservation group cannot be found
                                    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: Reschedule by reservation time slot
            description: Changes the reservation date and time of an existing schedule based on a reservation time slot.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No schedule found for the given `scheduleId`.
                                    summary: When the schedule corresponding to `scheduleId` does not exist
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: Date and time change is not permitted due to the reservation modification policy, such as exceeding the reservation change deadline.
                                    summary: When the change is not permitted by the booking modification policy
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: modificationPolicy
                                              reason: NotAvailable
                                        message: ReservationNotAllowedByPolicy
                                        status: 400
                                error_3:
                                    description: A reservation cannot be created for the time specified in `reservationDateTimeRange`.
                                    summary: When the time slot is not available for booking
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationDateTimeRange
                                              reason: NotAvailable
                                        message: ReservationTimeNotAvailable
                                        status: 400
    /schedule/open/v1/commands/reserve:
        post:
            tags:
                - Schedule
            operationId: reserveCommand
            summary: Create a new reservation
            description: |-
                Creates a new reservation.

                Searches for an existing Client using Client information. If a matching Client is found, the reservation is created for that Client. If no matching Client is found, a new Client is created and then the reservation is created.

                This API is deprecated. For new development, use [V2 reservation creation](/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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: '`visitorName` cannot contain leading or trailing spaces.'
                                    summary: Client name has leading or trailing spaces
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: visitorName
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: Occurs during Client duplicate lookup or creation when `visitorPhone.phoneNumber` is invalid.
                                    summary: Client phone number is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phoneNumber
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: Occurs during Client creation when `visitorPhone.countryCode` is invalid.
                                    summary: Client phone country code is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: countryCode
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_4:
                                    description: Occurs during Client creation when `visitorPhone` cannot be parsed as a valid phone number.
                                    summary: Client phone number cannot be parsed
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phone
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_5:
                                    description: The Client to use for the reservation cannot be found during Client lookup or re-lookup after creation.
                                    summary: Client cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_6:
                                    description: A reservation with an overlapping time already exists for the same Client.
                                    summary: There is an overlapping reservation for the same Client
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_7:
                                    description: This occurs only when a hospital policy or Feature Flag is applied. If application is required, contact KOS.
                                    summary: Slot capacity is exceeded
                                    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: Create a new reservation by reservation time slot
            description: |-
                Creates a new reservation based on a reservation time slot.

                Searches for an existing Client using Client information. If no matching Client is found, a new Client is created and then the reservation is created.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: '`visitorName` cannot consist of whitespace only, and leading/trailing spaces are not allowed.'
                                    summary: When `visitorName` is an empty string or has leading/trailing whitespace
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: visitorName
                                              reason: NotAvailable
                                        message: InvalidVisitorName
                                        status: 400
                                error_2:
                                    description: No reservation rule found for the given `reservationRuleId`.
                                    summary: When the reservation rule does not exist
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotFound
                                        message: ReservationRuleNotFound
                                        status: 400
                                error_3:
                                    description: A reservation rule that is not in an active state cannot be used for slot lookup.
                                    summary: When the reservation rule is not activated
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotAvailable
                                        message: ReservationRuleNotActivated
                                        status: 400
                                error_4:
                                    description: A reservation cannot be created for the time specified in `reservationDateTimeRange`.
                                    summary: When the time slot is not available for booking
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationDateTimeRange
                                              reason: NotAvailable
                                        message: ReservationTimeNotAvailable
                                        status: 400
                                error_5:
                                    description: A reservation with overlapping time for `reservationDateTimeRange` already exists for the visitor.
                                    summary: When there is already an overlapping appointment for the same visitor
                                    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: Create a new reservation by reservation time slot and Client ID
            description: Creates a new reservation based on an existing Client ID and a reservation time slot.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No visitor found for the given `visitorId`.
                                    summary: When the visitor corresponding to `visitorId` does not exist
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: VisitorNotFound
                                        status: 400
                                error_2:
                                    description: No reservation rule found for the given `reservationRuleId`.
                                    summary: When the reservation rule does not exist
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotFound
                                        message: ReservationRuleNotFound
                                        status: 400
                                error_3:
                                    description: A reservation rule that is not in an active state cannot be used for slot lookup.
                                    summary: When the reservation rule is not activated
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotAvailable
                                        message: ReservationRuleNotActivated
                                        status: 400
                                error_4:
                                    description: A reservation cannot be created for the time specified in `reservationDateTimeRange`.
                                    summary: When the time slot is not available for booking
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationDateTimeRange
                                              reason: NotAvailable
                                        message: ReservationTimeNotAvailable
                                        status: 400
                                error_5:
                                    description: A reservation with overlapping time for `reservationDateTimeRange` already exists for the visitor.
                                    summary: When there is already an overlapping appointment for the same visitor
                                    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: Create reservation for existing Client
            description: |-
                Creates a reservation using an existing Client ID.

                This API is deprecated. For new development, use the [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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: A reservation with overlapping times already exists for the same Client.
                                    summary: There is an overlapping reservation for the same Client
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: The Client corresponding to `visitorId` cannot be found.
                                    summary: Client cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_3:
                                    description: This occurs only when a hospital policy or Feature Flag is applied. If application is required, contact KOS.
                                    summary: The slot capacity is exceeded
                                    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: Update reservation information
            description: |-
                Updates the reservation information of an existing schedule.

                This API is deprecated. For new development, use [V2 update reservation schedule](/docs/openapi/update-reservation-v-2).

                If there are two or more reservation schedules linked to the schedule, it cannot be updated through the 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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: The schedule corresponding to `scheduleId` cannot be found.
                                    summary: Schedule cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_10:
                                    description: The reservation cannot be changed due to the reservation change policy or the change deadline condition.
                                    summary: Reservation cannot be changed due to the reservation change policy
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: modificationPolicy
                                              reason: NotAvailable
                                        message: ReservationNotAllowedByPolicy
                                        status: 400
                                error_11:
                                    description: This occurs only when a hospital policy or Feature Flag is applied. If application is required, contact KOS.
                                    summary: Slot capacity is exceeded
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].reservationTime
                                              reason: NotAvailable
                                        message: ReservationCapacityExceeded
                                        status: 400
                                error_12:
                                    description: An overlapping reservation already exists for the same Client.
                                    summary: There is an overlapping reservation for the same Client
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: When the schedule ID is empty
                                    summary: When the schedule ID is empty
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: streamId
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_3:
                                    description: The reservation group corresponding to `reservationGroupId` cannot be found.
                                    summary: Reservation group cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: id
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_4:
                                    description: If the reservation group ID is empty
                                    summary: If the reservation group ID is empty
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: groupId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_5:
                                    description: The zone corresponding to `zoneId` cannot be found.
                                    summary: Reservation zone cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_6:
                                    description: If the reservation start date and time is empty
                                    summary: If the reservation start date and time is empty
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_7:
                                    description: If the reservation end date and time is empty
                                    summary: If the reservation end date and time is empty
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTime
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_8:
                                    description: If the reservation zone ID is empty
                                    summary: If the reservation zone ID is empty
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: InvalidCommandException
                                        status: 400
                                error_9:
                                    description: If a schedule has multiple reservation slots, the reservation slots cannot be updated with the V1 API.
                                    summary: Attempting to update a schedule with multiple reservation slots in 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: Update schedule consultation information
            description: Updates the consultation information of a schedule.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No schedule matching the provided `scheduleId` could be found.
                                    summary: Schedule not found
                                    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: Retrieve linked products
            description: Retrieves the list of products and options linked to a reservation group.
            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: Look up schedule by Payment ID
            description: Retrieves detailed schedule information linked to a payment.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No schedule matching the Payment ID can be found
                                    summary: No schedule matching the Payment ID can be found
                                    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: Retrieve reschedulable reservation time slots by schedule ID
            description: Retrieves time slots to which the reservation date and time of an existing schedule can be changed.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No schedule found for the given `scheduleId`.
                                    summary: When the schedule corresponding to `scheduleId` does not exist
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: ScheduleNotFound
                                        status: 400
                                error_2:
                                    description: Date and time change is not permitted due to the reservation modification policy, such as exceeding the reservation change deadline.
                                    summary: When the change is not permitted by the booking modification policy
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: modificationPolicy
                                              reason: NotAvailable
                                        message: ReservationNotAllowedByPolicy
                                        status: 400
                                error_3:
                                    description: Such as when it is not in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, or when the start time is later than the end time
                                    summary: If the format of `dateTimeRange` is invalid
                                    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: List reservation groups
            description: Retrieves a list of reservation groups.
            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: Retrieve booking rule list
            description: Retrieves the list of booking rules.
            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: Query reservation slots by reservation group
            description: Retrieves available reservation slots based on the reservation group.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: '`timezone` is not a valid IANA time zone database name.'
                                    summary: If the time zone is invalid
                                    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: Get reservation slots by product option
            description: |-
                Retrieves available reservation slots based on product option IDs.

                If no reservation group is linked to the product option, slots are retrieved based on the default reservation group.
            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: Retrieve reservation slots by schedule ID
            description: |-
                Retrieves reservation slots based on a schedule ID.

                Used to check available reservation slots before changing an existing reservation time. For new development, use `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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: '`startDateTimeUtc` is not a valid date-time value.'
                                    summary: When the start date and time of the query range is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: startDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`endDateTimeUtc` is not a valid date-time value.'
                                    summary: When the end date and time of the query range is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: This error occurs when `scheduleId` is an empty string.
                                    summary: When the schedule ID is an empty string
                                    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: Retrieve reservation time slots by booking rule
            description: Retrieves reservation time slots that match the booking rule and query conditions.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No reservation rule found for the given `reservationRuleId`.
                                    summary: When the reservation rule does not exist
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotFound
                                        message: ReservationRuleNotFound
                                        status: 400
                                error_2:
                                    description: A reservation rule that is not in an active state cannot be used for slot lookup.
                                    summary: When the reservation rule is not activated
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotAvailable
                                        message: ReservationRuleNotActivated
                                        status: 400
                                error_3:
                                    description: Such as when it is not in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, or when the start time is later than the end time
                                    summary: If the format of `dateTimeRange` is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: dateTimeRange
                                              reason: NotAvailable
                                        message: InvalidDateTimeRange
                                        status: 400
                                error_4:
                                    description: Unable to generate an occupancy plan based on the reservation rule.
                                    summary: When the occupancy plan based on the booking rule cannot be established
                                    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: Retrieve booking-rule reservation time slots by Client ID
            description: Retrieves reservation time slots using the Client ID and the Client attributes.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No visitor found for the given `visitorId`.
                                    summary: When the visitor corresponding to `visitorId` does not exist
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: No reservation rule found for the given `reservationRuleId`.
                                    summary: When the reservation rule does not exist
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotFound
                                        message: ReservationRuleNotFound
                                        status: 400
                                error_3:
                                    description: A reservation rule that is not in an active state cannot be used for slot lookup.
                                    summary: When the reservation rule is not activated
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: reservationRuleId
                                              reason: NotAvailable
                                        message: ReservationRuleNotActivated
                                        status: 400
                                error_4:
                                    description: Such as when it is not in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, or when the start time is later than the end time
                                    summary: If the format of `dateTimeRange` is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: dateTimeRange
                                              reason: NotAvailable
                                        message: InvalidDateTimeRange
                                        status: 400
                                error_5:
                                    description: Unable to generate an occupancy plan based on the reservation rule.
                                    summary: When the occupancy plan based on the booking rule cannot be established
                                    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: Get schedule detail
            description: Retrieves detailed schedule information.
            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: Query schedules by flowStep and reservation start date/time range
            description: Queries the schedule list by visit stage and reservation start date/time range.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: When the visit stage is invalid
                                    summary: When the visit stage is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: flowSteps
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`reservationStartDateTimeUtcFrom` is not a valid date-time value.'
                                    summary: When the query range start date and time is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: startDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`reservationStartDateTimeUtcTo` is not a valid date-time value.'
                                    summary: When the query range end date and time is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_4:
                                    description: '`reservationStartDateTimeUtcTo` is earlier than `reservationStartDateTimeUtcFrom`.'
                                    summary: When the query range end date and time is earlier than the start date and time
                                    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: List Client schedules
            description: Retrieves the schedule list for a Client.
            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: Retrieve Client procedure history
            description: Retrieves Client procedure history at the hospital, organized by schedule.
            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: Create a new reservation
            description: |-
                Creates a new reservation with multiple reservation schedules.

                Searches for an existing Client using Client information. If a matching Client is found, the reservation is created for that Client. If not, a new Client is created and then the reservation is created.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: '`visitorName` cannot contain leading or trailing spaces.'
                                    summary: Client name has leading or trailing spaces
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: visitorName
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_10:
                                    description: '`occupiedResources[].reservationGroup.reservationGroupId` is not a valid object-id.'
                                    summary: Reservation schedule reservation group ID format is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[].reservationGroup.reservationGroupId
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_11:
                                    description: The reservation group corresponding to `occupiedResources[].reservationGroup.reservationGroupId` cannot be found.
                                    summary: Reservation schedule reservation group cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[].reservationGroup.reservationGroupId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_12:
                                    description: Each `occupiedResources` entry requires a reservation group configuration.
                                    summary: The reservation schedule configuration is missing
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[0].configuration
                                              reason: Required
                                        message: MissingOccupiedResourceConfiguration
                                        status: 400
                                error_13:
                                    description: A reservation with overlapping time already exists for the same Client.
                                    summary: There is an overlapping reservation for the same Client
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_14:
                                    description: This occurs only when a hospital policy or Feature Flag is applied. If application is required, please contact KOS.
                                    summary: The slot capacity is exceeded
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].reservationTime
                                              reason: NotAvailable
                                        message: ReservationCapacityExceeded
                                        status: 400
                                error_2:
                                    description: Occurs during Client duplicate lookup or creation when `visitorPhone.phoneNumber` is invalid.
                                    summary: Client phone number is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phoneNumber
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: Occurs during Client creation when `visitorPhone.countryCode` is invalid.
                                    summary: Client phone country code is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: countryCode
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_4:
                                    description: Occurs during Client creation when `visitorPhone` cannot be parsed as a valid phone number.
                                    summary: Client phone number cannot be parsed
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phone
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_5:
                                    description: The Client to use for the reservation cannot be found during Client lookup or re-lookup after creation.
                                    summary: Client cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_6:
                                    description: At least one `occupiedResources` is required.
                                    summary: The reservation schedule is empty
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources
                                              reason: Required
                                        message: InvalidCommandException
                                        status: 400
                                error_7:
                                    description: The reservation start date/time of all `occupiedResources` must be on the same date.
                                    summary: The reservation schedules have different dates
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[1].reservationTime.startDateTimeUtc
                                              reason: NotAvailable
                                        message: DifferentDateInOccupiedResources
                                        status: 400
                                error_8:
                                    description: The zone corresponding to `zoneId` cannot be found.
                                    summary: No zone matches the zoneId
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: NotFoundZone
                                        status: 400
                                error_9:
                                    description: The `zoneId` in the reservation schedule does not belong to the corresponding reservation group.
                                    summary: The reservation schedule zone does not belong to the reservation group
                                    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: Create reservation for existing Client
            description: Creates a reservation with multiple reservation schedules using an existing Client 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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: The Client corresponding to `visitorId` cannot be found.
                                    summary: Client cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_10:
                                    description: This occurs only when a hospital policy or Feature Flag is applied. If application is required, please contact KOS.
                                    summary: The slot capacity is exceeded
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].reservationTime
                                              reason: NotAvailable
                                        message: ReservationCapacityExceeded
                                        status: 400
                                error_2:
                                    description: '`occupiedResources` requires at least one entry.'
                                    summary: The reservation schedule is empty
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources
                                              reason: Required
                                        message: OccupiedResourcesEmpty
                                        status: 400
                                error_3:
                                    description: The reservation start date/time of all `occupiedResources` must be on the same date.
                                    summary: The reservation schedules have different dates
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[1].reservationTime.startDateTimeUtc
                                              reason: NotAvailable
                                        message: DifferentDateInOccupiedResources
                                        status: 400
                                error_4:
                                    description: No zone matching `zoneId` could be found.
                                    summary: No zone matches the zoneId
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: NotFoundZone
                                        status: 400
                                error_5:
                                    description: The `zoneId` in the reservation schedule does not belong to the corresponding reservation group.
                                    summary: The reservation schedule zone does not belong to the reservation group
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].zoneId
                                              reason: NotFound
                                        message: ZoneNotInReservationGroup
                                        status: 400
                                error_6:
                                    description: '`occupiedResources[].reservationGroup.reservationGroupId` is not a valid object-id.'
                                    summary: Reservation schedule reservation group ID format is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[].reservationGroup.reservationGroupId
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_7:
                                    description: The reservation group corresponding to `occupiedResources[].reservationGroup.reservationGroupId` cannot be found.
                                    summary: Reservation schedule reservation group cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[].reservationGroup.reservationGroupId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_8:
                                    description: Each `occupiedResources` entry requires a reservation group configuration.
                                    summary: The reservation schedule configuration is missing
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[0].configuration
                                              reason: Required
                                        message: MissingOccupiedResourceConfiguration
                                        status: 400
                                error_9:
                                    description: A reservation with overlapping times already exists for the same Client.
                                    summary: There is an overlapping reservation for the same Client
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTime
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
    /schedule/open/v2/commands/update-reservation:
        post:
            tags:
                - Schedule
            operationId: updateReservationV2
            summary: Update reservation schedule
            description: |-
                Updates the reception zone and reservation schedule list of an existing reservation.

                Validates the reservation change policy and then applies the change.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: The schedule corresponding to `scheduleId` cannot be found.
                                    summary: Schedule cannot be found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: NotFoundSchedule
                                        status: 400
                                error_2:
                                    description: At least one `occupiedResources` entry is required.
                                    summary: The reservation schedule is empty
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources
                                              reason: Required
                                        message: OccupiedResourcesEmpty
                                        status: 400
                                error_3:
                                    description: The reservation start date/time of all `occupiedResources` must be on the same date.
                                    summary: The reservation schedules have different dates
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[1].reservationTime.startDateTimeUtc
                                              reason: NotAvailable
                                        message: DifferentDateInOccupiedResources
                                        status: 400
                                error_4:
                                    description: The zone corresponding to `zoneId` cannot be found.
                                    summary: No zone matches the zoneId
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: zoneId
                                              reason: NotFound
                                        message: NotFoundZone
                                        status: 400
                                error_5:
                                    description: The `zoneId` of the reservation schedule does not belong to the corresponding reservation group.
                                    summary: The reservation schedule zone does not belong to the reservation group
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].zoneId
                                              reason: NotFound
                                        message: ZoneNotInReservationGroup
                                        status: 400
                                error_6:
                                    description: Each `occupiedResources` entry requires a reservation group configuration.
                                    summary: The reservation schedule configuration is missing
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: occupiedResources[0].configuration
                                              reason: Required
                                        message: MissingOccupiedResourceConfiguration
                                        status: 400
                                error_7:
                                    description: The reservation cannot be modified due to the reservation modification policy or modification deadline conditions.
                                    summary: Modification is not allowed by the reservation modification policy
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: modificationPolicy
                                              reason: NotAvailable
                                        message: ReservationNotAllowedByPolicy
                                        status: 400
                                error_8:
                                    description: This occurs only when a hospital policy or Feature Flag is applied. Contact KOS if application is required.
                                    summary: The slot capacity is exceeded
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: occupiedResources[0].reservationTime
                                              reason: NotAvailable
                                        message: ReservationCapacityExceeded
                                        status: 400
                                error_9:
                                    description: An overlapping reservation already exists for the same Client.
                                    summary: There is an overlapping reservation for the same Client
                                    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: Retrieve reservation slots for multiple reservation groups
            description: Retrieves reservation slots for multiple reservation groups at once.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: At least one reservation group ID is required.
                                    summary: The reservation group ID list is empty
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: reservationGroupIds
                                              reason: Required
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: '`startDateTimeUtc` is not a valid date-time value.'
                                    summary: The start date-time of the query range is invalid
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: startDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_3:
                                    description: '`endDateTimeUtc` is not a valid date-time value.'
                                    summary: The end date-time of the query range is invalid
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidRequestException
                                        status: 400
                                error_4:
                                    description: '`endDateTimeUtc` cannot be earlier than `startDateTimeUtc`.'
                                    summary: The end date-time is earlier than the start date-time
                                    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: Retrieve available slots by schedule
            description: Retrieves available slots by reservation schedule for a specific schedule.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: This error occurs when `scheduleId` is an empty string.
                                    summary: When the schedule ID is an empty string
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: scheduleId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: '`startDateTimeUtc` is not a valid date-time value.'
                                    summary: When the start date and time of the query range is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: startDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: '`endDateTimeUtc` is not a valid date-time value.'
                                    summary: When the end date and time of the query range is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: endDateTimeUtc
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_4:
                                    description: '`endDateTimeUtc` cannot be earlier than `startDateTimeUtc`.'
                                    summary: When the end date and time of the query range is earlier than the start date and time
                                    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: Get zone
            description: Retrieves information for a specific zone.
            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: Get all zones
            description: Retrieves the list of zones registered in the hospital.
            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: Retrieve prepaid card history statistics
            description: Retrieves the list of prepaid card history statistics.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: '`limit` must be 1 or greater.'
                                    summary: When `limit` is 0 or less
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: limit
                                              reason: TooSmall
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`cursor` must be used together with `limit`.'
                                    summary: When `cursor` is sent without `limit`
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: limit
                                              reason: Required
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: The `cursor` value is not valid.
                                    summary: When `cursor` is invalid
                                    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: Retrieve procedure task statistics
            description: |
                Retrieves procedure task statistics data.

                **Errors**

                | Key | Reason | Description |
                | --- | --- | --- |
                | `limit` | `TooSmall` | When `limit` is less than 1 |
                | `limit` | `Required` | When `cursor` is provided but `limit` is missing |
                | `cursor` | `NotAvailable` | When `cursor` is invalid |
            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: Retrieve purchase item statistics
            description: |
                Retrieves purchase item statistics data.

                **Errors**

                | Key | Reason | Description |
                | --- | --- | --- |
                | `limit` | `TooSmall` | When `limit` is less than 1 |
                | `limit` | `Required` | When `cursor` is provided but `limit` is missing |
                | `cursor` | `NotAvailable` | When `cursor` is invalid |
            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: Retrieve schedule statistics
            description: |
                Retrieves schedule statistics data.

                At least one of the `reservationStartDateTimeUtc` range or `reservedDateTimeUtc` range must be provided.

                **Errors**

                | Key | Reason | Description |
                | --- | --- | --- |
                | `limit` | `TooSmall` | When `limit` is less than 1 |
                | `limit` | `Required` | When `cursor` is provided but `limit` is missing |
                | `cursor` | `NotAvailable` | When `cursor` is invalid |
                | `reservationDate` | `Required` | When neither reservation date range nor reservation created date range is provided |
            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: Retrieve transaction statistics
            description: Retrieves the list of transaction statistics.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: '`limit` must be 1 or greater.'
                                    summary: When `limit` is 0 or less
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: limit
                                              reason: TooSmall
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: '`cursor` must be used together with `limit`.'
                                    summary: When `cursor` is sent without `limit`
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: limit
                                              reason: Required
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: The `cursor` value is not valid.
                                    summary: When `cursor` is invalid
                                    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: Retrieve client statistics
            description: |
                Retrieves client statistics data.

                **Errors**

                | Key | Reason | Description |
                | --- | --- | --- |
                | `limit` | `TooSmall` | When `limit` is less than 1 |
                | `limit` | `Required` | When `cursor` is provided but `limit` is missing |
                | `cursor` | `NotAvailable` | When `cursor` is invalid |
            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: Retrieve available Client treatment ticket bundles
            description: Retrieves the list of available treatment ticket bundles for a Client.
            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: Unsubscribe from marketing communications
            description: |-
                Searches for Clients by phone number and revokes their consent to receive promotional marketing communications.

                A success response is returned even if no matching Clients are found.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: The `phoneNumber` in the request only accepts Korean phone numbers.
                                    summary: Phone number cannot be parsed
                                    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: Submit first-visit questionnaire for Client
            description: Saves the questionnaire responses and updates part of the Client's basic information based on the questionnaire response content.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: The combination of country code and mobile phone number passed via `phone` cannot be parsed.
                                    summary: When the mobile phone number cannot be parsed
                                    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: Look Up Already Registered Client ID
            description: |-
                Retrieves an already registered Client ID that matches the entered identification information.

                Duplicate lookup is performed in the following order: `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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: No request fields
                                    summary: No request fields
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: query
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: If the phone number cannot be parsed
                                    summary: If the phone number cannot be parsed
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phoneNumber
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
    /visitor/open/v1/queries/find-visitor:
        post:
            tags:
                - Visitor
            operationId: findVisitor
            summary: Search Clients
            description: |-
                Retrieves non-deleted Client information by Client name and phone number.

                This is a deprecated 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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: If the phone number is invalid
                                    summary: If the phone number is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phoneNumber
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: If the phone number cannot be parsed
                                    summary: If the phone number cannot be parsed
                                    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: Get first-visit questionnaire agreement items
            description: Retrieves the list of first-visit questionnaire agreement items configured by the hospital.
            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: Retrieve submitted first-visit questionnaire
            description: Retrieves the first-visit questionnaire response submitted by the Client.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: The Client corresponding to `visitorId` could not be found.
                                    summary: Client not found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
                                error_2:
                                    description: The submitted first-visit questionnaire response for the Client does not exist.
                                    summary: Submitted questionnaire not found
                                    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: Retrieve first-visit questionnaire for Client
            description: Retrieves the information required for a Client to fill out the first-visit questionnaire.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: The Client corresponding to `visitorId` could not be found.
                                    summary: Client not found
                                    value:
                                        className: InvalidRequestException
                                        errorProperties:
                                            - key: visitorId
                                              reason: NotFound
                                        message: InvalidRequestException
                                        status: 400
    /visitor/open/v1/queries/search-visitors:
        post:
            tags:
                - Visitor
            operationId: searchVisitors
            summary: Search Client Information
            description: Searches for Client information that matches the specified conditions.
            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: An error not listed here. It follows the common error response format. For details, see [Error Response](#error-response).
                                      title: Unknown error
                            examples:
                                error_1:
                                    description: If the date of birth is invalid
                                    summary: If the date of birth is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: dateOfBirth
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_2:
                                    description: If the email address is invalid
                                    summary: If the email address is invalid
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: email
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
                                error_3:
                                    description: If the phone number cannot be parsed
                                    summary: If the phone number cannot be parsed
                                    value:
                                        className: InvalidCommandException
                                        errorProperties:
                                            - key: phone
                                              reason: NotAvailable
                                        message: InvalidCommandException
                                        status: 400
components:
    securitySchemes:
        auth_token:
            name: Authorization
            description: Auth Token issued through [authentication token exchange](/docs/openapi/exchange-token)
            type: apiKey
            in: header
    schemas:
        AddProductOptionMedicalServiceNotFoundError:
            title: When the medical service cannot be found
            description: The `medicalServiceId` included in the option configuration does not exist.
            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: When the product cannot be found
            description: No product exists for the given `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: If the reservation cancellation reason is the default value
            description: '`CANCEL_RESERVATION_REASON_UNSPECIFIED` is a default value not used in general reservation cancellation requests.'
            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: When cancellation is not allowed by the reservation cancellation policy
            description: Occurs when reservation cancellation is not permitted under the hospital's reservation cancellation policy, or when the cancellation window has passed.
            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: When the reservation status cannot be canceled
            description: Cannot be canceled if the reservation status is not `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: When the schedule cannot be found
            description: If the schedule corresponding to `scheduleId` has been deleted, it cannot be canceled.
            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: No counselor assigned when changing to consultation step
            description: A counselor must be assigned before changing `step` to `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: Incomplete procedures when changing to completed step
            description: All procedures must be completed before changing `step` to `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: No procedures assigned when changing to procedure step
            description: At least one procedure must exist before changing `step` to `PROCEDURE_WAITING` or `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: Schedule cannot be found
            description: No schedule exists for the given `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: When the block end date and time is invalid
            description: '`endDateTimeUtc` is not a valid date-time value.'
            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: When the time block range is invalid
            description: '`endDateTimeUtc` must be later than `startDateTimeUtc`, and both date-times must be less than 24 hours apart within the same date.'
            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: When the reservation group cannot be found
            description: The reservation group corresponding to `reservationGroupId` cannot be found.
            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: When the block start date and time is invalid
            description: '`startDateTimeUtc` is not a valid date-time value.'
            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: When the zone cannot be found
            description: The zone corresponding to `zoneId` cannot be found.
            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: When a category cannot be found
            description: One or more category IDs in `categoryIds` do not exist.
            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: When the product cannot be found
            description: No product exists for the given `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: Phone number cannot be parsed
            description: The `phoneNumber` in the request only accepts Korean phone numbers.
            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 is invalid
            description: No API Key matching the provided `key` was found.
            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: If the phone number cannot be parsed
            description: If the phone number cannot be parsed
            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: No request fields
            description: No request fields
            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: No schedule matching the Payment ID can be found
            description: No schedule matching the Payment ID can be found
            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: If the phone number cannot be parsed
            description: If the phone number cannot be parsed
            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: If the phone number is invalid
            description: If the phone number is invalid
            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: If the sort criteria is invalid
            description: The sortable field is `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: When `cursor` is invalid
            description: The `cursor` value is not valid.
            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: When `cursor` is sent without `limit`
            description: '`cursor` must be used together with `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: When `limit` is 0 or less
            description: '`limit` must be 1 or greater.'
            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: Product option ID list is empty
            description: At least one `optionIds` value is required.
            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: When the product cannot be found
            description: When the product cannot be found
            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: Client ID is empty
            description: Client ID is empty
            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: Client not found
            description: The Client corresponding to `visitorId` could not be found.
            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: If the format of `dateTimeRange` is invalid
            description: Such as when it is not in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, or when the start time is later than the end 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: 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: When the change is not permitted by the booking modification policy
            description: Date and time change is not permitted due to the reservation modification policy, such as exceeding the reservation change deadline.
            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: When the schedule corresponding to `scheduleId` does not exist
            description: No schedule found for the given `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: If the time zone is invalid
            description: '`timezone` is not a valid IANA time zone database name.'
            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: The end date-time of the query range is invalid
            description: '`endDateTimeUtc` is not a valid date-time value.'
            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: The end date-time is earlier than the start date-time
            description: '`endDateTimeUtc` cannot be earlier than `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: The reservation group ID list is empty
            description: At least one reservation group ID is required.
            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: The start date-time of the query range is invalid
            description: '`startDateTimeUtc` is not a valid date-time value.'
            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: When the end date and time of the query range is invalid
            description: '`endDateTimeUtc` is not a valid date-time value.'
            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: When the schedule ID is an empty string
            description: This error occurs when `scheduleId` is an empty string.
            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: When the start date and time of the query range is invalid
            description: '`startDateTimeUtc` is not a valid date-time value.'
            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: When the end date and time of the query range is invalid
            description: '`endDateTimeUtc` is not a valid date-time value.'
            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: When the end date and time of the query range is earlier than the start date and time
            description: '`endDateTimeUtc` cannot be earlier than `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: When the schedule ID is an empty string
            description: This error occurs when `scheduleId` is an empty string.
            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: When the start date and time of the query range is invalid
            description: '`startDateTimeUtc` is not a valid date-time value.'
            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: If the format of `dateTimeRange` is invalid
            description: Such as when it is not in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, or when the start time is later than the end 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: 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: When the occupancy plan based on the booking rule cannot be established
            description: Unable to generate an occupancy plan based on the reservation rule.
            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: When the reservation rule is not activated
            description: A reservation rule that is not in an active state cannot be used for slot lookup.
            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: When the reservation rule does not exist
            description: No reservation rule found for the given `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: When the visitor corresponding to `visitorId` does not exist
            description: No visitor found for the given `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: If the format of `dateTimeRange` is invalid
            description: Such as when it is not in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format, or when the start time is later than the end 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: 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: When the occupancy plan based on the booking rule cannot be established
            description: Unable to generate an occupancy plan based on the reservation rule.
            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: When the reservation rule is not activated
            description: A reservation rule that is not in an active state cannot be used for slot lookup.
            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: When the reservation rule does not exist
            description: No reservation rule found for the given `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: When the visit stage is invalid
            description: When the visit stage is invalid
            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: When the query range end date and time is earlier than the start date and time
            description: '`reservationStartDateTimeUtcTo` is earlier than `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: When the query range start date and time is invalid
            description: '`reservationStartDateTimeUtcFrom` is not a valid date-time value.'
            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: When the query range end date and time is invalid
            description: '`reservationStartDateTimeUtcTo` is not a valid date-time value.'
            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: When `cursor` is invalid
            description: The `cursor` value is not valid.
            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: When `cursor` is sent without `limit`
            description: '`cursor` must be used together with `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: When `limit` is 0 or less
            description: '`limit` must be 1 or greater.'
            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: Client not found
            description: The Client corresponding to `visitorId` could not be found.
            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: Error field path
                    type: string
                reason:
                    description: Error reason
                    allOf:
                        - $ref: '#/components/schemas/ErrorReason'
        KosErrorResponse:
            type: object
            required:
                - status
                - message
                - className
            properties:
                properties:
                    description: Error property list
                    type: array
                    items:
                        type: string
                className:
                    description: Error class name
                    type: string
                errorProperties:
                    description: Field error property list
                    type: array
                    items:
                        $ref: '#/components/schemas/KosErrorProperties'
                message:
                    description: Error message
                    type: string
                status:
                    description: HTTP status code
                    type: integer
        RegisterVisitorImagesMemoTooLongError:
            title: When the memo exceeds 150 characters
            description: '`memo` must be 150 characters or fewer.'
            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: When the path contains characters that are not allowed
            description: '`path` cannot contain `*` or `?`.'
            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: When the folder name exceeds 200 characters
            description: Each folder name in `path` must be 200 characters or fewer.
            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: When the product cannot be found
            description: No product exists for the given `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: When the product option cannot be found
            description: No product option exists for the given `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: When the change is not permitted by the booking modification policy
            description: Date and time change is not permitted due to the reservation modification policy, such as exceeding the reservation change deadline.
            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: When the time slot is not available for booking
            description: A reservation cannot be created for the time specified in `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: When the schedule corresponding to `scheduleId` does not exist
            description: No schedule found for the given `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: When there is already an overlapping appointment for the same visitor
            description: A reservation with overlapping time for `reservationDateTimeRange` already exists for the visitor.
            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: When `visitorName` is an empty string or has leading/trailing whitespace
            description: '`visitorName` cannot consist of whitespace only, and leading/trailing spaces are not allowed.'
            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: When the reservation rule is not activated
            description: A reservation rule that is not in an active state cannot be used for slot lookup.
            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: When the reservation rule does not exist
            description: No reservation rule found for the given `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: When the time slot is not available for booking
            description: A reservation cannot be created for the time specified in `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: When there is already an overlapping appointment for the same visitor
            description: A reservation with overlapping time for `reservationDateTimeRange` already exists for the visitor.
            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: When the reservation rule is not activated
            description: A reservation rule that is not in an active state cannot be used for slot lookup.
            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: When the reservation rule does not exist
            description: No reservation rule found for the given `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: When the time slot is not available for booking
            description: A reservation cannot be created for the time specified in `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: When the visitor corresponding to `visitorId` does not exist
            description: No visitor found for the given `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: There is an overlapping reservation for the same Client
            description: A reservation with overlapping times already exists for the same Client.
            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: The slot capacity is exceeded
            description: This occurs only when a hospital policy or Feature Flag is applied. If application is required, contact 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: The reservation schedule configuration is missing
            description: Each `occupiedResources` entry requires a reservation group configuration.
            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: Reservation schedule reservation group ID format is invalid
            description: '`occupiedResources[].reservationGroup.reservationGroupId` is not a valid 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: Reservation schedule reservation group cannot be found
            description: The reservation group corresponding to `occupiedResources[].reservationGroup.reservationGroupId` cannot be found.
            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: The reservation schedule zone does not belong to the reservation group
            description: The `zoneId` in the reservation schedule does not belong to the corresponding reservation group.
            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: The reservation schedules have different dates
            description: The reservation start date/time of all `occupiedResources` must be on the same date.
            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: The reservation schedule is empty
            description: '`occupiedResources` requires at least one entry.'
            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: There is an overlapping reservation for the same Client
            description: A reservation with overlapping times already exists for the same Client.
            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: The slot capacity is exceeded
            description: This occurs only when a hospital policy or Feature Flag is applied. If application is required, please contact 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: Client cannot be found
            description: The Client corresponding to `visitorId` cannot be found.
            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: No zone matches the zoneId
            description: No zone matching `zoneId` could be found.
            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: Client cannot be found
            description: The Client corresponding to `visitorId` cannot be found.
            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: There is an overlapping reservation for the same Client
            description: A reservation with an overlapping time already exists for the same Client.
            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: Slot capacity is exceeded
            description: This occurs only when a hospital policy or Feature Flag is applied. If application is required, contact 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: Client name has leading or trailing spaces
            description: '`visitorName` cannot contain leading or trailing spaces.'
            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: Client cannot be found
            description: The Client to use for the reservation cannot be found during Client lookup or re-lookup after creation.
            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: Client phone country code is invalid
            description: Occurs during Client creation when `visitorPhone.countryCode` is invalid.
            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: Client phone number cannot be parsed
            description: Occurs during Client creation when `visitorPhone` cannot be parsed as a valid phone number.
            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: Client phone number is invalid
            description: Occurs during Client duplicate lookup or creation when `visitorPhone.phoneNumber` is invalid.
            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: The reservation schedule configuration is missing
            description: Each `occupiedResources` entry requires a reservation group configuration.
            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: Reservation schedule reservation group ID format is invalid
            description: '`occupiedResources[].reservationGroup.reservationGroupId` is not a valid 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: Reservation schedule reservation group cannot be found
            description: The reservation group corresponding to `occupiedResources[].reservationGroup.reservationGroupId` cannot be found.
            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: The reservation schedule zone does not belong to the reservation group
            description: The `zoneId` in the reservation schedule does not belong to the corresponding reservation group.
            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: The reservation schedules have different dates
            description: The reservation start date/time of all `occupiedResources` must be on the same date.
            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: The reservation schedule is empty
            description: At least one `occupiedResources` is required.
            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: There is an overlapping reservation for the same Client
            description: A reservation with overlapping time already exists for the same Client.
            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: The slot capacity is exceeded
            description: This occurs only when a hospital policy or Feature Flag is applied. If application is required, please contact 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: Client name has leading or trailing spaces
            description: '`visitorName` cannot contain leading or trailing spaces.'
            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: Client cannot be found
            description: The Client to use for the reservation cannot be found during Client lookup or re-lookup after creation.
            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: Client phone country code is invalid
            description: Occurs during Client creation when `visitorPhone.countryCode` is invalid.
            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: Client phone number cannot be parsed
            description: Occurs during Client creation when `visitorPhone` cannot be parsed as a valid phone number.
            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: Client phone number is invalid
            description: Occurs during Client duplicate lookup or creation when `visitorPhone.phoneNumber` is invalid.
            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: No zone matches the zoneId
            description: The zone corresponding to `zoneId` cannot be found.
            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: If the date of birth is invalid
            description: If the date of birth is invalid
            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: If the email address is invalid
            description: If the email address is invalid
            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: If the phone number cannot be parsed
            description: If the phone number cannot be parsed
            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: When the mobile phone number cannot be parsed
            description: The combination of country code and mobile phone number passed via `phone` cannot be parsed.
            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: When a category cannot be found
            description: One or more category IDs in `categoryIds` do not exist.
            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: When the product cannot be found
            description: No product exists for the given `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: When the medical service cannot be found
            description: The `medicalServiceId` included in the option configuration does not exist.
            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: When the product cannot be found
            description: No product exists for the given `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: When the product option cannot be found
            description: No product option exists for the given `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: If the reservation end date and time is empty
            description: If the reservation end date and time is empty
            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: Reservation cannot be changed due to the reservation change policy
            description: The reservation cannot be changed due to the reservation change policy or the change deadline condition.
            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: Attempting to update a schedule with multiple reservation slots in V1
            description: If a schedule has multiple reservation slots, the reservation slots cannot be updated with the 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: There is an overlapping reservation for the same Client
            description: An overlapping reservation already exists for the same Client.
            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: Slot capacity is exceeded
            description: This occurs only when a hospital policy or Feature Flag is applied. If application is required, contact 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: If the reservation group ID is empty
            description: If the reservation group ID is empty
            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: Reservation group cannot be found
            description: The reservation group corresponding to `reservationGroupId` cannot be found.
            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: When the schedule ID is empty
            description: When the schedule ID is empty
            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: Schedule cannot be found
            description: The schedule corresponding to `scheduleId` cannot be found.
            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: If the reservation start date and time is empty
            description: If the reservation start date and time is empty
            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: Modification is not allowed by the reservation modification policy
            description: The reservation cannot be modified due to the reservation modification policy or modification deadline conditions.
            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: The reservation schedule configuration is missing
            description: Each `occupiedResources` entry requires a reservation group configuration.
            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: The reservation schedule zone does not belong to the reservation group
            description: The `zoneId` of the reservation schedule does not belong to the corresponding reservation group.
            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: The reservation schedules have different dates
            description: The reservation start date/time of all `occupiedResources` must be on the same date.
            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: The reservation schedule is empty
            description: At least one `occupiedResources` entry is required.
            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: There is an overlapping reservation for the same Client
            description: An overlapping reservation already exists for the same Client.
            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: The slot capacity is exceeded
            description: This occurs only when a hospital policy or Feature Flag is applied. Contact KOS if application is required.
            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: Schedule cannot be found
            description: The schedule corresponding to `scheduleId` cannot be found.
            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: No zone matches the zoneId
            description: The zone corresponding to `zoneId` cannot be found.
            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: If the reservation zone ID is empty
            description: If the reservation zone ID is empty
            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: Reservation zone cannot be found
            description: The zone corresponding to `zoneId` cannot be found.
            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: Schedule not found
            description: No schedule matching the provided `scheduleId` could be found.
            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: |-
                        Range end date and time

                        This value is not included in the range.
                    type: string
                    format: date-time
                startDateTimeUtc:
                    description: |-
                        Range start date and time

                        This value is included in the range.
                    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: |-
                        International calling country code

                        Provide numbers only, without the `+` prefix. Refer to [international calling country codes](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) for the list of country codes.
                    type: string
                phoneNumber:
                    description: |-
                        Phone number

                        Provide numbers only, without hyphens or separators. Refer to [libphonenumber](https://github.com/google/libphonenumber) for format validation.
                    type: string
        protos.Sort:
            type: object
            required:
                - by
                - order
            properties:
                by:
                    description: Sort Criteria Field
                    type: string
                order:
                    description: |
                        Sort Direction

                        | Value | Meaning |
                        | --- | --- |
                        | `Order_UNKNOWN` | Unknown |
                        | `ASC` | Ascending |
                        | `DESC` | Descending |
                    type: string
                    enum:
                        - Order_UNKNOWN
                        - ASC
                        - DESC
        protos.Transls:
            type: object
            properties:
                translation:
                    description: |-
                        Translation map by language

                        The key is the language code, and the value is the translated string.
                    type: object
                    additionalProperties:
                        type: string
        protos.account.AccountRoleV2Contract:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Role name
                    type: string
                id:
                    description: Role ID
                    type: string
                roleTags:
                    description: |
                        Role tag list

                        | Value | Meaning |
                        | --- | --- |
                        | `ROLE_TAG_UNSPECIFIED` | Unknown |
                        | `ADMIN` | Administrator |
                        | `DOCTOR` | Doctor |
                        | `COUNSELOR` | Counselor |
                        | `NURSE` | Nurse |
                        | `SKINCARE` | Skincare |
                        | `CALL_COUNSELOR` | Call counselor |
                        | `COORDINATOR` | 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: Image category code
                    allOf:
                        - $ref: '#/components/schemas/protos.tenant.Code'
                equipment:
                    description: Imaging equipment code
                    allOf:
                        - $ref: '#/components/schemas/protos.tenant.Code'
                fileName:
                    description: Image file name
                    type: string
                memo:
                    description: |-
                        Image memo

                        Must be 150 characters or fewer.
                    type: string
                    maxLength: 150
                path:
                    description: |-
                        Image folder path

                        Use a slash (`/`) to separate subfolders. Each folder name must be 200 characters or fewer, and `*` and `?` cannot be used.
                    type: string
                    pattern: ^[^*?]*$
                scheduleId:
                    description: Connected schedule ID
                    type: string
                    format: uuid
                shootingDateTimeUtc:
                    description: |-
                        Image capture date and time

                        Provide an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time string with offset.
                    type: string
                    format: date-time
                source:
                    description: |
                        Image source

                        | Value | Meaning |
                        | --- | --- |
                        | `VISITOR_IMAGE_SOURCE_UNSPECIFIED` | Unknown |
                        | `HOSPITAL` | In-clinic capture |
                        | `VISITOR` | Client capture |
                        | `AGREEMENT` | Consent form |
                        | `PEN_CHART` | Pen chart |
                    type: string
                    enum:
                        - VISITOR_IMAGE_SOURCE_UNSPECIFIED
                        - HOSPITAL
                        - VISITOR
                        - AGREEMENT
                        - PEN_CHART
                visitorId:
                    description: Client ID to associate with the image
                    type: string
                    format: object-id
        protos.open.CreateReservationFunnel:
            type: object
            properties:
                funnelCategoryName:
                    description: |-
                        Funnel category name

                        If it matches an existing code name, that code will be used; if not, a new code will be created. If matched to a deactivated code, it will be ignored.
                    type: string
                funnelDetail:
                    description: Detailed referral source
                    type: string
                funnelName:
                    description: |-
                        Funnel name

                        If it matches an existing code name, that code will be used; if not, a new code will be created. If matched to a deactivated code, it will be ignored.
                    type: string
        protos.open.CreateReservationRequestedProcedure:
            type: object
            oneOf:
                - properties:
                    ticket:
                        description: Requested procedure based on a ticket
                        allOf:
                            - $ref: '#/components/schemas/protos.open.CreateReservationRequestedProcedure.ReservationRequestedTicketConfiguration'
                  required:
                    - ticket
                  title: Requested procedure based on a ticket
                  type: object
                - properties:
                    option:
                        description: Requested procedure based on a product option
                        allOf:
                            - $ref: '#/components/schemas/protos.open.CreateReservationRequestedProcedure.ReservationRequestedOptionConfiguration'
                  required:
                    - option
                  title: Requested procedure based on a product option
                  type: object
        protos.open.CreateReservationRequestedProcedure.ReservationRequestedOptionConfiguration:
            type: object
            required:
                - optionId
            properties:
                optionId:
                    description: Requested product option ID
                    type: string
                    format: object-id
                visitorTypeId:
                    description: Client type ID
                    type: string
                    format: object-id
        protos.open.CreateReservationRequestedProcedure.ReservationRequestedTicketConfiguration:
            type: object
            required:
                - ticketId
            properties:
                ticketId:
                    description: Requested ticket ID
                    type: string
                    format: object-id
        protos.open.DisableAdvertisingAgreementToVisitorsCommand:
            type: object
            required:
                - phoneNumber
            properties:
                phoneNumber:
                    description: |-
                        Phone number of the Client whose marketing communication consent will be withdrawn

                        * Only Korean phone numbers are accepted.
                    type: string
        protos.open.ExchangeTokenCommand:
            type: object
            required:
                - key
            properties:
                key:
                    description: |-
                        API Key

                        The API Key to exchange for an authentication token. Use the value issued by the KOS team, and do not expose it to the client—use it only on the server side.
                    type: string
                    format: uuid
        protos.open.ExchangeTokenResponse:
            type: object
            required:
                - token
            properties:
                token:
                    description: |-
                        Authentication token

                        The token sent in the `Authorization` header when making API requests. It expires after a certain time, and calling with an expired token returns a `401` response.
                    type: string
                    format: uuid
        protos.open.FindDuplicatedVisitorId:
            type: object
            properties:
                name:
                    description: |-
                        Client name to use for duplicate lookup

                        Used as a lookup condition when provided together with `phone` or `birthDateUtc`. When provided with `phone`, retrieves Clients matching the Client name or phonetic name.
                    type: string
                birthDateUtc:
                    description: |-
                        Date of birth to use for duplicate lookup

                        Used as a search condition when passed together with `name`. Pass an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time string with offset included.
                    type: string
                    format: date-time
                email:
                    description: |-
                        Email address to use for duplicate lookup

                        Retrieves Clients matching the stored email address.
                    type: string
                passportGivenNames:
                    description: |-
                        Passport given names

                        Not used as a duplicate lookup condition for this endpoint.
                    type: string
                passportNumber:
                    description: |-
                        Passport number to use for duplicate lookup

                        Retrieves Clients matching the stored passport number.
                    type: string
                passportSurname:
                    description: |-
                        Passport surname

                        Not used as a duplicate lookup condition for this endpoint.
                    type: string
                phone:
                    description: |-
                        Phone number to use for duplicate lookup

                        Used as a lookup condition when provided together with `name`. Both `countryCode` and `phoneNumber` must match.
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                snsInfo:
                    description: |-
                        SNS account information to use for duplicate lookup

                        Retrieves Clients where both `snsType` and `accountId` match.
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.SnsInfo'
        protos.open.FindDuplicatedVisitorIdResponse:
            type: object
            properties:
                data:
                    description: |-
                        Duplicate Client ID

                        Not included in the response if no matching non-deleted Client is found.
                    type: string
                    format: object-id
        protos.open.FindScheduleByPurchaseIdQuery:
            type: object
            required:
                - purchaseId
            properties:
                purchaseId:
                    description: Payment ID for retrieving the schedule
                    type: string
        protos.open.FindScheduleByPurchaseIdQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: Schedule details linked to the payment ID
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleContract'
        protos.open.FindVisitor:
            type: object
            required:
                - visitorName
            properties:
                phone:
                    description: |-
                        Phone number to use as a search condition

                        Used as a search condition together with `visitorName`. Both `countryCode` and `phoneNumber` must match. If `phone` is not provided, no search is performed and an empty response is returned.
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                visitorName:
                    description: |-
                        Client name

                        Used as a search condition together with `phone`. Retrieves Clients whose name or phonetic name matches.
                    type: string
        protos.open.FindVisitorResponse:
            type: object
            properties:
                data:
                    description: |-
                        Retrieved Client information

                        Matching non-deleted Client information. If `phone` is not provided or no matching Client is found, it will not be included in the response.
                    allOf:
                        - $ref: '#/components/schemas/protos.open.VisitorInformation'
        protos.open.GenerateUploadingImageUrl:
            type: object
            required:
                - fileName
            properties:
                fileName:
                    description: |-
                        Image file name to upload

                        Must be unique per hospital.
                    type: string
        protos.open.GenerateUploadingImageUrlResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        Presigned URL for uploading an image file

                        Upload the image file binary to this URL via a `PUT` request. The issued URL is valid for 5 minutes.
                    type: string
                    format: uri
        protos.open.GetPurchaseSummariesQuery:
            type: object
            required:
                - purchaseIds
            properties:
                purchaseIds:
                    description: |-
                        List of payment IDs to retrieve

                        Payment IDs that do not exist or have been deleted will not be included in the response.
                    type: array
                    items:
                        type: string
        protos.open.GetPurchaseSummariesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        Payment list

                        Only includes payments that have not been deleted. `purchaseIds` that do not exist or have been deleted will not be included in the response.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseSummary'
        protos.open.GetQuestionnaireAgreementsQueryResponse:
            type: object
            properties:
                data:
                    description: Initial visit questionnaire agreement item list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.QuestionnaireAgreement'
        protos.open.GetQuestionnaireSubmitQuery:
            type: object
            required:
                - visitorId
            properties:
                visitorId:
                    description: Client ID for retrieving the submitted first-visit questionnaire
                    type: string
                    format: object-id
        protos.open.GetQuestionnaireSubmitQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        Submitted first-visit questionnaire retrieval result

                        Includes Client basic information, submitted questionnaire responses, agreement items, etc.
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.GetQuestionnaireSubmitLegacyQueryResponse'
        protos.open.GetReschedulableTimeSlotsQuery:
            type: object
            required:
                - scheduleId
                - dateTimeRangeUtc
            properties:
                available:
                    description: |-
                        Slot availability filter

                        If `true`, only available slots are returned. If `false`, only unavailable slots are returned. If omitted, all slots are returned.
                    type: boolean
                dateTimeRangeUtc:
                    description: Time range for querying slots available for reservation rescheduling
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                scheduleId:
                    description: Schedule ID
                    type: string
                    format: object-id
        protos.open.GetReschedulableTimeSlotsQueryResponse:
            type: object
            properties:
                data:
                    description: List of slots available for reservation rescheduling
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.reservation_time_slot.ReservationTimeSlot'
        protos.open.GetReservationGroupsQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        Reservation group list

                        Only reservation groups that have not been deleted are included in the Open API.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationGroupContract'
        protos.open.GetReservationRuleSummariesQuery:
            type: object
            properties:
                isActive:
                    description: |-
                        Active status filter

                        If `true`, only active booking rules are returned. If `false`, only inactive booking rules are returned. If omitted, all booking rules are returned.
                    type: boolean
        protos.open.GetReservationRuleSummariesQueryResponse:
            type: object
            properties:
                data:
                    description: Booking rule list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRuleSummary'
        protos.open.GetReservationSlotsByGroupQuery:
            type: object
            required:
                - reservationGroupId
                - startDate
                - endDate
                - timezone
            properties:
                endDate:
                    description: |-
                        End date of query range

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date format. Used as the end date of the query range based on `timezone`.
                    type: string
                    format: date
                reservationGroupId:
                    description: Reservation group ID
                    type: string
                    format: object-id
                startDate:
                    description: |-
                        Start date of query range

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date format. Used as the start date of the query range based on `timezone`.
                    type: string
                    format: date
                timezone:
                    description: |-
                        Query reference time zone

                        This is an [IANA time zone database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) name.
                    type: string
        protos.open.GetReservationSlotsByGroupsQuery:
            type: object
            required:
                - reservationGroupIds
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                endDateTimeUtc:
                    description: |-
                        End date-time of the query range

                        Format is [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time.
                    type: string
                    format: date-time
                reservationGroupIds:
                    description: |-
                        List of reservation group IDs to query

                        At least one reservation group ID is required.
                    type: array
                    minItems: 1
                    items:
                        type: string
                        format: object-id
                startDateTimeUtc:
                    description: |-
                        Start date-time of the query range

                        Format is [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: |-
                        List of slots by reservation group and zone

                        An entry is created for each active zone in the reservation group.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.ReservationGroupSlots'
        protos.open.GetReservationSlotsByProductQuery:
            type: object
            required:
                - startDateUtc
                - endDateUtc
            properties:
                endDateUtc:
                    description: |-
                        End date and time of the query range

                        Follows [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                requestedProductOptionIds:
                    description: |-
                        List of product option IDs to query

                        Used to select the representative reservation group among reservation groups linked to a product option. If no linked reservation group is found in this list and no linked reservation group is found in `requestedProductOptionIdsOfPromotion`, the default reservation group will be used.
                    type: array
                    items:
                        type: string
                        format: object-id
                requestedProductOptionIdsOfPromotion:
                    description: |-
                        List of promotion treatment option IDs

                        Deprecated. Replacement field: `requestedProductOptionIds`. If no linked reservation group is found in this list and no linked reservation group is found in `requestedProductOptionIds`, the default reservation group will be used.
                    deprecated: true
                    type: array
                    items:
                        type: string
                        format: object-id
                startDateUtc:
                    description: |-
                        Start date and time of the query range

                        Follows [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
        protos.open.GetReservationSlotsByScheduleIdQuery:
            type: object
            required:
                - scheduleId
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                endDateTimeUtc:
                    description: |-
                        End date and time of the query range

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                scheduleId:
                    description: Schedule ID
                    type: string
                    format: uuid
                startDateTimeUtc:
                    description: |-
                        Start date and time of the query range

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
        protos.open.GetReservationSlotsByScheduleIdQueryV2:
            type: object
            required:
                - scheduleId
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                endDateTimeUtc:
                    description: |-
                        End date and time of the query range

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                scheduleId:
                    description: Schedule ID for retrieving slots
                    type: string
                    format: uuid
                startDateTimeUtc:
                    description: |-
                        Start date and time of the query range

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
        protos.open.GetReservationSlotsByScheduleIdQueryV2Response:
            type: object
            properties:
                data:
                    description: |-
                        List of slots by reservation schedule

                        If a schedule has multiple reservation schedules, an item is created for each reservation schedule. For existing reservations without occupied resources, one item is created based on the existing reservation information.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.ReservationGroupOccupiedResourceSlot'
        protos.open.GetReservationSlotsQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: List of reservation slots
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.ReservationSlot'
        protos.open.GetReservationTimeSlotsByVisitorIdQuery:
            type: object
            required:
                - dateTimeRangeUtc
                - visitorId
            properties:
                available:
                    description: |-
                        Slot availability filter

                        If `true`, only available slots are returned. If `false`, only unavailable slots are returned. If omitted, all slots are returned.
                    type: boolean
                dateTimeRangeUtc:
                    description: Time range for querying slots
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                requestedProcedureOptionIds:
                    description: List of requested procedure option IDs
                    type: array
                    items:
                        type: string
                        format: object-id
                requestedProcedureTicketIds:
                    description: List of requested procedure ticket IDs
                    type: array
                    items:
                        type: string
                        format: object-id
                reservationConsultationRequired:
                    description: Whether consultation is required
                    type: boolean
                reservationRuleId:
                    description: |-
                        Booking rule ID

                        If omitted, slots are queried by evaluating the default booking rule.
                    type: string
                    format: object-id
                reservationSedationRequired:
                    description: Whether sedation is required
                    type: boolean
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
        protos.open.GetReservationTimeSlotsByVisitorIdQueryResponse:
            type: object
            properties:
                data:
                    description: Reservation time slot list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.reservation_time_slot.ReservationTimeSlot'
        protos.open.GetReservationTimeSlotsQuery:
            type: object
            required:
                - dateTimeRangeUtc
            properties:
                available:
                    description: |-
                        Slot availability filter

                        If `true`, only available slots are returned. If `false`, only unavailable slots are returned. If omitted, all slots are returned.
                    type: boolean
                dateTimeRangeUtc:
                    description: Time range for querying slots
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                requestedProcedureOptionIds:
                    description: List of requested procedure option IDs
                    type: array
                    items:
                        type: string
                        format: object-id
                requestedProcedureTicketIds:
                    description: List of requested procedure ticket IDs
                    type: array
                    items:
                        type: string
                        format: object-id
                reservationConsultationRequired:
                    description: Whether consultation is required
                    type: boolean
                reservationRuleId:
                    description: |-
                        Booking rule ID

                        If omitted, slots are queried by evaluating the default booking rule.
                    type: string
                    format: object-id
                reservationSedationRequired:
                    description: Whether sedation is required
                    type: boolean
                visitorCategoryIds:
                    description: Client category ID list
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorGender:
                    description: Client gender
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorIsNew:
                    description: Whether the Client is new
                    type: boolean
                visitorLanguageCode:
                    description: |-
                        Client language code

                        Uses a locale code.
                    type: string
                visitorNationalityCode:
                    description: |-
                        Client nationality code

                        This is an ISO 3166-1 alpha-2 country code.
                    type: string
        protos.open.GetReservationTimeSlotsQueryResponse:
            type: object
            properties:
                data:
                    description: Reservation time slot list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.reservation_time_slot.ReservationTimeSlot'
        protos.open.GetSchedulesByFlowStepQuery:
            type: object
            required:
                - flowStep
                - reservationStartDateTimeUtcFrom
                - reservationStartDateTimeUtcTo
            properties:
                flowStep:
                    description: |
                        Visit stage to query

                        `FLOW_STATUS_UNSPECIFIED` cannot be used as a query condition.

                        | Value | Meaning |
                        | --- | --- |
                        | `FLOW_STATUS_UNSPECIFIED` | Unknown |
                        | `RESERVED` | Reserved |
                        | `RECEPTION` | Reception |
                        | `CONSULTATION_WAITING` | Consultation waiting |
                        | `CONSULTATION` | Consultation |
                        | `PROCEDURE_WAITING` | Procedure waiting |
                        | `PROCEDURE` | Procedure |
                        | `PROCEDURE_DONE` | Awaiting discharge |
                        | `COMPLETED` | Discharged |
                    type: string
                    enum:
                        - FLOW_STATUS_UNSPECIFIED
                        - RESERVED
                        - RECEPTION
                        - CONSULTATION_WAITING
                        - CONSULTATION
                        - PROCEDURE_WAITING
                        - PROCEDURE
                        - PROCEDURE_DONE
                        - COMPLETED
                reservationStartDateTimeUtcFrom:
                    description: |-
                        Start of the reservation start date and time query range

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format in UTC. Retrieves schedules that start on or after this date and time.
                    type: string
                    format: date-time
                reservationStartDateTimeUtcTo:
                    description: |-
                        End of the reservation start date and time query range

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format in UTC. Retrieves schedules that start on or before this date and time.
                    type: string
                    format: date-time
        protos.open.GetSchedulesByFlowStepQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: List of non-deleted schedules matching the specified conditions
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleContract'
        protos.open.GetTicketBundlesQuery:
            type: object
            required:
                - visitorId
            properties:
                visitorId:
                    description: Client ID for retrieving treatment ticket bundles
                    type: string
                    format: object-id
        protos.open.GetVisitorQuestionnaireQuery:
            type: object
            required:
                - visitorId
            properties:
                visitorId:
                    description: Client ID for retrieving the first-visit questionnaire
                    type: string
                    format: object-id
        protos.open.GetVisitorQuestionnaireQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        First-visit questionnaire retrieval result

                        Includes Client basic information and a list of questionnaire pages.
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.GetQuestionnaireLagacyQueryResponse'
        protos.open.OccupiedReservationGroupResource:
            type: object
            required:
                - reservationGroupId
                - zoneId
            properties:
                doctor:
                    description: |-
                        Attending Physician

                        This value is not currently used in public reservation creation/update requests.
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Doctor'
                reservationGroupId:
                    description: Reservation group ID
                    type: string
                    format: object-id
                zoneId:
                    description: Zone ID to occupy
                    type: string
                    format: object-id
        protos.open.OccupiedResource:
            type: object
            required:
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                endDateTimeUtc:
                    description: |-
                        Occupancy end date/time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                startDateTimeUtc:
                    description: |-
                        Occupancy start date/time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
            oneOf:
                - properties:
                    reservationGroup:
                        description: Reservation schedule configuration based on reservation group
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OccupiedReservationGroupResource'
                  required:
                    - reservationGroup
                  title: Reservation schedule configuration based on reservation group
                  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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `SINGLE` | Single option — composed of one medical service |
                        | `GROUP` | Group option — composed of multiple medical services |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: CONSULTATION
                    enum:
                        - CONSULTATION
                productId:
                    description: Product ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        Multilingual translation map

                        Fields supporting multilingual translations: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    consultationOptionConfiguration:
                        description: |-
                            Consultation option configuration

                            Required when `type` is `CONSULTATION`.
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionConsultationConfiguration'
                  required:
                    - consultationOptionConfiguration
                  title: |-
                    Consultation option configuration

                    Required when `type` is `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `SINGLE` | Single option — composed of one medical service |
                        | `GROUP` | Group option — composed of multiple medical services |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                productId:
                    description: Product ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        Multilingual translation map

                        Fields supporting multilingual translations: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    groupOptionConfiguration:
                        description: |-
                            Group option configuration

                            Required when `type` is `GROUP`.
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionGroupConfiguration'
                  required:
                    - groupOptionConfiguration
                  title: |-
                    Group option configuration

                    Required when `type` is `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `SINGLE` | Single option — composed of one medical service |
                        | `GROUP` | Group option — composed of multiple medical services |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                productId:
                    description: Product ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        Multilingual translation map

                        Fields supporting multilingual translations: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    singleOptionConfiguration:
                        description: |-
                            Single option configuration

                            Required when `type` is `SINGLE`.
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionSingleConfiguration'
                  required:
                    - singleOptionConfiguration
                  title: |-
                    Single option configuration

                    Required when `type` is `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: Schedule ID
                    type: string
                    format: object-id
                step:
                    description: |
                        Flow step to change to

                        | Value | Meaning |
                        | --- | --- |
                        | `FLOW_STATUS_UNSPECIFIED` | Unknown |
                        | `RESERVED` | Reserved |
                        | `RECEPTION` | Reception |
                        | `CONSULTATION_WAITING` | Consultation waiting |
                        | `CONSULTATION` | Consultation |
                        | `PROCEDURE_WAITING` | Procedure waiting |
                        | `PROCEDURE` | Procedure |
                        | `PROCEDURE_DONE` | Awaiting discharge |
                        | `COMPLETED` | Discharged |
                    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: |-
                        Block end date and time

                        Provide an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time string with offset. Must be later than `startDateTimeUtc`, and must be less than 24 hours within the same date.
                    type: string
                    format: date-time
                memo:
                    description: |-
                        Time block memo

                        This is the memo saved to the created time block.
                    type: string
                reservationGroupId:
                    description: |-
                        Reservation group ID to block

                        Must be an existing reservation group ID.
                    type: string
                    format: object-id
                startDateTimeUtc:
                    description: |-
                        Block start date and time

                        Provide an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time string with offset.
                    type: string
                    format: date-time
                zoneId:
                    description: |-
                        Zone ID to block

                        Must be an existing zone ID.
                    type: string
                    format: object-id
        protos.open.OpenCreateOccupiedTimeCommandResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        Time block creation result

                        Contains the ID of the created time block.
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenCreateOccupiedTimeCommandResponseData'
        protos.open.OpenCreateOccupiedTimeCommandResponseData:
            type: object
            required:
                - occupiedTimeId
            properties:
                occupiedTimeId:
                    description: Created time block ID
                    type: string
                    format: object-id
        protos.open.OpenCreateProductCommand:
            type: object
            required:
                - title
                - description
                - closed
            properties:
                title:
                    description: Product name
                    type: string
                description:
                    description: Product description
                    type: string
                badges:
                    description: |
                        Badge list

                        Passed as an integer value.

                        Badge type

                        | Value | Meaning |
                        | --- | --- |
                        | `NEW` | New |
                        | `POPULAR` | Popular |
                        | `RECOMMENDED` | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                categoryIds:
                    description: Product category ID list
                    type: array
                    items:
                        type: string
                        format: object-id
                caution:
                    description: Caution
                    type: string
                closed:
                    description: |-
                        Whether the product is closed for sale

                        `true` means the product is not available for purchase.
                    type: boolean
                contentImageUrl:
                    description: Content image URL
                    type: string
                    format: uri
                coverImageUrl:
                    description: Cover image URL
                    type: string
                    format: uri
                displayPeriod:
                    description: |-
                        Product display period

                        If not set, the product is always visible.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                isEvent:
                    description: |-
                        Whether this is an event product

                        `true` marks the product as an event product.
                    type: boolean
                offeringPeriod:
                    description: |-
                        Product offering period

                        If not set, the product is available at all times.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                targetCountryCodes:
                    description: |-
                        Target country code list

                        This is an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. Other countries are passed as `ETC`.
                    type: array
                    items:
                        type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        Fields supporting multilingual translations: `title`, `description`, `caution`, `coverImageUrl`, `contentImageUrl`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.open.OpenCreateProductCommandResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: Created product ID
                    type: string
                    format: object-id
        protos.open.OpenDeleteProductCommand:
            type: object
            required:
                - productId
            properties:
                productId:
                    description: Product ID
                    type: string
                    format: object-id
        protos.open.OpenGetCategoriesQuery:
            type: object
            properties:
                opened:
                    description: |-
                        Visibility

                        In the Open API, only visible categories are retrieved regardless of the request value.
                    type: boolean
                sort:
                    description: |-
                        Sort criteria

                        The sortable field is `order`.
                    allOf:
                        - $ref: '#/components/schemas/protos.Sort'
        protos.open.OpenGetLinkedProductsQuery:
            type: object
            required:
                - reservationGroupId
            properties:
                reservationGroupId:
                    description: ID of the reservation group to retrieve linked products for
                    type: string
        protos.open.OpenGetLinkedProductsQueryResponse:
            type: object
            properties:
                data:
                    description: List of products linked to the reservation group
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenLinkableProductContract'
        protos.open.OpenGetMachinesQuery:
            type: object
            properties:
                name:
                    description: |-
                        Name search keyword

                        Partial search by machine name. If omitted, all items are returned.
                    type: string
        protos.open.OpenGetMachinesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        Machine list

                        Deleted items are not included.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenMachine'
        protos.open.OpenGetMedicalServicesQuery:
            type: object
            properties:
                title:
                    description: |-
                        Name search keyword

                        Partial search by medical service name. If omitted, all items are returned.
                    type: string
        protos.open.OpenGetMedicalServicesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        Medical service list

                        Deleted items are not included.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenMedicalService'
        protos.open.OpenGetMedicinesQuery:
            type: object
            properties:
                name:
                    description: |-
                        Name search keyword

                        Partial search by medicine name. If omitted, all items are returned.
                    type: string
        protos.open.OpenGetMedicinesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        Medicine list

                        Deleted items are not included.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenMedicine'
        protos.open.OpenGetPrepaidCardChargingEventStatisticsQuery:
            type: object
            required:
                - chargedDateTimeUtcFrom
                - chargedDateTimeUtcTo
            properties:
                amountTypes:
                    description: Amount type filter
                    type: array
                    items:
                        type: string
                        enum:
                            - PrepaidCardChargingEventAmountType_UNKNOWN
                            - BALANCE
                            - POINT
                assigneeIds:
                    description: Staff ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                chargedDateTimeUtcFrom:
                    description: |-
                        Prepaid card history query start date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                chargedDateTimeUtcTo:
                    description: |-
                        Prepaid card history query end date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                chargingEventTypes:
                    description: History type filter
                    type: array
                    items:
                        type: string
                        enum:
                            - PrepaidCardChargingEventType_UNKNOWN
                            - PAYMENT
                            - PAYMENT_CANCEL
                            - REFUND
                            - CHARGE
                            - EXPIRATION
                            - SUBTRACT
                cursor:
                    description: |-
                        Next page cursor

                        Pass the `nextCursor` value from the previous response. Cannot be sent alone without `limit`.
                    type: string
                limit:
                    description: |-
                        Maximum number of rows per page

                        Must be 1 or greater. Maximum value is 5000. If not provided, all records are returned.
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                ownerId:
                    description: Prepaid card owner client ID filter
                    type: string
                    format: object-id
                visitorId:
                    description: Client ID filter
                    type: string
                    format: object-id
        protos.open.OpenGetPrepaidCardChargingEventStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: Prepaid card history statistics list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenPrepaidCardChargingEventStatisticsItem'
                nextCursor:
                    description: |-
                        Next page cursor

                        Not returned on the last page.
                    type: string
                totalCount:
                    description: |-
                        Total number of rows

                        Returned only on the first page (when `cursor` is not provided).
                    type: integer
                    format: int32
        protos.open.OpenGetProcedureTaskStatisticsQuery:
            type: object
            required:
                - completedDateTimeUtcFrom
                - completedDateTimeUtcTo
            properties:
                assigneeIds:
                    description: Staff ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                completedDateTimeUtcFrom:
                    description: |-
                        Treatment completion date and time search start

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                completedDateTimeUtcTo:
                    description: |-
                        Treatment completion date and time search end

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                cursor:
                    description: |-
                        Next page cursor

                        Pass the `nextCursor` value from the previous response. Cannot be sent alone without `limit`.
                    type: string
                doctorIds:
                    description: Doctor ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                limit:
                    description: |-
                        Maximum number of rows per page

                        Must be 1 or greater. Maximum value is 5000. If not provided, all records are returned.
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                medicineAndMachineIds:
                    description: Medication and device ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                procedureIds:
                    description: Procedure ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                productCategoryIds:
                    description: Product category ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                productIds:
                    description: Product ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                productOptionIds:
                    description: Product option ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorCategoryIds:
                    description: Client category ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorId:
                    description: Client ID filter
                    type: string
                    format: object-id
        protos.open.OpenGetProcedureTaskStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: Treatment task list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenProcedureTaskStatisticsItem'
                nextCursor:
                    description: |-
                        Next page cursor

                        Not returned if it is the last page.
                    type: string
                totalCount:
                    description: |-
                        Total number of rows

                        Returned only on the first page (when `cursor` is not provided).
                    type: integer
                    format: int32
        protos.open.OpenGetProceduresQuery:
            type: object
            properties:
                name:
                    description: |-
                        Name search keyword

                        Partial search by procedure name. If omitted, all items are returned.
                    type: string
        protos.open.OpenGetProceduresQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        Procedure list

                        Deleted items are not included.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenProcedure'
        protos.open.OpenGetProductQuery:
            type: object
            required:
                - id
            properties:
                id:
                    description: Product ID
                    type: string
                    format: object-id
        protos.open.OpenGetProductsQuery:
            type: object
            properties:
                title:
                    description: Product name search keyword
                    type: string
                categoryId:
                    description: Product category ID
                    type: string
                    format: object-id
                deleted:
                    description: |-
                        Requested value for deletion status

                        In the Open API, only non-deleted products are retrieved regardless of the requested value.
                    type: boolean
                includePromotions:
                    description: |-
                        Whether to include promotions

                        Deprecated.
                    deprecated: true
                    type: boolean
                isEvent:
                    description: |-
                        Event product filter

                        If `true`, only event products are retrieved; if `false`, only non-event products are retrieved. If the value is omitted, no filtering by event status is applied.
                    type: boolean
                optionIds:
                    description: |-
                        List of product option IDs to filter by

                        If provided, only products containing at least one of the specified product option IDs will be retrieved. If omitted or passed as an empty list, the product option ID filter will not be applied.
                    type: array
                    items:
                        type: string
                        format: object-id
                targetCountryCode:
                    description: |-
                        Target country code

                        This is an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. Other countries are passed as `ETC`.
                    type: string
        protos.open.OpenGetPurchaseItemStatisticsQuery:
            type: object
            required:
                - createdDateTimeUtcFrom
                - createdDateTimeUtcTo
            properties:
                assigneeIds:
                    description: Staff ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                createdDateTimeUtcFrom:
                    description: |-
                        Purchase item query start date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                createdDateTimeUtcTo:
                    description: |-
                        Purchase item query end date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                cursor:
                    description: |-
                        Next page cursor

                        Pass the `nextCursor` value from the previous response. Cannot be sent alone without `limit`.
                    type: string
                limit:
                    description: |-
                        Maximum number of rows per page

                        Must be 1 or greater. Maximum value is 5000. If not provided, all records are returned.
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                productCategoryIds:
                    description: Product category ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                productIds:
                    description: Product ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                productOptionIds:
                    description: Product option ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                purchaseItemTypes:
                    description: Purchase item type filter
                    type: array
                    items:
                        type: string
                        enum:
                            - PurchaseItemType_UNSPECIFIED
                            - PRODUCT_OPTION
                            - ETCETRA_PRODUCT
                            - PREPAID_CARD_PRODUCT
                purchaseStatuses:
                    description: Purchase status filter
                    type: array
                    items:
                        type: string
                        enum:
                            - PURCHASE_STATUS_UNSPECIFIED
                            - REFUNDED
                            - PARTIALLY_REFUNDED
                            - ACCEPTED
                            - PAID
                            - INITIALIZED
                taxCharged:
                    description: Tax applicability filter
                    type: boolean
                visitorCategoryIds:
                    description: Client category ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorId:
                    description: Client ID filter
                    type: string
                    format: object-id
        protos.open.OpenGetPurchaseItemStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: Purchase item list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenPurchaseItemStatisticsItem'
                nextCursor:
                    description: |-
                        Next page cursor

                        Not returned if it is the last page.
                    type: string
                totalCount:
                    description: |-
                        Total number of rows

                        Returned only on the first page (when `cursor` is not provided).
                    type: integer
                    format: int32
        protos.open.OpenGetScheduleStatisticsQuery:
            type: object
            properties:
                consultationDoctorIds:
                    description: Consulting doctor ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                counselorIds:
                    description: Counselor ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                cursor:
                    description: |-
                        Next page cursor

                        Pass the `nextCursor` value from the previous response. Cannot be sent alone without `limit`.
                    type: string
                limit:
                    description: |-
                        Maximum number of rows per page

                        Must be 1 or greater. Maximum value is 5000. If not provided, all records are returned.
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                nationalities:
                    description: Nationality list filter
                    type: array
                    items:
                        type: string
                reservationStartDateTimeUtcFrom:
                    description: |-
                        Reservation date and time search start

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                reservationStartDateTimeUtcTo:
                    description: |-
                        Reservation date and time search end

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                reservationStatuses:
                    description: Reservation status list filter
                    type: array
                    items:
                        type: string
                        enum:
                            - RESERVATION_STATUS_UNSPECIFIED
                            - RESERVED
                            - CANCELED
                            - NO_SHOW
                            - IN_PROGRESS
                            - COMPLETED
                reservedDateTimeUtcFrom:
                    description: |-
                        Reservation created date and time search start

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                reservedDateTimeUtcTo:
                    description: |-
                        Reservation created date and time search end

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                visitorCategoryIds:
                    description: Client category ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorIds:
                    description: Client ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
        protos.open.OpenGetScheduleStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: Schedule list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenScheduleStatisticsItem'
                nextCursor:
                    description: |-
                        Next page cursor

                        Not returned if it is the last page.
                    type: string
                totalCount:
                    description: |-
                        Total number of rows

                        Returned only on the first page (when `cursor` is not provided).
                    type: integer
                    format: int32
        protos.open.OpenGetTransactionStatisticsQuery:
            type: object
            required:
                - createdTimeUtcFrom
                - createdTimeUtcTo
            properties:
                createdTimeUtcFrom:
                    description: |-
                        Transaction query start date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                createdTimeUtcTo:
                    description: |-
                        Transaction query end date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                cursor:
                    description: |-
                        Next page cursor

                        Pass the `nextCursor` value from the previous response. Cannot be sent alone without `limit`.
                    type: string
                limit:
                    description: |-
                        Maximum number of rows per page

                        Must be 1 or greater. Maximum value is 5000. If not provided, all records are returned.
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                paymentAmountFrom:
                    description: Minimum payment amount filter
                    type: integer
                    format: int32
                paymentAmountTo:
                    description: Maximum payment amount filter
                    type: integer
                    format: int32
                paymentType:
                    description: Payment method filter
                    type: array
                    items:
                        type: string
                        enum:
                            - TransactionPaymentType_UNSPECIFIED
                            - CASH
                            - CARD
                            - PREPAID_CARD
                            - PLATFORM
                            - TRANSFER
                            - EASY_PAY
                            - MEDICAL_LOAN
                purchaseAssigneeIds:
                    description: Staff ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                statuses:
                    description: Transaction status filter
                    type: array
                    items:
                        type: string
                        enum:
                            - TransactionStatus_UNSPECIFIED
                            - REQUESTED
                            - APPROVED
                            - CANCELED
                            - SPENT
                            - FAILED
                taxCharged:
                    description: Tax applicability filter
                    type: boolean
                visitorCategoryIds:
                    description: Client category ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorId:
                    description: Client ID filter
                    type: string
                    format: object-id
        protos.open.OpenGetTransactionStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: Transaction statistics list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenTransactionStatisticsItem'
                nextCursor:
                    description: |-
                        Next page cursor

                        Not returned on the last page.
                    type: string
                totalCount:
                    description: |-
                        Total number of rows

                        Returned only on the first page (when `cursor` is not provided).
                    type: integer
                    format: int32
        protos.open.OpenGetVisitorStatisticsQuery:
            type: object
            properties:
                cursor:
                    description: |-
                        Next page cursor

                        Pass the `nextCursor` value from the previous response. Cannot be sent alone without `limit`.
                    type: string
                firstVisitedDateTimeUtcFrom:
                    description: |-
                        First visit date and time search start

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                firstVisitedDateTimeUtcTo:
                    description: |-
                        First visit date and time search end

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                isCompletedProcedureTask:
                    description: Treatment task completion status filter
                    type: boolean
                isCompletedPurchase:
                    description: Purchase completion status filter
                    type: boolean
                lastVisitedDateTimeUtcFrom:
                    description: |-
                        Most recent visit date and time search start

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                lastVisitedDateTimeUtcTo:
                    description: |-
                        Most recent visit date and time search end

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                limit:
                    description: |-
                        Maximum number of rows per page

                        Must be 1 or greater. Maximum value is 5000. If not provided, all records are returned.
                    type: integer
                    format: int32
                    minimum: 1
                    maximum: 5000
                visitorCategoryIds:
                    description: Client category ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorCreatedDateTimeUtcFrom:
                    description: |-
                        Client registration date and time search start

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                visitorCreatedDateTimeUtcTo:
                    description: |-
                        Client registration date and time search end

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T23:59:59Z`
                    type: string
                    format: date-time
                visitorFunnelCategoryIds:
                    description: Client acquisition channel category ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorFunnelIds:
                    description: Client acquisition channel ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorIds:
                    description: Client ID list filter
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorNationalities:
                    description: Client nationality list filter
                    type: array
                    items:
                        type: string
        protos.open.OpenGetVisitorStatisticsQueryResponse:
            type: object
            properties:
                data:
                    description: Client list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenVisitorStatisticsItem'
                nextCursor:
                    description: |-
                        Next page cursor

                        Not returned if it is the last page.
                    type: string
                totalCount:
                    description: |-
                        Total number of rows

                        Returned only on the first page (when `cursor` is not provided).
                    type: integer
                    format: int32
        protos.open.OpenLinkableProductContract:
            type: object
            required:
                - productId
                - title
            properties:
                title:
                    description: Product title
                    type: string
                categoryNames:
                    description: Names of categories the product belongs to
                    type: array
                    items:
                        type: string
                linkedReservationGroupId:
                    description: ID of the currently linked reservation group. Not returned if no reservation group is linked.
                    type: string
                options:
                    description: List of product options
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenLinkableProductOptionContract'
                productId:
                    description: Product ID
                    type: string
        protos.open.OpenLinkableProductOptionContract:
            type: object
            required:
                - productId
                - productTitle
                - optionId
                - optionName
            properties:
                categoryNames:
                    description: Names of categories the product belongs to
                    type: array
                    items:
                        type: string
                linkedReservationGroupId:
                    description: ID of the currently linked reservation group. Not returned if no reservation group is linked.
                    type: string
                optionId:
                    description: Product option ID
                    type: string
                optionName:
                    description: Product option name
                    type: string
                productId:
                    description: Product ID
                    type: string
                productTitle:
                    description: Product title
                    type: string
        protos.open.OpenMachine:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Machine name
                    type: string
                id:
                    description: Machine ID
                    type: string
                    format: object-id
        protos.open.OpenMedicalService:
            type: object
            required:
                - id
                - title
                - status
                - configuration
                - draftedDateTimeUtc
                - updatedDateTimeUtc
            properties:
                title:
                    description: Medical service name
                    type: string
                description:
                    description: Medical service description
                    type: string
                caution:
                    description: Caution
                    type: string
                configuration:
                    description: |-
                        Medical service configuration

                        Includes code, procedure, machines, medicines, unit, healthcare reimbursement, and taxation type.
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceConfiguration'
                contributionConstant:
                    description: Contribution constant
                    type: integer
                    format: int32
                draftedDateTimeUtc:
                    description: |-
                        Draft saved date/time

                        In [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                durationTime:
                    description: |-
                        Duration

                        Unit is minutes.
                    type: number
                    format: double
                id:
                    description: Medical service ID
                    type: string
                    format: object-id
                priceAmount:
                    description: Price amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                recommendedInterval:
                    description: |-
                        Recommended interval

                        Unit is days.
                    type: integer
                    format: int32
                status:
                    description: |
                        Medical service status

                        Medical service status

                        | Value | Meaning |
                        | --- | --- |
                        | `DRAFT` | Draft |
                        | `PUBLISHED` | Published |
                    type: string
                    enum:
                        - MedicalServiceStatus_UNKNOWN
                        - DRAFT
                        - PUBLISHED
                translsMap:
                    description: |-
                        Multilingual translation map

                        Fields supporting multilingual translations: `title`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                updatedDateTimeUtc:
                    description: |-
                        Last modified date/time

                        In [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
        protos.open.OpenMedicine:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Medicine name
                    type: string
                id:
                    description: Medicine 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: Staff list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenStatisticsAssignee'
                chargedDateTimeUtc:
                    description: Prepaid card history occurrence date and time
                    type: string
                    format: date-time
                chargingAmountType:
                    description: Prepaid card amount type
                    type: string
                    enum:
                        - PrepaidCardChargingEventAmountType_UNKNOWN
                        - BALANCE
                        - POINT
                chargingAmountV2:
                    description: History amount
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                chargingId:
                    description: Prepaid card history identifier
                    type: string
                chargingType:
                    description: Prepaid card history type
                    type: string
                    enum:
                        - PrepaidCardChargingEventType_UNKNOWN
                        - PAYMENT
                        - PAYMENT_CANCEL
                        - REFUND
                        - CHARGE
                        - EXPIRATION
                        - SUBTRACT
                memo:
                    description: Memo
                    type: string
                ownerChartNumber:
                    description: Prepaid card owner chart number
                    type: string
                ownerId:
                    description: Prepaid card owner client ID
                    type: string
                    format: object-id
                prepaidCardId:
                    description: Prepaid card ID
                    type: string
                    format: object-id
                prepaidCardTitle:
                    description: Prepaid card name
                    type: string
                purchaseItems:
                    description: Related purchase item list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenPrepaidCardChargingEventStatisticsPurchaseItem'
                purchaseMemo:
                    description: Payment memo
                    type: string
                referrerAccount:
                    description: Referrer staff information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerAccount'
                referrerUnregisteredName:
                    description: Unregistered referrer name
                    type: string
                referrerVisitor:
                    description: Referring client information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerVisitor'
                totalPurchaseItemPriceV2:
                    description: Total purchase item amount
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                visitorAgreementAdvertisements:
                    description: Whether the client agreed to receive advertising information
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: Whether the client agreed to receive informational notifications
                    type: boolean
                visitorCategoryNames:
                    description: Client category name list
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: Client chart number
                    type: string
                visitorCreatedDateTimeUtc:
                    description: Client registration date and time
                    type: string
                    format: date-time
                visitorFunnelCategoryName:
                    description: Client acquisition channel category name
                    type: string
                visitorFunnelDetail:
                    description: Client acquisition channel detail
                    type: string
                visitorFunnelName:
                    description: Client acquisition channel name
                    type: string
                visitorGender:
                    description: Client gender
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
                visitorNationality:
                    description: Client nationality
                    type: string
        protos.open.OpenPrepaidCardChargingEventStatisticsPurchaseItem:
            type: object
            required:
                - itemId
                - title
            properties:
                title:
                    description: Purchase item name
                    type: string
                itemId:
                    description: Purchase item ID
                    type: string
                    format: object-id
        protos.open.OpenProcedure:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Procedure name
                    type: string
                id:
                    description: Procedure ID
                    type: string
                    format: object-id
        protos.open.OpenProcedureTaskStatisticsItem:
            type: object
            required:
                - scheduleId
                - taskSequence
                - completedDateTimeUtc
                - paymentRequired
                - visitorId
                - visitorChartNumber
            properties:
                title:
                    description: Treatment task title
                    type: string
                anesthesiaType:
                    description: |
                        Anesthesia type

                        | Value | Meaning |
                        | --- | --- |
                        | `SEDATION` | Sedation anesthesia |
                        | `SPRAY` | Spray anesthesia |
                        | `CREAM` | Cream anesthesia |
                        | `DENTAL` | Dental anesthesia |
                        | `GAS` | Gas anesthesia |
                        | `ICE` | Ice anesthesia |
                        | `CREAM_DENTAL` | Cream + dental combined anesthesia |
                    type: string
                    enum:
                        - ANESTHESIA_TYPE_UNSPECIFIED
                        - SEDATION
                        - SPRAY
                        - CREAM
                        - DENTAL
                        - GAS
                        - ICE
                        - CREAM_DENTAL
                assigneeNames:
                    description: Staff name list
                    type: array
                    items:
                        type: string
                completedDateTimeUtc:
                    description: |-
                        Treatment completion date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                counselorNames:
                    description: Counselor name list
                    type: array
                    items:
                        type: string
                doctorAssignedDateTimeUtc:
                    description: Doctor assignment date and time
                    type: string
                    format: date-time
                doctorCallDateTimeUtc:
                    description: Doctor call date and time
                    type: string
                    format: date-time
                doctorNames:
                    description: Doctor name list
                    type: array
                    items:
                        type: string
                isFirstProcedureSchedule:
                    description: Whether it is the first treatment appointment
                    type: boolean
                machineNames:
                    description: Device name list
                    type: array
                    items:
                        type: string
                medicalServiceCode:
                    description: Medical service code
                    type: string
                medicalServiceContributionConstant:
                    description: Medical service contribution constant
                    type: integer
                    format: int32
                medicalServiceDurationTime:
                    description: Medical service duration (minutes)
                    type: integer
                    format: int32
                medicalServiceName:
                    description: Medical service name
                    type: string
                medicalServiceUnit:
                    description: Medical service unit
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
                medicineNames:
                    description: Medication name list
                    type: array
                    items:
                        type: string
                paymentRequired:
                    description: Whether payment is required
                    type: boolean
                procedureName:
                    description: Procedure name
                    type: string
                procedureTaskId:
                    description: |-
                        Treatment task ID

                        Unique identifier in the format `{scheduleId}:{taskSequence}`.
                    type: string
                productCategoryNames:
                    description: Product category name list
                    type: array
                    items:
                        type: string
                productOptionTitle:
                    description: Product option title
                    type: string
                productTitle:
                    description: Product title
                    type: string
                referrerAccount:
                    description: Referrer staff information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerAccount'
                roomAssignedDateTimeUtc:
                    description: Treatment room assignment date and time
                    type: string
                    format: date-time
                roomTitle:
                    description: Treatment room title
                    type: string
                scheduleId:
                    description: Schedule ID
                    type: string
                    format: object-id
                taskSequence:
                    description: Treatment task sequence number
                    type: integer
                    format: int32
                ticketPriceV2:
                    description: Treatment ticket payment amount
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                unit:
                    description: Treatment unit
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
                visitorAgreementAdvertisements:
                    description: Advertising information consent
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: Informational notification consent
                    type: boolean
                visitorCategoryNames:
                    description: Client category name list
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: Client chart number
                    type: string
                visitorCreatedDateTimeUtc:
                    description: Client registration date and time
                    type: string
                    format: date-time
                visitorFunnelCategoryName:
                    description: Client acquisition channel category name
                    type: string
                visitorFunnelDetail:
                    description: Client acquisition channel detail
                    type: string
                visitorFunnelName:
                    description: Client acquisition channel name
                    type: string
                visitorGender:
                    description: Client gender
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
                visitorNationality:
                    description: Client nationality
                    type: string
                zoneTitle:
                    description: Zone title
                    type: string
        protos.open.OpenProductOptionConsultationConfiguration:
            type: object
            properties:
                displayChannels:
                    description: |
                        Display channel list

                        Display channel

                        | Value | Meaning |
                        | --- | --- |
                        | `HOMEPAGE` | Hospital homepage channel |
                        | `GANGNAMUNNI` | Gangnam Unni channel |
                        | `KOS_CONNECT` | KOS Connect channel |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
        protos.open.OpenProductOptionGroupComposition:
            type: object
            required:
                - medicalServiceId
                - price
                - count
            properties:
                count:
                    description: Count
                    type: integer
                    format: int32
                medicalServiceId:
                    description: Medical service 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: |
                        Badge list

                        Passed as an integer value.

                        Badge type

                        | Value | Meaning |
                        | --- | --- |
                        | `NEW` | New |
                        | `POPULAR` | Popular |
                        | `RECOMMENDED` | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                compositions:
                    description: |-
                        Composition list

                        At least one medical service composition is required.
                    type: array
                    minItems: 1
                    items:
                        $ref: '#/components/schemas/protos.open.OpenProductOptionGroupComposition'
                displayChannels:
                    description: |
                        Display channel list

                        Display channel

                        | Value | Meaning |
                        | --- | --- |
                        | `HOMEPAGE` | Hospital homepage channel |
                        | `GANGNAMUNNI` | Gangnam Unni channel |
                        | `KOS_CONNECT` | KOS Connect channel |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: Whether this is a frequently used option
                    type: boolean
                price:
                    description: Price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
        protos.open.OpenProductOptionSingleConfiguration:
            type: object
            required:
                - medicalServiceId
                - price
                - count
                - frequentlyUsedOption
            properties:
                badges:
                    description: |
                        Badge list

                        Passed as an integer value.

                        Badge type

                        | Value | Meaning |
                        | --- | --- |
                        | `NEW` | New |
                        | `POPULAR` | Popular |
                        | `RECOMMENDED` | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                count:
                    description: Count
                    type: integer
                    format: int32
                displayChannels:
                    description: |
                        Display channel list

                        Display channel

                        | Value | Meaning |
                        | --- | --- |
                        | `HOMEPAGE` | Hospital homepage channel |
                        | `GANGNAMUNNI` | Gangnam Unni channel |
                        | `KOS_CONNECT` | KOS Connect channel |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: Whether this is a frequently used option
                    type: boolean
                medicalServiceId:
                    description: Medical service ID
                    type: string
                    format: object-id
                price:
                    description: Price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
        protos.open.OpenPurchaseItemCost:
            type: object
            required:
                - totalAmount
                - suppliedPriceAmount
                - vatAmount
            properties:
                suppliedPriceAmount:
                    description: Supply price
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalAmount:
                    description: Residual value or final price
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                vatAmount:
                    description: VAT
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
        protos.open.OpenPurchaseItemStatisticsItem:
            type: object
            required:
                - purchaseId
                - createdDateTimeUtc
                - purchaseItemType
                - purchaseStatus
                - taxCharged
                - visitorId
                - visitorChartNumber
            properties:
                assignees:
                    description: Staff list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenStatisticsAssignee'
                basePriceAmountV2:
                    description: Discount base price
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                cost:
                    description: Purchase cost
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenPurchaseItemCost'
                counselorNames:
                    description: Counselor name list
                    type: array
                    items:
                        type: string
                createdDateTimeUtc:
                    description: |-
                        Purchase date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                etceteraProductCategoryName:
                    description: Other product category name
                    type: string
                etceteraProductName:
                    description: Other product name
                    type: string
                firstPriceAmount:
                    description: Regular price
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                prepaidCardName:
                    description: Prepaid card product name
                    type: string
                procedureConfigurations:
                    description: Procedure configuration list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenPurchaseProcedureConfiguration'
                productCategoryNames:
                    description: Product category name list
                    type: array
                    items:
                        type: string
                productOptionMachineNames:
                    description: Product option device name list
                    type: array
                    items:
                        type: string
                productOptionMedicineNames:
                    description: Product option medication name list
                    type: array
                    items:
                        type: string
                productOptionProcedureNames:
                    description: Product option procedure name list
                    type: array
                    items:
                        type: string
                productOptionTitle:
                    description: Product option title
                    type: string
                productTitle:
                    description: Product title
                    type: string
                purchaseId:
                    description: Purchase ID
                    type: string
                    format: object-id
                purchaseItemType:
                    description: |
                        Purchase item type

                        | Value | Meaning |
                        | --- | --- |
                        | `PRODUCT_OPTION` | General product option |
                        | `ETCETRA_PRODUCT` | Other product |
                        | `PREPAID_CARD_PRODUCT` | Prepaid card product |
                    type: string
                    enum:
                        - PurchaseItemType_UNSPECIFIED
                        - PRODUCT_OPTION
                        - ETCETRA_PRODUCT
                        - PREPAID_CARD_PRODUCT
                purchaseStatus:
                    description: |
                        Purchase status

                        | Value | Meaning |
                        | --- | --- |
                        | `REFUNDED` | Refunded |
                        | `PARTIALLY_REFUNDED` | Partially refunded |
                        | `ACCEPTED` | Payment completed |
                        | `PAID` | Paid |
                        | `INITIALIZED` | Unpaid |
                    type: string
                    enum:
                        - PURCHASE_STATUS_UNSPECIFIED
                        - REFUNDED
                        - PARTIALLY_REFUNDED
                        - ACCEPTED
                        - PAID
                        - INITIALIZED
                referrerAccount:
                    description: Referrer staff information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerAccount'
                reservationFunnelCategoryName:
                    description: Reservation acquisition channel category name
                    type: string
                reservationFunnelDetail:
                    description: Reservation acquisition channel detail
                    type: string
                reservationFunnelName:
                    description: Reservation acquisition channel name
                    type: string
                taxCharged:
                    description: Tax applicable
                    type: boolean
                visitorAgreementAdvertisements:
                    description: Advertising information consent
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: Informational notification consent
                    type: boolean
                visitorCategoryNames:
                    description: Client category name list
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: Client chart number
                    type: string
                visitorCreatedDateTimeUtc:
                    description: Client registration date and time
                    type: string
                    format: date-time
                visitorFirstPaymentDateTimeUtc:
                    description: Client first payment date and time
                    type: string
                    format: date-time
                visitorFirstReservationDateTimeUtc:
                    description: Client first reservation date and time
                    type: string
                    format: date-time
                visitorFunnelCategoryName:
                    description: Client acquisition channel category name
                    type: string
                visitorFunnelDetail:
                    description: Client acquisition channel detail
                    type: string
                visitorFunnelName:
                    description: Client acquisition channel name
                    type: string
                visitorGender:
                    description: Client gender
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
                visitorNationality:
                    description: Client nationality
                    type: string
                zoneName:
                    description: Zone name
                    type: string
        protos.open.OpenPurchaseMedicalService:
            type: object
            required:
                - name
                - code
            properties:
                name:
                    description: Medical service name
                    type: string
                code:
                    description: Medical service code
                    type: string
                contributionConstant:
                    description: Treatment contribution constant
                    type: integer
                    format: int32
                durationTime:
                    description: Treatment duration (minutes)
                    type: integer
                    format: int32
                price:
                    description: Product option price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                unit:
                    description: Treatment unit
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.open.OpenPurchaseProcedureConfiguration:
            type: object
            properties:
                finalUnit:
                    description: Final treatment unit
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
                medicalService:
                    description: Medical service information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenPurchaseMedicalService'
        protos.open.OpenRemoveProductOptionCommand:
            type: object
            required:
                - id
                - productId
            properties:
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                productId:
                    description: Product ID
                    type: string
                    format: object-id
        protos.open.OpenReserveByVisitorIdCommandV2:
            type: object
            required:
                - visitorId
                - zoneId
                - occupiedResources
            properties:
                consultationRequired:
                    description: Whether consultation is required
                    type: boolean
                funnelDetail:
                    description: |-
                        Detailed referral source

                        Provided as free text.
                    type: string
                occupiedResources:
                    description: |-
                        Reservation schedule list

                        At least one reservation schedule is required. The reservation start date and time of all entries must be on the same date.
                    type: array
                    minItems: 1
                    items:
                        $ref: '#/components/schemas/protos.open.OccupiedResource'
                requestedProcedures:
                    description: Requested procedure list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure'
                reservationMemo:
                    description: Reservation memo
                    type: string
                sedationRequired:
                    description: Whether sedation is required
                    type: boolean
                visitorId:
                    description: Existing Client ID for creating a reservation
                    type: string
                    format: object-id
                zoneId:
                    description: |-
                        Reception zone ID

                        The ID of the zone the Client will visit.
                    type: string
                    format: object-id
        protos.open.OpenReserveCommandV2:
            type: object
            required:
                - visitorName
                - zoneId
                - occupiedResources
            properties:
                consultationRequired:
                    description: Whether consultation is required
                    type: boolean
                funnelDetail:
                    description: |-
                        Detailed referral source

                        Provided as free text.
                    type: string
                occupiedResources:
                    description: |-
                        Reservation schedule list

                        At least one reservation schedule is required. The reservation start date and time of all entries must be on the same date.
                    type: array
                    minItems: 1
                    items:
                        $ref: '#/components/schemas/protos.open.OccupiedResource'
                requestedProcedures:
                    description: Requested procedure list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure'
                reservationMemo:
                    description: Reservation memo
                    type: string
                sedationRequired:
                    description: Whether sedation is required
                    type: boolean
                visitorBirthDayUtc:
                    description: |-
                        Client date of birth for the reservation

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format. Used to search for duplicate existing Clients and to create a new Client.
                    type: string
                    format: date-time
                visitorConnectedInformation:
                    description: |-
                        Client linkage information

                        LINE or UNNI linkage information. Used to search for duplicate existing Clients and to create a new Client.
                    allOf:
                        - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation'
                visitorEmail:
                    description: |-
                        Client email for the reservation

                        Used to search for duplicate existing Clients and to create a new Client.
                    type: string
                    format: email
                visitorLanguage:
                    description: |-
                        Client language for the reservation

                        Saved in the Client information when creating a new Client. Supported list: ko, ja, en, zh-CN, zh-yue, es, th, ru, id, ms, vi, mn, uz, nl, de, pt, etc.
                    type: string
                visitorName:
                    description: |-
                        Client name for the reservation

                        Used to search for duplicate existing Clients and to create a new Client.
                    type: string
                visitorNationality:
                    description: |-
                        Client nationality for the reservation

                        This is an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. It is saved in the Client information when creating a new Client.
                    type: string
                visitorPassportGivenNames:
                    description: |-
                        Client passport given names for the reservation

                        Saved in the Client information when creating a new Client.
                    type: string
                visitorPassportNumber:
                    description: |-
                        Client passport number for the reservation

                        Used to search for duplicate existing Clients and to create a new Client.
                    type: string
                visitorPassportSurname:
                    description: |-
                        Client passport surname for the reservation

                        Saved in the Client information when creating a new Client.
                    type: string
                visitorPhone:
                    description: |-
                        Client mobile phone number for the reservation

                        Used to search for duplicate existing Clients and to create a new Client.
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                visitorSnsInfo:
                    description: |-
                        Client SNS information for the reservation

                        Used to search for duplicate existing Clients and to create a new Client.
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.SnsInfo'
                zoneId:
                    description: |-
                        Reception zone ID

                        The ID of the zone the Client will visit.
                    type: string
                    format: object-id
        protos.open.OpenReserveCommandV2Response:
            type: object
            required:
                - scheduleId
            properties:
                scheduleId:
                    description: Created schedule ID
                    type: string
                    format: uuid
        protos.open.OpenScheduleStatisticsItem:
            type: object
            required:
                - scheduleId
                - reservationStartDateTimeUtc
                - zoneTitle
                - reservationStatus
                - isFirstProcedureSchedule
                - reservationGroupTitle
                - visitorId
                - visitorChartNumber
            properties:
                consultationDoctorNames:
                    description: Consulting doctor name list
                    type: array
                    items:
                        type: string
                consultationDwellTimeMinute:
                    description: Counseling in-progress stage duration (minutes)
                    type: integer
                    format: int32
                consultationWaitingDwellTimeMinute:
                    description: Counseling waiting stage duration (minutes)
                    type: integer
                    format: int32
                counselorNames:
                    description: Counselor name list
                    type: array
                    items:
                        type: string
                durationMinute:
                    description: Reservation duration (minutes)
                    type: integer
                    format: int32
                isFirstProcedureSchedule:
                    description: Whether it is the first treatment appointment
                    type: boolean
                optionItemTotalPriceV2:
                    description: Treatment payment total at visit
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                paymentTotalAmountV2:
                    description: Actual payment total at visit
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                procedureDoneDwellTimeMinute:
                    description: Discharge waiting stage duration (minutes)
                    type: integer
                    format: int32
                procedureDwellTimeMinute:
                    description: Treatment in-progress stage duration (minutes)
                    type: integer
                    format: int32
                procedureWaitingDwellTimeMinute:
                    description: Treatment waiting stage duration (minutes)
                    type: integer
                    format: int32
                receptionDateTimeUtc:
                    description: Check-in date and time
                    type: string
                    format: date-time
                receptionDwellTimeMinute:
                    description: Reception stage duration (minutes)
                    type: integer
                    format: int32
                referrerAccount:
                    description: Referrer staff information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerAccount'
                requestedCounselorName:
                    description: Requested counselor name
                    type: string
                requestedDoctorName:
                    description: Requested doctor name
                    type: string
                requestedDoctorNames:
                    description: Requested doctor name list
                    type: array
                    items:
                        type: string
                requestedOptionProcedureNames:
                    description: Requested procedure name list
                    type: array
                    items:
                        type: string
                requestedOptionTitles:
                    description: Requested product option title list
                    type: array
                    items:
                        type: string
                requestedProductCategoryNames:
                    description: Requested product category name list
                    type: array
                    items:
                        type: string
                requestedProductOptionTotalPriceV2:
                    description: Desired treatment option total amount
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                requestedProductTitles:
                    description: Requested product title list
                    type: array
                    items:
                        type: string
                reservationAssigneeName:
                    description: Reservation staff name
                    type: string
                reservationFunnelCategoryName:
                    description: Reservation acquisition channel category name
                    type: string
                reservationFunnelDetail:
                    description: Reservation acquisition channel detail
                    type: string
                reservationFunnelName:
                    description: Reservation acquisition channel name
                    type: string
                reservationGroupOccupiedResources:
                    description: Reservation group occupied resource list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.OpenScheduleStatisticsReservationGroupOccupiedResource'
                reservationGroupTitle:
                    description: Reservation group title
                    type: string
                reservationMemo:
                    description: Reservation memo
                    type: string
                reservationStartDateTimeUtc:
                    description: |-
                        Reservation start date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format. Example: `2026-05-31T09:00:00Z`
                    type: string
                    format: date-time
                reservationStatus:
                    description: |
                        Reservation status

                        | Value | Meaning |
                        | --- | --- |
                        | `RESERVED` | Reserved |
                        | `CANCELED` | Canceled |
                        | `NO_SHOW` | No-show |
                        | `IN_PROGRESS` | In progress |
                        | `COMPLETED` | Completed |
                    type: string
                    enum:
                        - RESERVATION_STATUS_UNSPECIFIED
                        - RESERVED
                        - CANCELED
                        - NO_SHOW
                        - IN_PROGRESS
                        - COMPLETED
                reservedDateTimeUtc:
                    description: Reservation created date and time
                    type: string
                    format: date-time
                scheduleId:
                    description: Schedule ID
                    type: string
                    format: object-id
                visitorAgreementAdvertisements:
                    description: Advertising information consent
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: Informational notification consent
                    type: boolean
                visitorCategoryNames:
                    description: Client category name list
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: Client chart number
                    type: string
                visitorCreatedDateTimeUtc:
                    description: Client registration date and time
                    type: string
                    format: date-time
                visitorFunnelCategoryName:
                    description: Client acquisition channel category name
                    type: string
                visitorFunnelDetail:
                    description: Client acquisition channel detail
                    type: string
                visitorFunnelName:
                    description: Client acquisition channel name
                    type: string
                visitorGender:
                    description: Client gender
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
                visitorMemo:
                    description: Client memo
                    type: string
                visitorNationality:
                    description: Client nationality
                    type: string
                zoneTitle:
                    description: Zone title
                    type: string
        protos.open.OpenScheduleStatisticsReservationGroupOccupiedResource:
            type: object
            required:
                - reservationGroupTitle
                - zoneTitle
            properties:
                reservationGroupTitle:
                    description: Reservation group title
                    type: string
                zoneTitle:
                    description: Occupied zone title
                    type: string
        protos.open.OpenStatisticsAssignee:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Staff name
                    type: string
                id:
                    description: Staff ID
                    type: string
                    format: object-id
        protos.open.OpenStatisticsReferrerAccount:
            type: object
            required:
                - accountId
                - accountName
            properties:
                accountId:
                    description: Referrer staff ID
                    type: string
                    format: object-id
                accountName:
                    description: Referrer staff name
                    type: string
        protos.open.OpenStatisticsReferrerVisitor:
            type: object
            required:
                - visitorId
                - chartNumber
            properties:
                chartNumber:
                    description: Referring client chart number
                    type: string
                visitorId:
                    description: Referring client ID
                    type: string
                    format: object-id
        protos.open.OpenTransactionStatisticsCost:
            type: object
            required:
                - totalAmount
                - suppliedAmount
                - vatAmount
            properties:
                suppliedAmount:
                    description: Supplied amount
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalAmount:
                    description: Total payment amount
                    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: Acquirer name
                    type: string
                assigneeName:
                    description: Staff name
                    type: string
                cardApprovalNumber:
                    description: Card approval number
                    type: string
                cardCompanyName:
                    description: Card company name. Returned only when `paymentType` is `CARD`.
                    type: string
                cardInstallmentMonths:
                    description: Card installment months. Returned only when `paymentType` is `CARD`.
                    type: integer
                    format: int32
                cost:
                    description: Payment amount details
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenTransactionStatisticsCost'
                easyPayApprovalNumber:
                    description: Easy pay approval number. Returned only when `paymentType` is `EASY_PAY`.
                    type: string
                easyPayProviderName:
                    description: Easy pay provider name. Returned only when `paymentType` is `EASY_PAY`.
                    type: string
                incomeTaxDeductionNumber:
                    description: Cash receipt approval number
                    type: string
                issuerName:
                    description: Issuer name
                    type: string
                lastUpdatedPaymentDateTimeUtc:
                    description: Last payment status change date and time
                    type: string
                    format: date-time
                medicalLoanCompanyName:
                    description: Medical loan company name. Returned only when `paymentType` is `MEDICAL_LOAN`.
                    type: string
                paymentType:
                    description: Payment method
                    type: string
                    enum:
                        - TransactionPaymentType_UNSPECIFIED
                        - CASH
                        - CARD
                        - PREPAID_CARD
                        - PLATFORM
                        - TRANSFER
                        - EASY_PAY
                        - MEDICAL_LOAN
                platformName:
                    description: Platform name. Returned only when `paymentType` is `PLATFORM`.
                    type: string
                purchaseAssigneeNames:
                    description: Staff name list
                    type: array
                    items:
                        type: string
                purchaseId:
                    description: Purchase ID
                    type: string
                    format: object-id
                purchaseMemo:
                    description: Payment memo
                    type: string
                referrerAccount:
                    description: Referring staff information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenTransactionStatisticsReferrerAccount'
                referrerUnregisteredName:
                    description: Unregistered referrer name
                    type: string
                referrerVisitor:
                    description: Referring client information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenTransactionStatisticsReferrerVisitor'
                reservationFunnelCategoryName:
                    description: Reservation acquisition channel category name
                    type: string
                reservationFunnelDetail:
                    description: Reservation acquisition channel detail
                    type: string
                reservationFunnelName:
                    description: Reservation acquisition channel name
                    type: string
                status:
                    description: Transaction status
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                taxCharged:
                    description: Whether tax was charged
                    type: boolean
                visitorAgreementAdvertisements:
                    description: Whether the client agreed to receive advertising information
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: Whether the client agreed to receive informational notifications
                    type: boolean
                visitorCategoryNames:
                    description: Client category name list
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: Client chart number
                    type: string
                visitorCreatedDateTimeUtc:
                    description: Client registration date and time
                    type: string
                    format: date-time
                visitorFunnelCategoryName:
                    description: Client acquisition channel category name
                    type: string
                visitorFunnelDetail:
                    description: Client acquisition channel detail
                    type: string
                visitorFunnelName:
                    description: Client acquisition channel name
                    type: string
                visitorGender:
                    description: Client gender
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
                visitorNationality:
                    description: Client nationality
                    type: string
        protos.open.OpenTransactionStatisticsReferrerAccount:
            type: object
            required:
                - accountId
                - accountName
            properties:
                accountId:
                    description: Referring staff ID
                    type: string
                    format: object-id
                accountName:
                    description: Referring staff name
                    type: string
        protos.open.OpenTransactionStatisticsReferrerVisitor:
            type: object
            required:
                - visitorId
                - chartNumber
            properties:
                chartNumber:
                    description: Referring client chart number
                    type: string
                visitorId:
                    description: Referring client ID
                    type: string
                    format: object-id
        protos.open.OpenUpdateProductInformationCommand:
            type: object
            required:
                - id
                - title
                - description
                - closed
            properties:
                title:
                    description: Product name
                    type: string
                description:
                    description: Product description
                    type: string
                badges:
                    description: |
                        Badge list

                        Passed as an integer value.

                        Badge type

                        | Value | Meaning |
                        | --- | --- |
                        | `NEW` | New |
                        | `POPULAR` | Popular |
                        | `RECOMMENDED` | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                categoryIds:
                    description: Product category ID list
                    type: array
                    items:
                        type: string
                        format: object-id
                caution:
                    description: Caution
                    type: string
                closed:
                    description: |-
                        Whether the product is closed for sale

                        `true` means the product is not available for purchase.
                    type: boolean
                contentImageUrl:
                    description: Content image URL
                    type: string
                    format: uri
                coverImageUrl:
                    description: Cover image URL
                    type: string
                    format: uri
                displayPeriod:
                    description: |-
                        Product display period

                        If not set, the product is always visible.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                id:
                    description: Product ID
                    type: string
                    format: object-id
                isEvent:
                    description: |-
                        Whether this is an event product

                        `true` marks the product as an event product.
                    type: boolean
                offeringPeriod:
                    description: |-
                        Product offering period

                        If not set, the product is available at all times.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                targetCountryCodes:
                    description: |-
                        Target country code list

                        This is an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. Other countries are passed as `ETC`.
                    type: array
                    items:
                        type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        Fields supporting multilingual translations: `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `SINGLE` | Single option — composed of one medical service |
                        | `GROUP` | Group option — composed of multiple medical services |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: CONSULTATION
                    enum:
                        - CONSULTATION
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                productId:
                    description: Product ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        Multilingual translation map

                        Fields supporting multilingual translations: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    consultationOptionConfiguration:
                        description: |-
                            Consultation option configuration

                            Required when `type` is `CONSULTATION`.
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionConsultationConfiguration'
                  required:
                    - consultationOptionConfiguration
                  title: |-
                    Consultation option configuration

                    Required when `type` is `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `SINGLE` | Single option — composed of one medical service |
                        | `GROUP` | Group option — composed of multiple medical services |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                productId:
                    description: Product ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        Multilingual translation map

                        Fields supporting multilingual translations: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    groupOptionConfiguration:
                        description: |-
                            Group option configuration

                            Required when `type` is `GROUP`.
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionGroupConfiguration'
                  required:
                    - groupOptionConfiguration
                  title: |-
                    Group option configuration

                    Required when `type` is `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `SINGLE` | Single option — composed of one medical service |
                        | `GROUP` | Group option — composed of multiple medical services |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                productId:
                    description: Product ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        Multilingual translation map

                        Fields supporting multilingual translations: `title`, `description`
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
            oneOf:
                - properties:
                    singleOptionConfiguration:
                        description: |-
                            Single option configuration

                            Required when `type` is `SINGLE`.
                        allOf:
                            - $ref: '#/components/schemas/protos.open.OpenProductOptionSingleConfiguration'
                  required:
                    - singleOptionConfiguration
                  title: |-
                    Single option configuration

                    Required when `type` is `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: |-
                        Reservation schedule list to update

                        At least one reservation schedule is required. The reservation start date and time for all entries must be on the same date.
                    type: array
                    minItems: 1
                    items:
                        $ref: '#/components/schemas/protos.open.OccupiedResource'
                scheduleId:
                    description: Reservation schedule ID to update
                    type: string
                    format: uuid
                zoneId:
                    description: |-
                        Reception zone ID

                        The ID of the zone to be set as the reception zone for the reservation.
                    type: string
                    format: object-id
        protos.open.OpenUpdateScheduleConsultationInfoCommand:
            type: object
            required:
                - scheduleId
            properties:
                consultationMemo:
                    description: |-
                        Consultation memo

                        If not provided, the value will not be changed.
                    type: string
                scheduleId:
                    description: Schedule ID to update
                    type: string
                    format: uuid
        protos.open.OpenVisitorStatisticsItem:
            type: object
            required:
                - visitorId
                - visitorChartNumber
                - visitorCreatedDateTimeUtc
                - isCompletedPurchase
                - isCompletedProcedureTask
                - totalCompletedScheduleCount
                - totalTicketCount
                - totalAvailableTicketCount
                - totalCompletedProcedureTaskCount
            properties:
                firstCompletedProcedureTaskDateTimeUtc:
                    description: First treatment task completion date and time
                    type: string
                    format: date-time
                firstCompletedPurchaseDateTimeUtc:
                    description: First purchase completion date and time
                    type: string
                    format: date-time
                firstReservationDateTimeUtc:
                    description: First reservation date and time
                    type: string
                    format: date-time
                firstVisitedDateTimeUtc:
                    description: First visit date and time
                    type: string
                    format: date-time
                firstVisitedTotalTransactionAmountV2:
                    description: Payment revenue at first visit
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                isCompletedProcedureTask:
                    description: Whether a treatment task has been completed
                    type: boolean
                isCompletedPurchase:
                    description: Whether purchase has been completed
                    type: boolean
                lastVisitedDateTimeUtc:
                    description: Most recent visit date and time
                    type: string
                    format: date-time
                referrerAccount:
                    description: Referrer staff information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.OpenStatisticsReferrerAccount'
                totalAvailableTicketAmountV2:
                    description: Total remaining treatment ticket liability
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                totalAvailableTicketCount:
                    description: Number of remaining treatment tickets
                    type: integer
                    format: int32
                totalCompletedProcedureTaskCount:
                    description: Number of completed treatment tasks
                    type: integer
                    format: int64
                totalCompletedScheduleCount:
                    description: Number of completed appointments
                    type: integer
                    format: int32
                totalPrepaidCardBalanceV2:
                    description: Cumulative total prepaid card cash
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalPrepaidCardPointV2:
                    description: Cumulative total prepaid card points
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalPrepaidCardRemainBalanceV2:
                    description: Total remaining prepaid card cash balance
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalPrepaidCardRemainPointV2:
                    description: Total remaining prepaid card points balance
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalTicketAmountV2:
                    description: Cumulative treatment payment revenue
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                totalTicketCount:
                    description: Number of issued treatment tickets
                    type: integer
                    format: int32
                totalTransactionAmountV2:
                    description: Cumulative payment revenue
                    allOf:
                        - $ref: '#/components/schemas/protos.Money'
                totalUsedTicketAmountV2:
                    description: Cumulative treatment realized revenue
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                visitorAgreementAdvertisements:
                    description: Advertising information consent
                    type: boolean
                visitorAgreementInformationalNotification:
                    description: Informational notification consent
                    type: boolean
                visitorCategoryNames:
                    description: Client category name list
                    type: array
                    items:
                        type: string
                visitorChartNumber:
                    description: Client chart number
                    type: string
                visitorCreatedDateTimeUtc:
                    description: Client registration date and time
                    type: string
                    format: date-time
                visitorFunnelCategoryId:
                    description: Client acquisition channel category ID
                    type: string
                    format: object-id
                visitorFunnelCategoryName:
                    description: Client acquisition channel category name
                    type: string
                visitorFunnelDetail:
                    description: Client acquisition channel detail
                    type: string
                visitorFunnelId:
                    description: Client acquisition channel ID
                    type: string
                    format: object-id
                visitorFunnelName:
                    description: Client acquisition channel name
                    type: string
                visitorGender:
                    description: Client gender
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
                visitorMemo:
                    description: Client memo
                    type: string
                visitorNationality:
                    description: Client nationality
                    type: string
        protos.open.RegisterVisitorImages:
            type: object
            properties:
                images:
                    description: |-
                        List of Client images to register

                        Each item is registered as a single Client image. Registered images are created in a non-deleted state.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.image.RegisterVisitorImageConfiguration'
        protos.open.RescheduleByTimeSlotCommand:
            type: object
            required:
                - scheduleId
                - reservationDateTimeRange
            properties:
                reservationDateTimeRange:
                    description: |-
                        Reservation time to change to

                        Pass the time range of a slot available for reservation rescheduling returned by `getReschedulableTimeSlots`.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                scheduleId:
                    description: Schedule ID
                    type: string
                    format: object-id
        protos.open.ReservationGroupOccupiedResourceSlot:
            type: object
            required:
                - occupiedResourceId
                - reservationGroupId
                - zoneId
            properties:
                occupiedResourceId:
                    description: |-
                        Reservation schedule identifier

                        Identifies the occupied resource within the schedule. Existing reservations without occupied resources return a compatibility ID.
                    type: string
                reservationGroupId:
                    description: Reservation group ID for the reservation schedule
                    type: string
                    format: object-id
                slots:
                    description: |-
                        List of available slots for the corresponding reservation schedule

                        Only slots that pass the capacity, reservation policy, closed days, and reservation group start date conditions are included. If there are no available slots within the search range, an empty array is returned.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.ReservationSlot'
                zoneId:
                    description: Zone ID for the reservation schedule
                    type: string
                    format: object-id
        protos.open.ReservationGroupSlots:
            type: object
            required:
                - reservationGroupId
                - zoneId
            properties:
                reservationGroupId:
                    description: Reservation group ID that the slot belongs to
                    type: string
                    format: object-id
                slots:
                    description: |-
                        List of available slots for the corresponding reservation group and zone

                        Only slots that pass the capacity, reservation policy, closed days, and reservation group start date conditions are included. If there are no available slots within the query range, an empty array is returned.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.ReservationSlot'
                zoneId:
                    description: Zone ID that the slot belongs to
                    type: string
                    format: object-id
        protos.open.ReservationSlot:
            type: object
            required:
                - reservationGroupId
                - zone
                - startDateTimeUtc
                - endDateTimeUtc
                - capacity
                - reservationCount
            properties:
                capacity:
                    description: Maximum number of reservations available for the slot
                    type: integer
                    format: int32
                endDateTimeUtc:
                    description: |-
                        Reservation end date-time

                        Format is [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time.
                    type: string
                    format: date-time
                reservationCount:
                    description: Current number of reservations
                    type: integer
                    format: int32
                reservationGroupId:
                    description: Reservation group ID
                    type: string
                    format: object-id
                startDateTimeUtc:
                    description: |-
                        Reservation start date-time

                        Format is [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time.
                    type: string
                    format: date-time
                zone:
                    description: Zone information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.ReservationSlotZoneConfiguration'
        protos.open.ReservationSlotZoneConfiguration:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Zone name
                    type: string
                id:
                    description: Zone ID
                    type: string
                    format: object-id
        protos.open.ReserveByTimeSlotCommand:
            type: object
            required:
                - reservationDateTimeRange
                - visitorName
                - visitorPhone
            properties:
                consultationRequired:
                    description: Whether consultation is required
                    type: boolean
                funnel:
                    description: |-
                        Funnel information

                        If omitted, or if both the funnel category and funnel name are empty (including cases where they are disabled and ignored), the default funnel based on the channel will be set.
                    allOf:
                        - $ref: '#/components/schemas/protos.open.CreateReservationFunnel'
                requestedProcedures:
                    description: Requested procedure list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.CreateReservationRequestedProcedure'
                reservationDateTimeRange:
                    description: |-
                        Reservation time

                        Pass the time range of the available reservation time slot that was queried.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                reservationMemo:
                    description: Reservation memo
                    type: string
                reservationRuleId:
                    description: |-
                        Booking rule ID

                        Pass the same value as the `reservationRuleId` used when querying slots. If omitted, the default booking rule is used.
                    type: string
                    format: object-id
                sedationRequired:
                    description: Whether sedation is required
                    type: boolean
                visitorBirthDayUtc:
                    description: Client date of birth
                    type: string
                    format: date-time
                visitorCategoryIds:
                    description: Client category ID list
                    type: array
                    items:
                        type: string
                        format: object-id
                visitorConnectedInformation:
                    description: Client connected information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation'
                visitorEmail:
                    description: Client email address
                    type: string
                    format: email
                visitorGender:
                    description: Client gender
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                visitorIsNew:
                    description: Whether the Client is new
                    type: boolean
                visitorLanguageCode:
                    description: |-
                        Client language code

                        Uses a locale code.
                    type: string
                visitorName:
                    description: Client name
                    type: string
                visitorNationality:
                    description: |-
                        Client nationality

                        This is an ISO 3166-1 alpha-2 country code.
                    type: string
                visitorPassportGivenNames:
                    description: Client passport given names
                    type: string
                visitorPassportNumber:
                    description: Client passport number
                    type: string
                visitorPassportSurname:
                    description: Client passport surname
                    type: string
                visitorPhone:
                    description: Client phone number
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                visitorRequest:
                    description: Client request
                    type: string
                visitorSnsInfo:
                    description: Client SNS information
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.SnsInfo'
        protos.open.ReserveByTimeSlotCommandResponse:
            type: object
            required:
                - scheduleId
            properties:
                scheduleId:
                    description: Created schedule ID
                    type: string
                    format: uuid
        protos.open.ReserveByTimeSlotWithVisitorIdCommand:
            type: object
            required:
                - reservationDateTimeRange
                - visitorId
            properties:
                consultationRequired:
                    description: Whether consultation is required
                    type: boolean
                funnel:
                    description: |-
                        Funnel information

                        If omitted, or if both the funnel category and funnel name are empty (including cases where they are disabled and ignored), the default funnel based on the channel will be set.
                    allOf:
                        - $ref: '#/components/schemas/protos.open.CreateReservationFunnel'
                requestedProcedures:
                    description: Requested procedure list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.CreateReservationRequestedProcedure'
                reservationDateTimeRange:
                    description: |-
                        Reservation time

                        Pass the time range of the available reservation time slot that was queried.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                reservationMemo:
                    description: Reservation memo
                    type: string
                reservationRuleId:
                    description: |-
                        Booking rule ID

                        Pass the same value as the `reservationRuleId` used when querying slots. If omitted, the default booking rule is used.
                    type: string
                    format: object-id
                sedationRequired:
                    description: Whether sedation is required
                    type: boolean
                visitorConnectedInformation:
                    description: Client connected information
                    allOf:
                        - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation'
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
                visitorRequest:
                    description: Client request
                    type: string
        protos.open.ReserveByTimeSlotWithVisitorIdCommandResponse:
            type: object
            required:
                - scheduleId
            properties:
                scheduleId:
                    description: Created schedule ID
                    type: string
                    format: uuid
        protos.open.ReserveByVisitorIdCommand:
            type: object
            required:
                - visitorId
                - reservationGroupId
                - zoneId
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                consultationRequired:
                    description: Whether consultation is required
                    type: boolean
                endDateTimeUtc:
                    description: |-
                        Reservation end date-time

                        Format is [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time.
                    type: string
                    format: date-time
                funnelDetail:
                    description: |-
                        Detailed referral source

                        Provided as free text.
                    type: string
                requestedProcedures:
                    description: Requested procedure list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure'
                reservationGroupId:
                    description: Reservation group ID
                    type: string
                    format: object-id
                reservationMemo:
                    description: Reservation memo
                    type: string
                sedationRequired:
                    description: Whether sedation is required
                    type: boolean
                startDateTimeUtc:
                    description: |-
                        Reservation start date-time

                        Format is [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time.
                    type: string
                    format: date-time
                visitorId:
                    description: Existing Client ID
                    type: string
                    format: object-id
                zoneId:
                    description: |-
                        Reservation zone ID

                        The ID of the zone where the reservation will be created.
                    type: string
                    format: object-id
        protos.open.ReserveCommand:
            type: object
            required:
                - visitorName
                - reservationGroupId
                - zoneId
                - startDateTimeUtc
                - endDateTimeUtc
            properties:
                consultationRequired:
                    description: Consultation required status
                    type: boolean
                endDateTimeUtc:
                    description: |-
                        Reservation end date-time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                funnelDetail:
                    description: |-
                        Detailed referral source

                        Provided as free text.
                    type: string
                requestedProcedures:
                    description: Requested procedure list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure'
                reservationGroupId:
                    description: Reservation group ID
                    type: string
                    format: object-id
                reservationMemo:
                    description: Reservation memo
                    type: string
                sedationRequired:
                    description: Sedation required status
                    type: boolean
                startDateTimeUtc:
                    description: |-
                        Reservation start date-time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                visitorBirthDayUtc:
                    description: |-
                        Client date of birth for the reservation

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format. Used to search for duplicate existing Clients and to create a new Client.
                    type: string
                    format: date-time
                visitorConnectedInformation:
                    description: |-
                        Client linkage information

                        LINE or UNNI linkage information. Used to search for duplicate existing Clients and to create a new Client.
                    allOf:
                        - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation'
                visitorEmail:
                    description: |-
                        Client email for the reservation

                        Used to search for duplicate existing Clients and to create a new Client.
                    type: string
                    format: email
                visitorLanguage:
                    description: |-
                        Client language for the reservation

                        Saved in the Client information when creating a new Client. Supported list: ko, ja, en, zh-CN, zh-yue, es, th, ru, id, ms, vi, mn, uz, nl, de, pt, etc.
                    type: string
                visitorName:
                    description: |-
                        Client name for the reservation

                        Used to search for duplicate existing Clients and to create a new Client.
                    type: string
                visitorNationality:
                    description: |-
                        Client nationality for the reservation

                        This is an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. It is saved in the Client information when creating a new Client.
                    type: string
                visitorPassportGivenNames:
                    description: |-
                        Client passport given names for the reservation

                        Saved in the Client information when creating a new Client.
                    type: string
                visitorPassportNumber:
                    description: |-
                        Client passport number for the reservation

                        Used to search for duplicate existing Clients and to create a new Client.
                    type: string
                visitorPassportSurname:
                    description: |-
                        Client passport surname for the reservation

                        Saved in the Client information when creating a new Client.
                    type: string
                visitorPhone:
                    description: |-
                        Client mobile phone number for the reservation

                        Used to search for duplicate existing Clients and to create a new Client.
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                visitorSnsInfo:
                    description: |-
                        Client SNS information for the reservation

                        Used to search for duplicate existing Clients and to create a new Client.
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.SnsInfo'
                zoneId:
                    description: |-
                        Reservation zone ID

                        The ID of the zone where the reservation will be created.
                    type: string
                    format: object-id
        protos.open.ReserveCommandResponse:
            type: object
            required:
                - reservationId
            properties:
                reservationId:
                    description: Created reservation ID
                    type: string
                    format: uuid
        protos.open.SearchProductOptionSummariesQuery:
            type: object
            required:
                - searchText
            properties:
                searchText:
                    description: Search keyword
                    type: string
                targetCountryCode:
                    description: |-
                        Target country code

                        This is an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. Other countries are passed as `ETC`.
                    type: string
        protos.open.SearchVisitors:
            type: object
            required:
                - offset
                - limit
            properties:
                chartNumber:
                    description: |-
                        Chart number to use as a search condition

                        Searches for Clients whose stored chart number matches.
                    type: string
                dateOfBirth:
                    description: |-
                        Date of birth to use as a search condition

                        Provide an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time string with offset, or a string in the `yyyy-MM-dd HH:mm:ss.SSS'Z'` pattern. Searches for Clients whose stored date of birth matches.
                    type: string
                email:
                    description: |-
                        Email address to use as a search condition

                        Used as an additional search condition when provided together with one of `phone`, `chartNumber`, or `dateOfBirth`. Searches for Clients whose stored email address matches.
                    type: string
                    format: email
                limit:
                    description: Query count
                    type: integer
                    format: int32
                offset:
                    description: Query start position
                    type: integer
                    format: int32
                partOfVisitorName:
                    description: |-
                        Client name search term

                        Used as an additional search condition when provided together with one of `phone`, `chartNumber`, or `dateOfBirth`. Searches by a string contained in the Client name or phonetic name.
                    type: string
                phone:
                    description: |-
                        Phone number to use as a search condition

                        Searches for Clients where both `countryCode` and `phoneNumber` match.
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
        protos.open.SearchVisitorsResponse:
            type: object
            properties:
                data:
                    description: |-
                        Retrieved Client list

                        A list of Clients who have not been deleted and match the specified conditions. If no matching Clients are found, an empty list is returned.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.open.VisitorInformation'
        protos.open.SubmitVisitorQuestionnaireCommand:
            type: object
            required:
                - visitorId
                - name
                - dateOfBirth
                - gender
            properties:
                name:
                    description: Client name to save in the questionnaire response
                    type: string
                address:
                    description: |-
                        Client address to save in the questionnaire response

                        If provided, it is saved in the questionnaire response. It is also reflected in the Client information only when existing Client address information is present.
                    type: string
                addressDetail:
                    description: |-
                        Client detailed address to save in the questionnaire response

                        If provided, it is saved in the questionnaire response. It is also reflected in the Client information only when existing Client address information is present.
                    type: string
                agreements:
                    description: |-
                        Terms agreement item list to submit

                        If an item has a `type`, it is reflected in the Client consent information for that type.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.SubmittedQuestionnaireAgreement'
                answers:
                    description: Questionnaire response list to submit
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.SelectedAnswer'
                dateOfBirth:
                    description: |-
                        Client date of birth

                        For initial consultation questionnaire submission requests, it is passed as an 8-digit string in the `yyyyMMdd` pattern.
                    type: string
                gender:
                    description: |
                        Client gender

                        | Value | Meaning |
                        | --- | --- |
                        | `GENDER_UNSPECIFIED` | Unspecified |
                        | `MALE` | Male |
                        | `FEMALE` | Female |
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                phone:
                    description: |-
                        Client mobile phone number to save in the questionnaire response

                        If provided, the mobile phone number in the Client information will also be updated.
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                phoneticName:
                    description: |-
                        Client phonetic name to save in the questionnaire response

                        If provided, it is also reflected in the Client information.
                    type: string
                registrationNumber:
                    description: |-
                        Resident registration number to save in the questionnaire response

                        If provided, it is also reflected in the Client information.
                    type: string
                visitorId:
                    description: Client ID for which the questionnaire is to be submitted
                    type: string
                    format: object-id
        protos.open.SubmitVisitorQuestionnaireCommandResponse:
            type: object
            required:
                - questionnaireId
            properties:
                questionnaireId:
                    description: Generated questionnaire response ID
                    type: string
                    format: object-id
        protos.open.VisitorConnectedInformation:
            type: object
            oneOf:
                - properties:
                    line:
                        description: LINE linkage information
                        allOf:
                            - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation.Line'
                  required:
                    - line
                  title: LINE linkage information
                  type: object
                - properties:
                    unni:
                        description: UNNI linkage information
                        allOf:
                            - $ref: '#/components/schemas/protos.open.VisitorConnectedInformation.Unni'
                  required:
                    - unni
                  title: UNNI linkage information
                  type: object
        protos.open.VisitorConnectedInformation.Line:
            type: object
            required:
                - id
                - channelId
                - liffId
                - displayName
            properties:
                channelId:
                    description: LINE channel ID
                    type: string
                displayName:
                    description: LINE display name
                    type: string
                id:
                    description: LINE User ID
                    type: string
                liffId:
                    description: LINE LIFF ID
                    type: string
        protos.open.VisitorConnectedInformation.Unni:
            type: object
            required:
                - id
                - nickname
            properties:
                id:
                    description: UNNI user ID
                    type: string
                nickname:
                    description: UNNI nickname
                    type: string
        protos.open.VisitorInformation:
            type: object
            required:
                - id
                - chartNumber
                - name
            properties:
                name:
                    description: Client Name
                    type: string
                additionalPhoneNumber:
                    description: Additional Phone Number
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                chartNumber:
                    description: Chart Number
                    type: string
                dateOfBirth:
                    description: Date of Birth
                    type: string
                gender:
                    description: |
                        Gender

                        | Value | Meaning |
                        | --- | --- |
                        | `GENDER_UNSPECIFIED` | Unspecified |
                        | `MALE` | Male |
                        | `FEMALE` | Female |
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                id:
                    description: Client ID
                    type: string
                    format: object-id
                nationality:
                    description: Nationality
                    type: string
                passportGivenNames:
                    description: Passport given names
                    type: string
                passportSurname:
                    description: Passport surname
                    type: string
                phoneNumber:
                    description: Phone Number
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
        protos.procedure.Category:
            type: object
            required:
                - id
                - name
                - order
                - deleted
                - opened
            properties:
                name:
                    description: Product Category Name
                    type: string
                deleted:
                    description: Deletion Status
                    type: boolean
                id:
                    description: Product Category ID
                    type: string
                    format: object-id
                opened:
                    description: Visibility
                    type: boolean
                order:
                    description: Sort Order
                    type: integer
                    format: int32
                translsMap:
                    description: Multilingual Translation Map
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.procedure.CommonProcedureConfiguration:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Common procedure name
                    type: string
                id:
                    description: Common procedure ID
                    type: string
                    format: object-id
        protos.procedure.GetCategoriesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        List of visible product categories

                        In the Open API, only visible categories are included regardless of the request value.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.Category'
        protos.procedure.GetOpenProductsQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        Product detail information list

                        Only includes products that can be exposed on the channel corresponding to the requested API Key. The `options` in the response product only include non-deleted product options that can be exposed on that channel.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.OpenProductDetailContract'
        protos.procedure.GetProductOptionsQuery:
            type: object
            required:
                - optionIds
                - includePromotions
            properties:
                includePromotions:
                    description: |-
                        Whether to include promotions

                        Deprecated.
                    deprecated: true
                    type: boolean
                optionIds:
                    description: |-
                        List of product option IDs to retrieve

                        At least one must be provided.
                    type: array
                    minItems: 1
                    items:
                        type: string
                        format: object-id
                refOptionIds:
                    description: |-
                        Reference option ID list

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        type: string
        protos.procedure.GetProductOptionsQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        List of product option details

                        Only includes non-deleted product options belonging to non-deleted, active products among the requested `optionIds`. Deleted products, inactive products, deleted product options, and non-existent `optionIds` are not included in the response.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductOptionDetail'
        protos.procedure.GetTargetCountriesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        Target country list

                        Sorted in ascending order by `order`.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.TargetCountryContract'
        protos.procedure.MedicineAndMachine:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Device/medication name
                    type: string
                id:
                    description: Device/medication ID
                    type: string
                    format: object-id
        protos.procedure.OpenProductDetailContract:
            type: object
            required:
                - id
                - title
                - description
                - deleted
                - closed
            properties:
                title:
                    description: Product name
                    type: string
                description:
                    description: Product description
                    type: string
                badges:
                    description: |
                        Badge list

                        Delivered as integer values.

                        | Value | rawValue | Meaning |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | Unknown |
                        | `NEW` | 1 | New |
                        | `POPULAR` | 2 | Popular |
                        | `RECOMMENDED` | 3 | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                categories:
                    description: Category list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductCategory'
                caution:
                    description: Caution
                    type: string
                cautions:
                    description: |-
                        Caution list

                        Deprecated. Replacement field: `caution`.
                    deprecated: true
                    type: array
                    items:
                        type: string
                closed:
                    description: |-
                        Product deactivation status

                        `false` means active, `true` means inactive.
                    type: boolean
                contentImageUrl:
                    description: Content image URL
                    type: string
                coverImageUrl:
                    description: Cover image URL
                    type: string
                deleted:
                    description: Deleted status
                    type: boolean
                displayPeriod:
                    description: |-
                        Product display period

                        If not set, it is displayed at all times.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                endDateTimeUtc:
                    description: |-
                        Product sale end date and time

                        Deprecated. Use `offeringPeriod` or `displayPeriod`. Maintained for backward compatibility; the value corresponding to the end date and time of `offeringPeriod` is delivered. UTC [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) value.
                    deprecated: true
                    type: string
                id:
                    description: Product ID
                    type: string
                    format: object-id
                isEvent:
                    description: Event product status
                    type: boolean
                medicineAndMachines:
                    description: Device and medication list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                offeringPeriod:
                    description: |-
                        Product reservation/payment available period

                        If not set, it is available at all times.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                options:
                    description: Product option list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.OpenProductOptionDetail'
                order:
                    description: Sort order
                    type: integer
                    format: int32
                startDateTimeUtc:
                    description: |-
                        Product sale start date and time

                        Deprecated. Use `offeringPeriod` or `displayPeriod`. Maintained for backward compatibility; the value corresponding to the start date and time of `offeringPeriod` is delivered. UTC [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) value.
                    deprecated: true
                    type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `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: Composition name
                    type: string
                count:
                    description: Number of procedures
                    type: integer
                    format: int32
                medicalService:
                    description: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: Device and medication list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: Price information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenProductOptionPrice'
                procedure:
                    description: Procedure information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                refSingleOptionId:
                    description: Reference single option ID
                    deprecated: true
                    type: string
                unit:
                    description: Unit
                    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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: CONSULTATION
                    enum:
                        - CONSULTATION
                badges:
                    description: |
                        Badge list

                        Delivered as integer values.

                        | Value | rawValue | Meaning |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | Unknown |
                        | `NEW` | 1 | New |
                        | `POPULAR` | 2 | Popular |
                        | `RECOMMENDED` | 3 | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                deleted:
                    description: Deleted status
                    type: boolean
                displayChannels:
                    description: |
                        Display channel list

                        | Value | Meaning |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | Unknown |
                        | `HOMEPAGE` | Homepage |
                        | `GANGNAMUNNI` | UNNI |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: Frequently used procedure status
                    type: boolean
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                promotionConfigurations:
                    description: |-
                        Promotion configuration list

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                badges:
                    description: |
                        Badge list

                        Delivered as integer values.

                        | Value | rawValue | Meaning |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | Unknown |
                        | `NEW` | 1 | New |
                        | `POPULAR` | 2 | Popular |
                        | `RECOMMENDED` | 3 | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                compositions:
                    description: |-
                        Procedure composition list for group options

                        Used for options where `type` is `GROUP`.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.OpenProductGroupOptionComposition'
                deleted:
                    description: Deleted status
                    type: boolean
                displayChannels:
                    description: |
                        Display channel list

                        | Value | Meaning |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | Unknown |
                        | `HOMEPAGE` | Homepage |
                        | `GANGNAMUNNI` | UNNI |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: Frequently used procedure status
                    type: boolean
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                price:
                    description: Price information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenProductOptionPrice'
                promotionConfigurations:
                    description: |-
                        Promotion configuration list

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                badges:
                    description: |
                        Badge list

                        Delivered as integer values.

                        | Value | rawValue | Meaning |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | Unknown |
                        | `NEW` | 1 | New |
                        | `POPULAR` | 2 | Popular |
                        | `RECOMMENDED` | 3 | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                count:
                    description: Number of procedures
                    type: integer
                    format: int32
                deleted:
                    description: Deleted status
                    type: boolean
                displayChannels:
                    description: |
                        Display channel list

                        | Value | Meaning |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | Unknown |
                        | `HOMEPAGE` | Homepage |
                        | `GANGNAMUNNI` | UNNI |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: Frequently used procedure status
                    type: boolean
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                medicalService:
                    description: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: Device and medication list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: Price information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenProductOptionPrice'
                procedure:
                    description: Procedure information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                promotionConfigurations:
                    description: |-
                        Promotion configuration list

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `title`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: Unit
                    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: Special price list by Client type
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductOptionSpecialPrice'
                amount:
                    description: List price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-free amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxation:
                    description: |
                        Taxation type

                        | Value | Meaning |
                        | --- | --- |
                        | `Taxation_UNKNOWN` | Unknown |
                        | `TAXABLE` | Taxable |
                        | `TAX_FREE` | Tax-free |
                        | `MIXED` | Mixed taxation |
                    type: string
                    enum:
                        - Taxation_UNKNOWN
                        - TAXABLE
                        - TAX_FREE
                        - MIXED
                vatAmount:
                    description: VAT
                    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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: CONSULTATION
                    enum:
                        - CONSULTATION
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                productConfiguration:
                    description: Product configuration information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.ProductConfiguration'
                productId:
                    description: |-
                        Product ID

                        Deprecated. Replacement field: `productConfiguration.id`.
                    deprecated: true
                    type: string
                    format: object-id
                productIsEvent:
                    description: |-
                        Event product status

                        Deprecated. Replacement field: `productConfiguration.isEvent`.
                    deprecated: true
                    type: boolean
                productTitle:
                    description: |-
                        Product name

                        Deprecated. Replacement field: `productConfiguration.title`.
                    deprecated: true
                    type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                compositions:
                    description: |-
                        Procedure composition list for group options

                        Used for options where `type` is `GROUP`.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductGroupOptionComposition'
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                price:
                    description: Price information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                productConfiguration:
                    description: Product configuration information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.ProductConfiguration'
                productId:
                    description: |-
                        Product ID

                        Deprecated. Replacement field: `productConfiguration.id`.
                    deprecated: true
                    type: string
                    format: object-id
                productIsEvent:
                    description: |-
                        Event product status

                        Deprecated. Replacement field: `productConfiguration.isEvent`.
                    deprecated: true
                    type: boolean
                productTitle:
                    description: |-
                        Product name

                        Deprecated. Replacement field: `productConfiguration.title`.
                    deprecated: true
                    type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `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: Product name
                    type: string
                displayPeriod:
                    description: |-
                        Product display period

                        If not set, it is displayed at all times.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                id:
                    description: Product ID
                    type: string
                    format: object-id
                isEvent:
                    description: Event product status
                    type: boolean
                offeringPeriod:
                    description: |-
                        Product reservation/payment available period

                        If not set, it is available at all times.
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                count:
                    description: Number of procedures
                    type: integer
                    format: int32
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                medicalService:
                    description: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: Device and medication list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: Price information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                procedure:
                    description: Procedure information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                productConfiguration:
                    description: Product configuration information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract.ProductConfiguration'
                productId:
                    description: |-
                        Product ID

                        Deprecated. Replacement field: `productConfiguration.id`.
                    deprecated: true
                    type: string
                    format: object-id
                productIsEvent:
                    description: |-
                        Event product status

                        Deprecated. Replacement field: `productConfiguration.isEvent`.
                    deprecated: true
                    type: boolean
                productTitle:
                    description: |-
                        Product name

                        Deprecated. Replacement field: `productConfiguration.title`.
                    deprecated: true
                    type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `title`, `productTitle`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: Unit
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
            allOf:
                - not:
                    type: object
                    required:
                        - compositions
                    properties:
                        compositions: {}
        protos.procedure.OpenSearchProductOptionSummariesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        Summary list of searched product options

                        Only includes product options that can be exposed on the channel corresponding to the requested API Key.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.OpenSearchProductOptionSummariesContract'
        protos.procedure.Price:
            type: object
            required:
                - amount
            properties:
                amount:
                    description: Amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxation:
                    description: |
                        Tax type

                        | Value | Meaning |
                        | --- | --- |
                        | `Taxation_UNKNOWN` | Unknown |
                        | `TAXABLE` | Taxable |
                        | `TAX_FREE` | Tax-free |
                        | `MIXED` | Mixed taxation |
                    type: string
                    enum:
                        - Taxation_UNKNOWN
                        - TAXABLE
                        - TAX_FREE
                        - MIXED
                vatAmount:
                    description: VAT
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
        protos.procedure.PriceAmount:
            type: object
            required:
                - value
                - currency
            properties:
                value:
                    description: Amount
                    type: integer
                    format: int32
                currency:
                    description: |-
                        Currency code

                        An [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard currency code. Example: `KRW`
                    type: string
        protos.procedure.Procedure:
            type: object
            required:
                - id
                - name
                - createDate
            properties:
                name:
                    description: Procedure name
                    type: string
                commonProcedureConfiguration:
                    description: Common procedure configuration
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.CommonProcedureConfiguration'
                createDate:
                    description: Creation date and time
                    type: string
                deleted:
                    description: Deletion status
                    type: boolean
                id:
                    description: Procedure ID
                    type: string
                    format: object-id
                searchPhoneticName:
                    description: Phonetic name for search
                    type: string
        protos.procedure.ProductCategory:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Category name
                    type: string
                id:
                    description: Category ID
                    type: string
                    format: object-id
                translsMap:
                    description: Multilingual translation map
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.procedure.ProductGroupOptionComposition:
            type: object
            required:
                - price
                - title
                - procedure
            properties:
                title:
                    description: |-
                        Composition name

                        Deprecated. Not used since 2024-10-11; an empty string is always returned.
                    type: string
                count:
                    description: Number of procedures
                    type: integer
                    format: int32
                medicalService:
                    description: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: Device and medication list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: Price information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                procedure:
                    description: Procedure information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                refSingleOptionId:
                    description: |-
                        Reference single option ID

                        Deprecated. Not used since 2024-10-11; an empty value is always returned.
                    type: string
                unit:
                    description: Unit
                    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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: CONSULTATION
                    enum:
                        - CONSULTATION
                badges:
                    description: |
                        Badge list

                        Delivered as integer values.

                        | Value | rawValue | Meaning |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | Unknown |
                        | `NEW` | 1 | New |
                        | `POPULAR` | 2 | Popular |
                        | `RECOMMENDED` | 3 | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                deleted:
                    description: Deleted status
                    type: boolean
                displayChannels:
                    description: |
                        Display channel list

                        | Value | Meaning |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | Unknown |
                        | `HOMEPAGE` | Homepage |
                        | `GANGNAMUNNI` | UNNI |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: Frequently used procedure status
                    type: boolean
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                promotionConfigurations:
                    description: |-
                        Promotion configuration list

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                badges:
                    description: |
                        Badge list

                        Delivered as integer values.

                        | Value | rawValue | Meaning |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | Unknown |
                        | `NEW` | 1 | New |
                        | `POPULAR` | 2 | Popular |
                        | `RECOMMENDED` | 3 | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                compositions:
                    description: |-
                        Procedure composition list for group options

                        Used in options where `type` is `GROUP`.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductGroupOptionComposition'
                deleted:
                    description: Deleted status
                    type: boolean
                displayChannels:
                    description: |
                        Display channel list

                        | Value | Meaning |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | Unknown |
                        | `HOMEPAGE` | Homepage |
                        | `GANGNAMUNNI` | UNNI |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: Frequently used procedure status
                    type: boolean
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                price:
                    description: Price information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                promotionConfigurations:
                    description: |-
                        Promotion configuration list

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `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: Product option name
                    type: string
                description:
                    description: Product option description
                    type: string
                type:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                badges:
                    description: |
                        Badge list

                        Delivered as integer values.

                        | Value | rawValue | Meaning |
                        | --- | ---: | --- |
                        | `Badge_UNKNOWN` | 0 | Unknown |
                        | `NEW` | 1 | New |
                        | `POPULAR` | 2 | Popular |
                        | `RECOMMENDED` | 3 | Recommended |
                    type: array
                    items:
                        type: integer
                        format: int32
                count:
                    description: Number of procedures
                    type: integer
                    format: int32
                deleted:
                    description: Deleted status
                    type: boolean
                displayChannels:
                    description: |
                        Display channel list

                        | Value | Meaning |
                        | --- | --- |
                        | `DisplayChannel_UNKNOWN` | Unknown |
                        | `HOMEPAGE` | Homepage |
                        | `GANGNAMUNNI` | UNNI |
                        | `KOS_CONNECT` | KOS Connect |
                    type: array
                    items:
                        type: string
                        enum:
                            - DisplayChannel_UNKNOWN
                            - HOMEPAGE
                            - GANGNAMUNNI
                            - KOS_CONNECT
                frequentlyUsedOption:
                    description: Frequently used procedure status
                    type: boolean
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                medicalService:
                    description: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: |-
                        Device and medication list

                        Deprecated. Uses the device and medication list of the medical service item.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: Price information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                procedure:
                    description: |-
                        Procedure information

                        Deprecated. Uses the procedure information of the medical service item.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                promotionConfigurations:
                    description: |-
                        Promotion configuration list

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.PromotionConfiguration'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `title`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: |-
                        Unit

                        Deprecated. Uses the unit of the medical service item.
                    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: Price list by Client pricing type
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.ProductOptionSpecialPrice'
                amount:
                    description: List price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-free amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxation:
                    description: |
                        Taxation type

                        | Value | Meaning |
                        | --- | --- |
                        | `Taxation_UNKNOWN` | Unknown |
                        | `TAXABLE` | Taxable |
                        | `TAX_FREE` | Tax-free |
                        | `MIXED` | Mixed taxation |
                    type: string
                    enum:
                        - Taxation_UNKNOWN
                        - TAXABLE
                        - TAX_FREE
                        - MIXED
                vatAmount:
                    description: VAT
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
        protos.procedure.ProductOptionPriceVisitorType:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Client pricing type name
                    type: string
                id:
                    description: Client pricing type ID
                    type: string
        protos.procedure.ProductOptionSpecialPrice:
            type: object
            required:
                - amount
                - visitorType
            properties:
                amount:
                    description: Price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-free amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxation:
                    description: |
                        Taxation type

                        | Value | Meaning |
                        | --- | --- |
                        | `Taxation_UNKNOWN` | Unknown |
                        | `TAXABLE` | Taxable |
                        | `TAX_FREE` | Tax-free |
                        | `MIXED` | Mixed taxation |
                    type: string
                    enum:
                        - Taxation_UNKNOWN
                        - TAXABLE
                        - TAX_FREE
                        - MIXED
                vatAmount:
                    description: VAT
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                visitorType:
                    description: Client pricing type information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPriceVisitorType'
        protos.procedure.PromotionConfiguration:
            type: object
            required:
                - id
                - title
                - startDate
                - endDate
                - optionId
                - discountedPrice
            properties:
                title:
                    description: Promotion title
                    type: string
                discountedPrice:
                    description: Discounted price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                endDate:
                    description: Promotion end date
                    type: string
                id:
                    description: Promotion ID
                    type: string
                optionId:
                    description: Promotion option ID
                    type: string
                startDate:
                    description: Promotion start date
                    type: string
        protos.procedure.TargetCountryContract:
            type: object
            required:
                - code
                - order
            properties:
                code:
                    description: |-
                        Target country code

                        This is an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. `ETC` refers to other countries.
                    type: string
                order:
                    description: Sort order
                    type: integer
                    format: int32
                suggestingVisitorTypeId:
                    description: |-
                        Recommended Client type ID

                        If no value is provided, the default price type `Regular Price` is used.
                    type: string
        protos.procedure.Unit:
            type: object
            required:
                - type
                - value
            properties:
                type:
                    description: |
                        Unit type

                        | Value | Meaning |
                        | --- | --- |
                        | `UnitType_UNKNOWN` | Unknown |
                        | `UNIT` | Unit |
                        | `CC` | cc |
                        | `VIAL` | Vial |
                        | `PEN` | Pen |
                        | `STRING` | Thread |
                        | `SHOT` | Shot |
                        | `PAD` | Pad |
                        | `MINUTE` | Minute |
                        | `KJ` | kJ |
                        | `QUANTITY` | Quantity |
                        | `DOT` | Dot |
                        | `J` | J |
                        | `MG` | mg |
                        | `G` | g |
                        | `PULSE` | Pulse |
                        | `BOTTLE` | Bottle |
                        | `SYRINGE` | Syringe |
                        | `PASS` | 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: Unit value
                    type: number
                    format: double
        protos.procedure.medical_service.MedicalService:
            type: object
            required:
                - id
                - title
                - status
                - deleted
                - configuration
                - draftedDateTimeUtc
                - updatedDateTimeUtc
            properties:
                title:
                    description: Medical service item name
                    type: string
                description:
                    description: Medical service item description
                    type: string
                caution:
                    description: Precautions
                    type: string
                configuration:
                    description: Medical service item configuration
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceConfiguration'
                contributionConstant:
                    description: Contribution constant
                    type: integer
                    format: int32
                deleted:
                    description: Deletion status
                    type: boolean
                draftedDateTimeUtc:
                    description: Draft saved date/time
                    type: string
                durationTime:
                    description: Duration
                    type: number
                    format: double
                id:
                    description: Medical service item ID
                    type: string
                    format: object-id
                priceAmount:
                    description: Price amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                recommendedInterval:
                    description: Recommended interval
                    type: integer
                    format: int32
                status:
                    description: |
                        Medical service item status

                        | Value | Meaning |
                        | --- | --- |
                        | `MedicalServiceStatus_UNKNOWN` | Unknown |
                        | `DRAFT` | Draft |
                        | `PUBLISHED` | Published |
                    type: string
                    enum:
                        - MedicalServiceStatus_UNKNOWN
                        - DRAFT
                        - PUBLISHED
                translsMap:
                    description: Medical service item multilingual translation map
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                updatedDateTimeUtc:
                    description: Modified date/time
                    type: string
        protos.procedure.medical_service.MedicalServiceConfiguration:
            type: object
            required:
                - code
                - procedure
                - healthcareReimbursement
                - taxation
            properties:
                code:
                    description: Medical service item code
                    type: string
                healthcareReimbursement:
                    description: |
                        Insurance coverage

                        | Value | Meaning |
                        | --- | --- |
                        | `HealthcareReimbursement_UNKNOWN` | Unknown |
                        | `REIMBURSABLE` | Reimbursable |
                        | `NON_REIMBURSABLE` | Non-reimbursable |
                    type: string
                    enum:
                        - HealthcareReimbursement_UNKNOWN
                        - REIMBURSABLE
                        - NON_REIMBURSABLE
                machines:
                    description: Equipment list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceMachine'
                medicines:
                    description: Drug list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceMedicine'
                procedure:
                    description: Medical act
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceProcedure'
                taxation:
                    description: |
                        Taxation type

                        | Value | Meaning |
                        | --- | --- |
                        | `Taxation_UNKNOWN` | Unknown |
                        | `TAXABLE` | Taxable |
                        | `TAX_FREE` | Tax-free |
                        | `MIXED` | Mixed taxation |
                    type: string
                    enum:
                        - Taxation_UNKNOWN
                        - TAXABLE
                        - TAX_FREE
                        - MIXED
                unit:
                    description: Unit
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.procedure.medical_service.MedicalServiceMachine:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Equipment name
                    type: string
                id:
                    description: Equipment ID
                    type: string
                    format: object-id
                searchPhoneticName:
                    description: Phonetic name for search
                    type: string
        protos.procedure.medical_service.MedicalServiceMedicine:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Drug name
                    type: string
                id:
                    description: Drug ID
                    type: string
                    format: object-id
                searchPhoneticName:
                    description: Phonetic name for search
                    type: string
        protos.procedure.medical_service.MedicalServiceProcedure:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Medical act name
                    type: string
                id:
                    description: Medical act ID
                    type: string
                    format: object-id
                searchPhoneticName:
                    description: Phonetic name for search
                    type: string
        protos.purchase.BusinessCashReceiptConfiguration:
            type: object
            required:
                - businessNumber
            properties:
                businessNumber:
                    description: Business registration number
                    type: string
        protos.purchase.CardCompany:
            type: object
            required:
                - name
            properties:
                name:
                    description: Card company
                    type: string
        protos.purchase.CardTransactionConfiguration:
            type: object
            required:
                - cardCompany
            properties:
                acquirerName:
                    description: Card acquiring company name
                    type: string
                approvalNumber:
                    description: Approval number
                    type: string
                cardCompany:
                    description: Card company
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CardCompany'
                cardNumber:
                    description: Card number
                    type: string
                installmentConfiguration:
                    description: Installment settings
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.InstallmentConfiguration'
                issuerName:
                    description: Card issuing company name
                    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

                        | Value | Meaning |
                        | --- | --- |
                        | `CASH_RECEIPT_TYPE_UNKNOWN` | Unknown |
                        | `PERSONAL` | Personal Income Deduction |
                        | `BUSINESS` | Business Expenditure Proof |
                        | `VOLUNTARY` | Self-Issued |
                    type: string
                    const: BUSINESS
                    enum:
                        - BUSINESS
                businessConfiguration:
                    description: Business cash receipt settings
                    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

                        | Value | Meaning |
                        | --- | --- |
                        | `CASH_RECEIPT_TYPE_UNKNOWN` | Unknown |
                        | `PERSONAL` | Personal Income Deduction |
                        | `BUSINESS` | Business Expenditure Proof |
                        | `VOLUNTARY` | Self-Issued |
                    type: string
                    const: PERSONAL
                    enum:
                        - PERSONAL
                personalConfiguration:
                    description: Personal cash receipt settings
                    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

                        | Value | Meaning |
                        | --- | --- |
                        | `CASH_RECEIPT_TYPE_UNKNOWN` | Unknown |
                        | `PERSONAL` | Personal Income Deduction |
                        | `BUSINESS` | Business Expenditure Proof |
                        | `VOLUNTARY` | Self-Issued |
                    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: Cash receipt settings
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CashReceiptConfiguration'
                incomeTaxDeductionNumber:
                    description: Cash receipt approval number
                    type: string
        protos.purchase.EasyPayProvider:
            type: object
            required:
                - name
            properties:
                name:
                    description: Easy pay provider
                    type: string
        protos.purchase.EasyPayTransactionConfiguration:
            type: object
            required:
                - easyPayProvider
            properties:
                approvalNumber:
                    description: Approval number
                    type: string
                easyPayProvider:
                    description: Easy pay provider
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.EasyPayProvider'
                incomeTaxDeductionNumber:
                    description: Cash receipt approval number
                    type: string
                installmentConfiguration:
                    description: Installment settings
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.InstallmentConfiguration'
        protos.purchase.GetPrepaidCardChargingEventsQuery:
            type: object
            required:
                - id
            properties:
                id:
                    description: Prepaid card ID
                    type: string
        protos.purchase.GetPrepaidCardChargingEventsQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        Prepaid card event list

                        If the prepaid card does not exist, the list is empty.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PrepaidCardChargingEvent'
        protos.purchase.GetPrepaidCardSummariesQuery:
            type: object
            required:
                - visitorId
            properties:
                available:
                    description: |-
                        Availability filter

                        If the value is omitted, the query is performed regardless of availability. If `true`, only prepaid cards that have not expired and have a remaining cash balance or point balance are retrieved. If `false`, only prepaid cards that have expired or have no remaining cash balance and no remaining point balance are retrieved.
                    type: boolean
                visitorId:
                    description: Client ID for retrieving the prepaid card list
                    type: string
                    format: object-id
        protos.purchase.GetPrepaidCardSummariesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        Prepaid card list

                        Includes only prepaid cards that have not been deleted. If `available` is provided, only prepaid cards that satisfy the corresponding availability condition are included.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PrepaidCardSummaryContract'
        protos.purchase.GetPurchaseSummariesQueryByVisitorId:
            type: object
            required:
                - visitorId
            properties:
                visitorId:
                    description: Client ID to retrieve
                    type: string
                    format: object-id
        protos.purchase.GetPurchaseSummariesQueryByVisitorIdResponse:
            type: object
            properties:
                data:
                    description: |-
                        Payment list

                        Includes only payments that have not been deleted.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseSummary'
        protos.purchase.GetVisitorPrepaidCardBalanceQuery:
            type: object
            required:
                - visitorId
            properties:
                visitorId:
                    description: Client ID for retrieving the balance
                    type: string
                    format: object-id
        protos.purchase.GetVisitorPrepaidCardBalanceQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        Combined balance information of available prepaid cards

                        Only prepaid cards that have not expired, have a remaining cash balance or point balance, and have not been deleted are included in the total. If there are no prepaid cards to look up, the combined balance is 0.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.VisitorPrepaidCardBalanceContract'
        protos.purchase.InstallmentConfiguration:
            type: object
            required:
                - month
            properties:
                month:
                    description: Number of installment months
                    type: integer
                    format: int32
        protos.purchase.MedicalLoanCompany:
            type: object
            required:
                - name
            properties:
                name:
                    description: Medical loan provider
                    type: string
        protos.purchase.MedicalLoanTransactionConfiguration:
            type: object
            required:
                - medicalLoanCompany
            properties:
                medicalLoanCompany:
                    description: Medical loan provider
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.MedicalLoanCompany'
        protos.purchase.PersonalCashReceiptConfiguration:
            type: object
            required:
                - phoneNumber
            properties:
                phoneNumber:
                    description: Personal cash receipt phone number
                    type: string
        protos.purchase.PlatformTransactionConfiguration:
            type: object
            required:
                - platform
            properties:
                platform:
                    description: Platform
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPlatform'
        protos.purchase.PrepaidCardAmount:
            type: object
            required:
                - balance
                - total
            properties:
                balance:
                    description: Remaining balance
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                total:
                    description: Total charged amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
        protos.purchase.PrepaidCardChargingEvent:
            type: object
            required:
                - type
                - createdDateTimeUtc
                - amount
                - chargingId
            properties:
                type:
                    description: |
                        Prepaid card event type

                        | Value | Meaning |
                        | --- | --- |
                        | `PrepaidCardChargingEventType_UNKNOWN` | Unknown |
                        | `PAYMENT` | Use |
                        | `PAYMENT_CANCEL` | Cancel use |
                        | `REFUND` | Refund |
                        | `CHARGE` | Charge |
                        | `EXPIRATION` | Expiration |
                        | `SUBTRACT` | Deduct |
                    type: string
                    enum:
                        - PrepaidCardChargingEventType_UNKNOWN
                        - PAYMENT
                        - PAYMENT_CANCEL
                        - REFUND
                        - CHARGE
                        - EXPIRATION
                        - SUBTRACT
                amount:
                    description: Event amount information
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardChargingEventAmount'
                chargingId:
                    description: Duplicate prevention identifier
                    type: string
                createdDateTimeUtc:
                    description: Prepaid card event creation date and time
                    type: string
                    format: date-time
                memo:
                    description: Memo
                    type: string
                visitor:
                    description: Client information related to the event
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardVisitor'
        protos.purchase.PrepaidCardChargingEventAmount:
            type: object
            required:
                - type
                - amount
            properties:
                type:
                    description: |
                        Prepaid card amount type

                        | Value | Meaning |
                        | --- | --- |
                        | `PrepaidCardChargingEventAmountType_UNKNOWN` | Unknown |
                        | `BALANCE` | Cash balance |
                        | `POINT` | Points |
                    type: string
                    enum:
                        - PrepaidCardChargingEventAmountType_UNKNOWN
                        - BALANCE
                        - POINT
                amount:
                    description: Amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
        protos.purchase.PrepaidCardSummaryContract:
            type: object
            required:
                - id
                - title
                - remainingBalance
                - expirationDateTimeUtc
                - createdDateTimeUtc
            properties:
                title:
                    description: Prepaid Card Name
                    type: string
                description:
                    description: Prepaid Card Description
                    type: string
                createdDateTimeUtc:
                    description: Prepaid Card Creation Date and Time
                    type: string
                    format: date-time
                expirationDateTimeUtc:
                    description: Prepaid Card Expiration Date and Time
                    type: string
                    format: date-time
                id:
                    description: Prepaid Card ID
                    type: string
                ownerId:
                    description: Owner Client ID
                    type: string
                    format: object-id
                remainingBalance:
                    description: Cash Balance
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardAmount'
                remainingPoint:
                    description: Points Balance
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardAmount'
                translsMap:
                    description: |-
                        Multilingual Translation Map

                        Translation targets: `title`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                updatedDateTimeUtc:
                    description: Prepaid Card Last Modified Date and Time
                    type: string
                    format: date-time
        protos.purchase.PrepaidCardTransactionConfiguration:
            type: object
            required:
                - prepaidCardId
                - chargingId
                - prepaidCardName
            properties:
                chargingId:
                    description: Prepaid card charge ID
                    type: string
                prepaidCardId:
                    description: Prepaid card ID
                    type: string
                prepaidCardName:
                    description: Prepaid card name
                    type: string
        protos.purchase.PrepaidCardVisitor:
            type: object
            required:
                - visitorId
                - name
                - chartNumber
                - owner
            properties:
                name:
                    description: Client name
                    type: string
                chartNumber:
                    description: Chart number
                    type: string
                owner:
                    description: Prepaid card owner status
                    type: boolean
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
        protos.purchase.PriceAdjustment:
            type: object
            required:
                - method
                - value
            properties:
                value:
                    description: Price adjustment value
                    type: number
                    format: double
                method:
                    description: |
                        Price adjustment method

                        | Value | Meaning |
                        | --- | --- |
                        | `PriceAdjustmentMethod_UNSPECIFIED` | Unknown |
                        | `FIXED_AMOUNT` | Fixed Amount |
                        | `PERCENTAGE` | Percentage |
                    type: string
                    enum:
                        - PriceAdjustmentMethod_UNSPECIFIED
                        - FIXED_AMOUNT
                        - PERCENTAGE
        protos.purchase.PurchaseAssignee:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Staff name
                    type: string
                id:
                    description: Staff ID
                    type: string
        protos.purchase.PurchaseConversion:
            type: object
            required:
                - type
                - refConversionId
            properties:
                type:
                    description: |
                        Payment conversion type

                        | Value | Meaning |
                        | --- | --- |
                        | `PURCHASE_CONVERSION_TYPE_UNSPECIFIED` | Unknown |
                        | `PREPAID_CARD_CONVERSION` | Prepaid card conversion |
                    type: string
                    enum:
                        - PURCHASE_CONVERSION_TYPE_UNSPECIFIED
                        - PREPAID_CARD_CONVERSION
                refConversionId:
                    description: Reference conversion 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: |
                        Purchase item type

                        | Value | Meaning |
                        | --- | --- |
                        | `PurchaseItemType_UNSPECIFIED` | Unknown |
                        | `PRODUCT_OPTION` | Product option |
                        | `ETCETRA_PRODUCT` | Other product |
                        | `PREPAID_CARD_PRODUCT` | Prepaid card product |
                    type: string
                    const: ETCETRA_PRODUCT
                    enum:
                        - ETCETRA_PRODUCT
                adjustPriceV2:
                    description: Final price after adjustment
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                adjustedPrice:
                    description: |-
                        Adjustment amount

                        Deprecated. Use `adjustPriceV2`.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                basePrice:
                    description: Base price for price adjustment
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                etceteraConfiguration:
                    description: |-
                        Other product settings

                        Condition: `type` = `ETCETRA_PRODUCT`
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemEtceteraConfiguration'
                id:
                    description: Purchase item ID
                    type: string
                migratedDateTimeUtc:
                    description: Migration date and time
                    type: string
                price:
                    description: |-
                        Amount

                        Deprecated. Use `priceV2`.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                priceAdjustments:
                    description: Purchase item unit price adjustment list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItemPriceAdjustment'
                priceV2:
                    description: Final price
                    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: |
                        Purchase item type

                        | Value | Meaning |
                        | --- | --- |
                        | `PurchaseItemType_UNSPECIFIED` | Unknown |
                        | `PRODUCT_OPTION` | Product option |
                        | `ETCETRA_PRODUCT` | Other product |
                        | `PREPAID_CARD_PRODUCT` | Prepaid card product |
                    type: string
                    const: PREPAID_CARD_PRODUCT
                    enum:
                        - PREPAID_CARD_PRODUCT
                adjustPriceV2:
                    description: Final price after adjustment
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                adjustedPrice:
                    description: |-
                        Adjustment amount

                        Deprecated. Use `adjustPriceV2`.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                basePrice:
                    description: Base price for price adjustment
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                id:
                    description: Purchase item ID
                    type: string
                migratedDateTimeUtc:
                    description: Migration date and time
                    type: string
                prepaidCardConfiguration:
                    description: |-
                        Prepaid card product settings

                        Condition: `type` = `PREPAID_CARD_PRODUCT`
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemPrepaidCardConfiguration'
                price:
                    description: |-
                        Amount

                        Deprecated. Use `priceV2`.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                priceAdjustments:
                    description: Purchase item unit price adjustment list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItemPriceAdjustment'
                priceV2:
                    description: Final price
                    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: |
                        Purchase item type

                        | Value | Meaning |
                        | --- | --- |
                        | `PurchaseItemType_UNSPECIFIED` | Unknown |
                        | `PRODUCT_OPTION` | Product option |
                        | `ETCETRA_PRODUCT` | Other product |
                        | `PREPAID_CARD_PRODUCT` | Prepaid card product |
                    type: string
                    const: PRODUCT_OPTION
                    enum:
                        - PRODUCT_OPTION
                adjustPriceV2:
                    description: Final price after adjustment
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                adjustedPrice:
                    description: |-
                        Adjustment amount

                        Deprecated. Use `adjustPriceV2`.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                basePrice:
                    description: Base price for price adjustment
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                id:
                    description: Purchase item ID
                    type: string
                migratedDateTimeUtc:
                    description: Migration date and time
                    type: string
                optionConfiguration:
                    description: |-
                        Product option settings

                        Condition: `type` = `PRODUCT_OPTION`
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemOptionConfiguration'
                price:
                    description: |-
                        Amount

                        Deprecated. Use `priceV2`.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                priceAdjustments:
                    description: Purchase item unit price adjustment list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItemPriceAdjustment'
                priceV2:
                    description: Final price
                    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: Other product title
                    type: string
                id:
                    description: Other product ID
                    type: string
                price:
                    description: Other product price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `title`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.purchase.PurchaseItemOptionComposition:
            type: object
            required:
                - procedure
                - count
                - price
            properties:
                count:
                    description: Composition quantity
                    type: integer
                    format: int32
                medicalService:
                    description: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: Device and medication list by composition
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                price:
                    description: Composition price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.ProductOptionPrice'
                procedure:
                    description: Composed treatment information
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemProcedure'
                unit:
                    description: Composition unit
                    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: Product option title
                    type: string
                compositions:
                    description: |-
                        Product option composition list

                        Exists when `optionType` is `GROUP`.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItemOptionComposition'
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                medicalService:
                    description: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                optionType:
                    description: Product option type
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                price:
                    description: First price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                productTitle:
                    description: Product title
                    type: string
                promotionConfiguration:
                    description: Promotion settings
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemOptionPromotionConfiguration'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `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: Product option title
                    type: string
                count:
                    description: |-
                        Quantity

                        Exists when `optionType` is `SINGLE`.
                    type: integer
                    format: int32
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                medicalService:
                    description: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: |-
                        Device and medication list

                        Exists when `optionType` is `SINGLE`.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                optionType:
                    description: Product option type
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                price:
                    description: First price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                procedure:
                    description: |-
                        Treatment information

                        Exists when `optionType` is `SINGLE`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemProcedure'
                productTitle:
                    description: Product title
                    type: string
                promotionConfiguration:
                    description: Promotion settings
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseItemOptionPromotionConfiguration'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `title`, `productTitle`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: |-
                        Unit

                        Exists when `optionType` is `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: Promotion title
                    type: string
                id:
                    description: Promotion ID
                    type: string
        protos.purchase.PurchaseItemPrepaidCardConfiguration:
            type: object
            required:
                - id
                - title
                - price
                - balance
                - point
                - expirationDateTimeUtc
                - prepaidCardId
            properties:
                title:
                    description: Prepaid card product title
                    type: string
                description:
                    description: Prepaid card description
                    type: string
                balance:
                    description: Prepaid card product balance
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                expirationDateTimeUtc:
                    description: Prepaid card expiration date and time
                    type: string
                expirationDurationInDays:
                    description: Prepaid card product usage period
                    type: integer
                    format: int32
                id:
                    description: Prepaid card product ID
                    type: string
                point:
                    description: Prepaid card product points
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                prepaidCardId:
                    description: Prepaid card ID
                    type: string
                price:
                    description: Prepaid card product price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                translsMap:
                    description: |-
                        Multilingual translation map

                        Supported fields: `title`, `description`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.purchase.PurchaseItemPriceAdjustment:
            type: object
            required:
                - id
                - priceAdjustment
                - source
            properties:
                id:
                    description: Purchase item price adjustment ID
                    type: string
                priceAdjustment:
                    description: Purchase item price adjustment information
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PriceAdjustment'
                source:
                    description: |
                        Purchase item price adjustment source

                        | Value | Meaning |
                        | --- | --- |
                        | `PriceAdjustmentSource_UNSPECIFIED` | Unknown |
                        | `DIRECT` | Direct application |
                        | `DISTRIBUTED` | Distributed from cart price adjustment |
                    type: string
                    enum:
                        - PriceAdjustmentSource_UNSPECIFIED
                        - DIRECT
                        - DISTRIBUTED
        protos.purchase.PurchaseItemProcedure:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Treatment name
                    type: string
                id:
                    description: Treatment ID
                    type: string
                    format: object-id
        protos.purchase.PurchasePriceAdjustment:
            type: object
            required:
                - id
                - priceAdjustment
                - status
            properties:
                id:
                    description: Price adjustment ID
                    type: string
                priceAdjustment:
                    description: Price adjustment information
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PriceAdjustment'
                status:
                    description: |
                        Price adjustment status

                        | Value | Meaning |
                        | --- | --- |
                        | `PriceAdjustmentStatus_UNSPECIFIED` | Unknown |
                        | `PENDING` | Pending distribution |
                        | `DISTRIBUTED` | Distributed |
                    type: string
                    enum:
                        - PriceAdjustmentStatus_UNSPECIFIED
                        - PENDING
                        - DISTRIBUTED
        protos.purchase.PurchaseSummary:
            type: object
            required:
                - id
                - status
                - lastUpdatedDateTimeUtc
                - createdDateTimeUtc
                - process
                - visitorId
            properties:
                items:
                    description: Purchase item list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItem'
                assignee:
                    description: |-
                        Assignee

                        Deprecated. Use `assignees`.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                assignees:
                    description: Assignee list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                conversion:
                    description: Payment conversion information
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseConversion'
                createdDateTimeUtc:
                    description: |-
                        Creation date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                id:
                    description: Payment ID
                    type: string
                lastUpdatedDateTimeUtc:
                    description: |-
                        Last modified date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                migratedDateTimeUtc:
                    description: |-
                        Migration date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                pendingItems:
                    description: Pending addition purchase item list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItem'
                priceAdjustments:
                    description: Payment unit price adjustment list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchasePriceAdjustment'
                process:
                    description: |
                        Payment process status

                        | Value | Meaning |
                        | --- | --- |
                        | `PURCHASE_PROCESS_UNSPECIFIED` | Unknown |
                        | `NOT_IN_PROCESS` | No process in progress |
                        | `PENDING` | Additional payment in progress |
                        | `REVOKING` | Payment change in progress |
                        | `REFUNDING` | Refund in progress |
                        | `PREPAID_CARD_ITEM_SUBSTITUTING` | Switching to another prepaid card in progress |
                    type: string
                    enum:
                        - PURCHASE_PROCESS_UNSPECIFIED
                        - NOT_IN_PROCESS
                        - PENDING
                        - REVOKING
                        - REFUNDING
                        - PREPAID_CARD_ITEM_SUBSTITUTING
                purchaseMemo:
                    description: Payment memo
                    type: string
                refundingItems:
                    description: Purchase item list with refund in progress
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.RefundingPurchaseItem'
                revokingItems:
                    description: Purchase item list with change cancellation in progress
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.RevokingPurchaseItem'
                status:
                    description: |
                        Payment status

                        | Value | Meaning |
                        | --- | --- |
                        | `PURCHASE_STATUS_UNSPECIFIED` | Unknown |
                        | `REFUNDED` | Full refund |
                        | `PARTIALLY_REFUNDED` | Partial refund |
                        | `ACCEPTED` | Payment confirmed |
                        | `PAID` | Payment completed |
                        | `INITIALIZED` | Initialized |
                    type: string
                    enum:
                        - PURCHASE_STATUS_UNSPECIFIED
                        - REFUNDED
                        - PARTIALLY_REFUNDED
                        - ACCEPTED
                        - PAID
                        - INITIALIZED
                transactions:
                    description: Transaction list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseSummaryTransaction'
                visitorId:
                    description: Client 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: Transaction assignee
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                cardConfiguration:
                    description: |-
                        Card transaction settings

                        Exists when `paymentType` is `CARD`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CardTransactionConfiguration'
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: CARD
                    enum:
                        - CARD
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction assignee
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                cashConfiguration:
                    description: |-
                        Cash transaction settings

                        Exists when `paymentType` is `CASH`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CashTransactionConfiguration'
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: CASH
                    enum:
                        - CASH
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction assignee
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                easyPayConfiguration:
                    description: |-
                        Easy pay settings

                        Exists when `paymentType` is `EASY_PAY`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.EasyPayTransactionConfiguration'
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: EASY_PAY
                    enum:
                        - EASY_PAY
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction assignee
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                medicalLoanConfiguration:
                    description: |-
                        Medical loan transaction settings

                        Exists when `paymentType` is `MEDICAL_LOAN`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.MedicalLoanTransactionConfiguration'
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: MEDICAL_LOAN
                    enum:
                        - MEDICAL_LOAN
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction assignee
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: PLATFORM
                    enum:
                        - PLATFORM
                platformConfiguration:
                    description: |-
                        Platform transaction settings

                        Exists when `paymentType` is `PLATFORM`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PlatformTransactionConfiguration'
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction assignee
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: PREPAID_CARD
                    enum:
                        - PREPAID_CARD
                prepaidCardConfiguration:
                    description: |-
                        Prepaid card transaction settings

                        Exists when `paymentType` is `PREPAID_CARD`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardTransactionConfiguration'
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction assignee
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PurchaseAssignee'
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: TRANSFER
                    enum:
                        - TRANSFER
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                transferConfiguration:
                    description: |-
                        Bank transfer transaction settings

                        Exists when `paymentType` is `TRANSFER`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransferTransactionConfiguration'
                vatAmount:
                    description: Value-added tax
                    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: Refund adjustment price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Price'
                targetItemId:
                    description: Purchase item ID subject to refund
                    type: string
        protos.purchase.RevokingPurchaseItem:
            type: object
            required:
                - targetItemId
            properties:
                targetItemId:
                    description: Purchase item ID subject to change cancellation
                    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: Transaction staff ID
                    type: string
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                cardConfiguration:
                    description: |-
                        Card transaction settings

                        Exists when `paymentType` is `CARD`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CardTransactionConfiguration'
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: CARD
                    enum:
                        - CARD
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction staff ID
                    type: string
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                cashConfiguration:
                    description: |-
                        Cash transaction settings

                        Exists when `paymentType` is `CASH`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CashTransactionConfiguration'
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: CASH
                    enum:
                        - CASH
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction staff ID
                    type: string
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                easyPayConfiguration:
                    description: |-
                        Easy pay settings

                        Exists when `paymentType` is `EASY_PAY`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.EasyPayTransactionConfiguration'
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: EASY_PAY
                    enum:
                        - EASY_PAY
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction staff ID
                    type: string
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                medicalLoanConfiguration:
                    description: |-
                        Medical loan transaction settings

                        Exists when `paymentType` is `MEDICAL_LOAN`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.MedicalLoanTransactionConfiguration'
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: MEDICAL_LOAN
                    enum:
                        - MEDICAL_LOAN
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction staff ID
                    type: string
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: PLATFORM
                    enum:
                        - PLATFORM
                platformConfiguration:
                    description: |-
                        Platform transaction settings

                        Exists when `paymentType` is `PLATFORM`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PlatformTransactionConfiguration'
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction staff ID
                    type: string
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: PREPAID_CARD
                    enum:
                        - PREPAID_CARD
                prepaidCardConfiguration:
                    description: |-
                        Prepaid card transaction settings

                        Exists when `paymentType` is `PREPAID_CARD`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardTransactionConfiguration'
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vatAmount:
                    description: Value-added tax
                    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: Transaction staff ID
                    type: string
                canceledRefId:
                    description: Cancellation reference ID
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Transaction creation date and time

                        Deprecated. Use `paymentDateTime.lastUpdatedDateTimeUtc`.
                    deprecated: true
                    type: string
                id:
                    description: Transaction ID
                    type: string
                paymentDateTime:
                    description: |-
                        Transaction payment date and time information

                        If `paymentDateTime.lastUpdatedDateTimeUtc` is not available, use `createdDateTimeUtc` for backward compatibility.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPaymentDateTime'
                paymentType:
                    description: |
                        Transaction payment type

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionPaymentType_UNSPECIFIED` | Unknown |
                        | `CASH` | Cash |
                        | `CARD` | Card |
                        | `PREPAID_CARD` | Prepaid Card |
                        | `PLATFORM` | App payment |
                        | `TRANSFER` | Bank Transfer |
                        | `EASY_PAY` | Cashless Payment |
                        | `MEDICAL_LOAN` | Medical loan |
                    type: string
                    const: TRANSFER
                    enum:
                        - TRANSFER
                price:
                    description: Transaction amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                primaryData:
                    description: Transaction raw data
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransactionPrimaryData'
                status:
                    description: |
                        Transaction status

                        | Value | Meaning |
                        | --- | --- |
                        | `TransactionStatus_UNSPECIFIED` | Unknown |
                        | `REQUESTED` | Requested |
                        | `APPROVED` | Approved |
                        | `CANCELED` | Cancellation transaction |
                        | `SPENT` | Refund transaction |
                        | `FAILED` | Processing failed |

                        `CANCELED` does not mean the transaction has been canceled, but rather refers to a cancellation transaction. `SPENT` is not a state where the transaction has been approved; it is a transaction with a negative amount. It is used when returning money to a Client without canceling the transaction. `FAILED` indicates a failure to process the requested transaction. It may occur due to failures from an external payment integration provider or card reader recognition failures.
                    type: string
                    enum:
                        - TransactionStatus_UNSPECIFIED
                        - REQUESTED
                        - APPROVED
                        - CANCELED
                        - SPENT
                        - FAILED
                suppliedAmount:
                    description: Taxable supply amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                taxFreeAmount:
                    description: Tax-exempt amount
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                transferConfiguration:
                    description: |-
                        Bank transfer transaction settings

                        Exists when `paymentType` is `TRANSFER`.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.TransferTransactionConfiguration'
                vatAmount:
                    description: Value-added tax
                    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: Approval date and time
                    type: string
                canceledDateTimeUtc:
                    description: Cancellation date and time
                    type: string
                failedDateTimeUtc:
                    description: Failure date and time
                    type: string
                lastUpdatedDateTimeUtc:
                    description: Last payment status change date and time
                    type: string
                requestedDateTimeUtc:
                    description: Request date and time
                    type: string
                spentDateTimeUtc:
                    description: Return date and time
                    type: string
        protos.purchase.TransactionPlatform:
            type: object
            required:
                - name
            properties:
                name:
                    description: Platform
                    type: string
        protos.purchase.TransactionPrimaryData:
            type: object
            required:
                - vendor
                - terminalTransactionId
            properties:
                acquirerName:
                    description: Card acquiring company name
                    type: string
                approvalNumber:
                    description: Approval number
                    type: string
                cardCompanyName:
                    description: Card company name
                    type: string
                cardNumber:
                    description: Card number
                    type: string
                easyPayProviderCode:
                    description: Easy pay provider code
                    type: string
                failureReasonMessage:
                    description: Failure reason message
                    type: string
                installmentConfiguration:
                    description: Installment settings
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.InstallmentConfiguration'
                issuerName:
                    description: Issuing company name
                    type: string
                merchantId:
                    description: Merchant ID
                    type: string
                paymentUrl:
                    description: Payment URL
                    type: string
                rawData:
                    description: Payment terminal raw response
                    type: string
                terminalId:
                    description: Terminal ID
                    type: string
                terminalTransactionId:
                    description: Terminal transaction ID
                    type: string
                vatAmount:
                    description: |-
                        Value-added tax

                        Deprecated. Use `Transaction.vatAmount`.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                vendor:
                    description: |
                        Payment terminal vendor

                        | Value | Meaning |
                        | --- | --- |
                        | `PaymentTerminalVendor_UNSPECIFIED` | Unknown |
                        | `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: Account transfer cash receipt settings
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.CashReceiptConfiguration'
                incomeTaxDeductionNumber:
                    description: Cash receipt approval number
                    type: string
        protos.purchase.VisitorPrepaidCardBalanceContract:
            type: object
            required:
                - remainingBalance
                - remainingPoint
            properties:
                lastBalanceChargedDateTimeUtc:
                    description: |-
                        Most recent cash charge date and time

                        This is an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time. If there is no `CHARGE` event of the `BALANCE` amount type, it will not be included in the response.
                    type: string
                    format: date-time
                lastPointChargedDateTimeUtc:
                    description: |-
                        Most recent point charge date and time

                        This is an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time. If there is no `CHARGE` event of the `POINT` amount type, it will not be included in the response.
                    type: string
                    format: date-time
                remainingBalance:
                    description: |-
                        Combined cash balance of available prepaid cards

                        `balance` is the total remaining cash balance, and `total` is the total charged cash amount. If there are no prepaid cards to query, the amount is 0.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardAmount'
                remainingPoint:
                    description: |-
                        Combined point balance of available prepaid cards

                        `balance` is the total remaining point balance, and `total` is the total charged point amount. If there are no prepaid cards to query, the amount is 0.
                    allOf:
                        - $ref: '#/components/schemas/protos.purchase.PrepaidCardAmount'
        protos.schedule.BreaktimeContract:
            type: object
            required:
                - startTime
                - endTime
            properties:
                endTime:
                    description: |-
                        Break end date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                startTime:
                    description: |-
                        Break start date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
        protos.schedule.CancelReservationCommand:
            type: object
            required:
                - scheduleId
                - reason
            properties:
                reason:
                    description: |
                        Reason for canceling the reservation

                        | Value | Meaning |
                        | --- | --- |
                        | `CANCEL_RESERVATION_REASON_UNSPECIFIED` | Unknown |
                        | `CANCELED` | Reservation canceled |
                        | `NO_SHOW` | No-show |

                        `CANCEL_RESERVATION_REASON_UNSPECIFIED` is a default value not used in general reservation cancellation requests.
                    type: string
                    enum:
                        - CANCEL_RESERVATION_REASON_UNSPECIFIED
                        - CANCELED
                        - NO_SHOW
                scheduleId:
                    description: Schedule ID to cancel
                    type: string
                    format: uuid
        protos.schedule.Counselor:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Counselor account name
                    type: string
                id:
                    description: Counselor account ID
                    type: string
                    format: object-id
        protos.schedule.Doctor:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Account name
                    type: string
                id:
                    description: Account ID
                    type: string
                    format: object-id
        protos.schedule.EventInitiator:
            type: object
            oneOf:
                - properties:
                    account:
                        description: Account subject
                        allOf:
                            - $ref: '#/components/schemas/protos.schedule.EventInitiator.Account'
                  required:
                    - account
                  title: Account subject
                  type: object
                - properties:
                    system:
                        description: System subject
                        allOf:
                            - $ref: '#/components/schemas/protos.schedule.EventInitiator.System'
                  required:
                    - system
                  title: System subject
                  type: object
        protos.schedule.EventInitiator.Account:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Account name
                    type: string
                id:
                    description: Account ID
                    type: string
        protos.schedule.EventInitiator.System:
            type: object
        protos.schedule.IntervalCapacityContract:
            type: object
            required:
                - enabled
                - intervalCapacity
                - zoneId
            properties:
                enabled:
                    description: Whether the zone is active
                    type: boolean
                intervalCapacity:
                    description: Reservation capacity per unit time
                    type: integer
                    format: int32
                zoneId:
                    description: Zone ID
                    type: string
                    format: object-id
        protos.schedule.OccupiedResource:
            type: object
            required:
                - id
                - type
                - reservationTime
            properties:
                type:
                    description: |
                        Reservation schedule resource type

                        | Value | Meaning |
                        | --- | --- |
                        | `OccupiedResourceType_UNSPECIFIED` | Unknown |
                        | `RESERVATION_GROUP` | Reservation group |
                    type: string
                    enum:
                        - OccupiedResourceType_UNSPECIFIED
                        - RESERVATION_GROUP
                id:
                    description: Reservation schedule resource ID
                    type: string
                reservationTime:
                    description: Reservation schedule time range
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
            oneOf:
                - properties:
                    reservationGroup:
                        description: Reservation group resource
                        allOf:
                            - $ref: '#/components/schemas/protos.schedule.ReservationGroupResource'
                  required:
                    - reservationGroup
                  title: Reservation group resource
                  type: object
        protos.schedule.OperationTimeContract:
            type: object
            required:
                - enabled
            properties:
                breaktime:
                    description: Break time
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.BreaktimeContract'
                enabled:
                    description: Whether operating
                    type: boolean
                endTime:
                    description: |-
                        Operation end date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                startTime:
                    description: |-
                        Operation start date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
        protos.schedule.OperationTimetableContract:
            type: object
            required:
                - monday
                - tuesday
                - wednesday
                - thursday
                - friday
                - saturday
                - sunday
            properties:
                friday:
                    description: Friday operating hours
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                monday:
                    description: Monday operating hours
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                saturday:
                    description: Saturday operating hours
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                sunday:
                    description: Sunday operating hours
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                thursday:
                    description: Thursday operating hours
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                tuesday:
                    description: Tuesday operating hours
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
                wednesday:
                    description: Wednesday operating hours
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimeContract'
        protos.schedule.ReservationAssignee:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Staff member name
                    type: string
                id:
                    description: Staff member ID
                    type: string
        protos.schedule.ReservationFunnel:
            type: object
            required:
                - funnel
                - funnelDetail
            properties:
                funnel:
                    description: Reservation referral source code
                    allOf:
                        - $ref: '#/components/schemas/protos.tenant.Code'
                funnelCategory:
                    description: Reservation referral source category code
                    allOf:
                        - $ref: '#/components/schemas/protos.tenant.Code'
                funnelDetail:
                    description: |-
                        Detailed referral source

                        Provided as free text.
                    type: string
        protos.schedule.ReservationGroupContract:
            type: object
            required:
                - id
                - title
                - memo
                - startDate
                - intervalMinutes
                - intervalCapacities
                - isDefault
                - operationTimetable
                - order
            properties:
                title:
                    description: Reservation group name
                    type: string
                id:
                    description: Reservation group ID
                    type: string
                    format: object-id
                intervalCapacities:
                    description: Zone-based reservation capacity settings
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.IntervalCapacityContract'
                intervalMinutes:
                    description: Reservation unit time in minutes
                    type: integer
                    format: int32
                isDefault:
                    description: Whether this is the default reservation group
                    type: boolean
                memo:
                    description: Reservation group memo
                    type: string
                operationTimetable:
                    description: Operating timetable
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.OperationTimetableContract'
                order:
                    description: Sort order
                    type: integer
                    format: int32
                reservationPolicy:
                    description: |-
                        Reservation policy

                        If no detailed field values are provided, the hospital's default operating policy is used.
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy'
                sameDayCloseBufferMinutes:
                    description: |-
                        Same-day reservation closing buffer in minutes

                        This is a deprecated field.
                    deprecated: true
                    type: integer
                    format: int32
                startDate:
                    description: |-
                        Earliest reservable date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
        protos.schedule.ReservationGroupResource:
            type: object
            required:
                - reservationGroupId
                - zoneId
            properties:
                doctors:
                    description: Doctor list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.Doctor'
                reservationGroupId:
                    description: Reservation group ID
                    type: string
                    format: object-id
                zoneId:
                    description: Zone ID
                    type: string
                    format: object-id
        protos.schedule.ReservationPolicy:
            type: object
            properties:
                cancel:
                    description: Reservation cancellation deadline rule
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy.ClosingRule'
                reschedule:
                    description: Reservation modification deadline rule
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy.ClosingRule'
                reservation:
                    description: Reservation creation rule
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy.ReservationRule'
        protos.schedule.ReservationPolicy.ClosingRule:
            type: object
            required:
                - allowed
                - minimumAdvance
            properties:
                allowed:
                    description: Whether allowed
                    type: boolean
                minimumAdvance:
                    description: Minimum deadline setting
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy.MinimumAdvanceConfiguration'
        protos.schedule.ReservationPolicy.MinimumAdvanceConfiguration:
            type: object
            oneOf:
                - properties:
                    minReservationStartDateTimeLeadMinutes:
                        description: Minimum deadline time in minutes based on reservation start date and time
                        type: integer
                        format: int32
                  required:
                    - minReservationStartDateTimeLeadMinutes
                  title: Minimum deadline time in minutes based on reservation start date and time
                  type: object
                - properties:
                    minReservationStartDateLeadDays:
                        description: Minimum deadline days based on reservation date
                        type: integer
                        format: int32
                  required:
                    - minReservationStartDateLeadDays
                  title: Minimum deadline days based on reservation date
                  type: object
        protos.schedule.ReservationPolicy.ReservationRule:
            type: object
            properties:
                maxAdvanceDays:
                    description: |-
                        Maximum selectable reservation days

                        Calculated based on the current date.
                    type: integer
                    format: int32
                minimumAdvance:
                    description: Minimum reservation deadline setting
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationPolicy.MinimumAdvanceConfiguration'
        protos.schedule.ReservationRequestedOptionConfiguration:
            type: object
            required:
                - optionId
                - optionTitle
                - price
            properties:
                medicalService:
                    description: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                optionId:
                    description: Product option ID
                    type: string
                    format: object-id
                optionTitle:
                    description: Product option name
                    type: string
                price:
                    description: Price information
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationRequestedOptionPrice'
                productTitle:
                    description: Product name
                    type: string
                promotionTitle:
                    description: Promotion name
                    type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        The key is the language code, and the value is the translation data.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.schedule.ReservationRequestedOptionPrice:
            type: object
            required:
                - amount
                - currency
                - reason
            properties:
                amount:
                    description: Price amount
                    type: integer
                    format: int32
                currency:
                    description: |-
                        Currency code

                        An [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard currency code. Example: `KRW`
                    type: string
                reason:
                    description: Price reason
                    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: |
                        Requested procedure price reason type

                        | Value | Meaning |
                        | --- | --- |
                        | `RESERVATION_REQUESTED_OPTION_PRICE_REASON_TYPE_UNSPECIFIED` | Unknown |
                        | `GENERAL` | General price |
                        | `PROMOTION` | Promotion price (Deprecated) |
                        | `VISITOR_TYPE` | Client type price |
                    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: |
                        Requested procedure price reason type

                        | Value | Meaning |
                        | --- | --- |
                        | `RESERVATION_REQUESTED_OPTION_PRICE_REASON_TYPE_UNSPECIFIED` | Unknown |
                        | `GENERAL` | General price |
                        | `PROMOTION` | Promotion price (Deprecated) |
                        | `VISITOR_TYPE` | Client type price |
                    type: string
                    const: VISITOR_TYPE
                    enum:
                        - VISITOR_TYPE
                visitorTypeId:
                    description: Client type 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: |
                        Requested procedure type

                        | Value | Meaning |
                        | --- | --- |
                        | `RESERVATION_REQUESTED_PROCEDURE_TYPE_UNSPECIFIED` | Unknown |
                        | `OPTION` | Product option |
                        | `TICKET` | Treatment ticket |
                    type: string
                    const: OPTION
                    enum:
                        - OPTION
                optionConfiguration:
                    description: |-
                        Product option configuration

                        Configuration for a requested procedure whose `type` is `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: |
                        Requested procedure type

                        | Value | Meaning |
                        | --- | --- |
                        | `RESERVATION_REQUESTED_PROCEDURE_TYPE_UNSPECIFIED` | Unknown |
                        | `OPTION` | Product option |
                        | `TICKET` | Treatment ticket |
                    type: string
                    const: TICKET
                    enum:
                        - TICKET
                ticketConfiguration:
                    description: |-
                        Treatment ticket configuration

                        Configuration for a requested procedure whose `type` is `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: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                optionTitle:
                    description: Option name
                    type: string
                productTitle:
                    description: Product name
                    type: string
                ticketId:
                    description: Treatment ticket ID
                    type: string
                ticketTitle:
                    description: Treatment ticket name
                    type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        The key is the language code, and the value is the translation data.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.schedule.ReservationRuleSummary:
            type: object
            required:
                - id
                - title
                - isActive
                - isDefault
                - lastModifiedBy
                - updatedDateTimeUtc
                - createdDateTimeUtc
            properties:
                title:
                    description: Reservation rule name
                    type: string
                createdDateTimeUtc:
                    description: |-
                        Created date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                id:
                    description: Reservation rule ID
                    type: string
                isActive:
                    description: Reservation rule active status
                    type: boolean
                isDefault:
                    description: Default reservation rule status
                    type: boolean
                lastModifiedBy:
                    description: Last modified by
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.EventInitiator'
                updatedDateTimeUtc:
                    description: |-
                        Last modified date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
        protos.schedule.RoomContract:
            type: object
            required:
                - id
                - zoneId
                - title
                - order
            properties:
                title:
                    description: Room name
                    type: string
                id:
                    description: Room ID
                    type: string
                    format: object-id
                order:
                    description: Sort order
                    type: integer
                    format: int32
                zoneId:
                    description: Zone ID
                    type: string
                    format: object-id
        protos.schedule.UpdateReservationCommand:
            type: object
            required:
                - scheduleId
                - reservationGroupId
                - startDateTime
                - endDateTime
                - zoneId
            properties:
                consultationRequired:
                    description: Consultation required status
                    type: boolean
                counselor:
                    description: Preferred counselor
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Counselor'
                doctor:
                    description: Preferred doctor
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Doctor'
                endDateTime:
                    description: |-
                        Reservation end date-time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                funnel:
                    description: Reservation referral source information
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationFunnel'
                reservationAssignee:
                    description: Reservation staff member
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationAssignee'
                reservationGroupId:
                    description: Reservation group ID
                    type: string
                    format: object-id
                reservationMemo:
                    description: Reservation memo
                    type: string
                scheduleId:
                    description: Schedule ID to update
                    type: string
                    format: uuid
                sedationRequired:
                    description: Sedation required status
                    type: boolean
                startDateTime:
                    description: |-
                        Reservation start date-time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                zoneId:
                    description: Reservation zone ID
                    type: string
                    format: object-id
        protos.schedule.VisitorLocation:
            type: object
            required:
                - zoneId
            properties:
                zoneId:
                    description: Reception zone ID
                    type: string
                    format: object-id
        protos.schedule.consultation.ConsultationContent:
            type: object
            required:
                - text
            properties:
                text:
                    description: Counseling content text
                    type: string
        protos.schedule.consultation.ConsultationContract:
            type: object
            required:
                - id
                - visitor
                - consultationStartedDateTimeUtc
                - content
                - createdDateTimeUtc
                - updatedDateTimeUtc
            properties:
                consultationDoctors:
                    description: Counseling doctor list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.Doctor'
                consultationProcedures:
                    description: Counseling procedure list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.consultation.ConsultationProcedure'
                consultationStartedDateTimeUtc:
                    description: Counseling start date and time
                    type: string
                content:
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationContent'
                    description: Counseling content
                counselors:
                    description: Counselor list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.Counselor'
                createdDateTimeUtc:
                    description: Created date and time
                    type: string
                id:
                    description: Counseling ID
                    type: string
                result:
                    description: Counseling result
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationResult'
                scheduleId:
                    description: |-
                        Linked schedule ID

                        May not be included for remote counseling.
                    type: string
                    format: uuid
                updatedDateTimeUtc:
                    description: Modified date and time
                    type: string
                visitor:
                    description: Counseling Client information
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationVisitor'
        protos.schedule.consultation.ConsultationOptionComposition:
            type: object
            required:
                - count
                - price
            properties:
                count:
                    description: Composition quantity
                    type: integer
                    format: int32
                medicalService:
                    description: Composition medical item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                price:
                    description: Composition price
                    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: Product option title
                    type: string
                compositions:
                    description: |-
                        Product option composition list

                        Exists when `optionType` is `GROUP`.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.consultation.ConsultationOptionComposition'
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                optionType:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: GROUP
                    enum:
                        - GROUP
                price:
                    description: Price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                productTitle:
                    description: Product title
                    type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        The key is the language code, and the value is the translation data.
                    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: Product option title
                    type: string
                count:
                    description: |-
                        Quantity

                        Exists when `optionType` is `SINGLE`.
                    type: integer
                    format: int32
                id:
                    description: Product option ID
                    type: string
                    format: object-id
                medicalService:
                    description: |-
                        Medical item

                        Exists when `optionType` is `SINGLE`.
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                optionType:
                    description: |
                        Product option type

                        | Value | Meaning |
                        | --- | --- |
                        | `ProductOptionType_UNKNOWN` | Unknown |
                        | `SINGLE` | Single option |
                        | `GROUP` | Group option |
                        | `CONSULTATION` | Consultation option |
                    type: string
                    const: SINGLE
                    enum:
                        - SINGLE
                price:
                    description: Price
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.PriceAmount'
                productTitle:
                    description: Product title
                    type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        The key is the language code, and the value is the translation data.
                    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: |
                        Counseling procedure type

                        | Value | Meaning |
                        | --- | --- |
                        | `CONSULTATION_PROCEDURE_TYPE_UNSPECIFIED` | Unknown |
                        | `OPTION` | Product option |
                        | `TICKET` | Treatment ticket |
                    type: string
                    enum:
                        - CONSULTATION_PROCEDURE_TYPE_UNSPECIFIED
                        - OPTION
                        - TICKET
            oneOf:
                - properties:
                    optionConfiguration:
                        description: |-
                            Product option settings

                            Settings for a counseling procedure whose `type` is `OPTION`.
                        allOf:
                            - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationOptionConfiguration'
                  required:
                    - optionConfiguration
                  title: |-
                    Product option settings

                    Settings for a counseling procedure whose `type` is `OPTION`.
                  type: object
                - properties:
                    ticketConfiguration:
                        description: |-
                            Treatment ticket settings

                            Settings for a counseling procedure whose `type` is `TICKET`.
                        allOf:
                            - $ref: '#/components/schemas/protos.schedule.consultation.ConsultationTicketConfiguration'
                  required:
                    - ticketConfiguration
                  title: |-
                    Treatment ticket settings

                    Settings for a counseling procedure whose `type` is `TICKET`.
                  type: object
        protos.schedule.consultation.ConsultationResult:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Counseling result name
                    type: string
                color:
                    description: Counseling result color
                    type: string
                    enum:
                        - CodeColor_UNSPECIFIED
                        - RED
                        - LAVA
                        - ORANGE
                        - GREEN
                        - CYAN
                        - BLUE
                        - PURPLE
                        - MAGENTA
                        - GRAY
                id:
                    description: Counseling result ID
                    type: string
        protos.schedule.consultation.ConsultationTicketConfiguration:
            type: object
            required:
                - ticketId
                - ticketTitle
                - optionTitle
                - medicalService
                - productTitle
            properties:
                medicalService:
                    description: Medical item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                optionTitle:
                    description: Option name
                    type: string
                productTitle:
                    description: Product name
                    type: string
                ticketId:
                    description: Treatment ticket ID
                    type: string
                ticketTitle:
                    description: Treatment ticket name
                    type: string
                translsMap:
                    description: |-
                        Multilingual translation map

                        The key is the language code, and the value is the translation data.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.schedule.consultation.ConsultationVisitor:
            type: object
            required:
                - id
                - name
                - isNew
            properties:
                name:
                    description: Counseling Client name
                    type: string
                id:
                    description: Counseling Client ID
                    type: string
                isNew:
                    description: New Client status at counseling creation
                    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: Task name
                    type: string
                type:
                    description: |
                        Task type

                        | Value | Meaning |
                        | --- | --- |
                        | `FLOW_TASK_TYPE_UNSPECIFIED` | Unknown |
                        | `PROCEDURE` | Procedure |
                        | `ETCETERA` | Other |
                    type: string
                    const: ETCETERA
                    enum:
                        - ETCETERA
                anesthesiaType:
                    description: |
                        Anesthesia type

                        | Value | Meaning |
                        | --- | --- |
                        | `ANESTHESIA_TYPE_UNSPECIFIED` | Unknown |
                        | `SEDATION` | Sedation anesthesia |
                        | `SPRAY` | Spray anesthesia |
                        | `CREAM` | Cream anesthesia |
                        | `DENTAL` | Dental anesthesia |
                        | `GAS` | Gas anesthesia |
                        | `ICE` | Ice anesthesia |
                        | `CREAM_DENTAL` | Cream + dental anesthesia |
                    type: string
                    enum:
                        - ANESTHESIA_TYPE_UNSPECIFIED
                        - SEDATION
                        - SPRAY
                        - CREAM
                        - DENTAL
                        - GAS
                        - ICE
                        - CREAM_DENTAL
                assigneeMemo:
                    description: Assignee memo
                    type: string
                assignees:
                    description: Assignee list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskAssignee'
                calledDoctors:
                    description: Called doctors list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskCalledDoctor'
                completedDateTimeUtc:
                    description: |-
                        Task completion date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                doctorAssignedDateTimeUtc:
                    description: |-
                        Doctor assignment date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                doctorCallDateTime:
                    description: Doctor call date and time
                    type: string
                doctorMemo:
                    description: Doctor memo
                    type: string
                doctors:
                    description: Doctor list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskDoctor'
                doctorsCalledZone:
                    description: Doctor call zone
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskZone'
                etceteraConfiguration:
                    description: |-
                        Miscellaneous task configuration

                        Configuration for tasks where `type` is `ETCETERA`.
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskEtceteraConfiguration'
                memo:
                    description: Memo
                    type: string
                order:
                    description: Sort order
                    type: integer
                    format: int32
                paymentRequired:
                    description: Payment required
                    type: boolean
                purchaseId:
                    description: Payment ID
                    type: string
                readyDateTimeUtc:
                    description: |-
                        Task ready date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                responsibleDoctor:
                    description: Responsible doctor
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskResponsibleDoctor'
                room:
                    description: Assigned room
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.RoomContract'
                roomAssignedDateTimeUtc:
                    description: |-
                        Room assignment date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                sequence:
                    description: Task sequence number
                    type: integer
                    format: int32
                signed:
                    description: Signature status
                    type: boolean
                signedDateTimeUtc:
                    description: |-
                        Signature date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                status:
                    description: |
                        Task status

                        | Value | Meaning |
                        | --- | --- |
                        | `FLOW_TASK_STATUS_UNSPECIFIED` | Unknown |
                        | `WAITING` | Waiting |
                        | `READY` | Ready |
                        | `DONE` | Done |
                        | `NOT_STARTED` | Not started |
                        | `CANCELED` | Canceled |

                        `FLOW_TASK_STATUS_UNSPECIFIED` is a default value that should not be used unless there is an issue.
                    type: string
                    enum:
                        - FLOW_TASK_STATUS_UNSPECIFIED
                        - WAITING
                        - READY
                        - DONE
                        - NOT_STARTED
                        - CANCELED
                translsMap:
                    description: |-
                        Multilingual field translation map

                        Language-specific translation strings for `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: Task name
                    type: string
                type:
                    description: |
                        Task type

                        | Value | Meaning |
                        | --- | --- |
                        | `FLOW_TASK_TYPE_UNSPECIFIED` | Unknown |
                        | `PROCEDURE` | Procedure |
                        | `ETCETERA` | Other |
                    type: string
                    const: PROCEDURE
                    enum:
                        - PROCEDURE
                anesthesiaType:
                    description: |
                        Anesthesia type

                        | Value | Meaning |
                        | --- | --- |
                        | `ANESTHESIA_TYPE_UNSPECIFIED` | Unknown |
                        | `SEDATION` | Sedation anesthesia |
                        | `SPRAY` | Spray anesthesia |
                        | `CREAM` | Cream anesthesia |
                        | `DENTAL` | Dental anesthesia |
                        | `GAS` | Gas anesthesia |
                        | `ICE` | Ice anesthesia |
                        | `CREAM_DENTAL` | Cream + dental anesthesia |
                    type: string
                    enum:
                        - ANESTHESIA_TYPE_UNSPECIFIED
                        - SEDATION
                        - SPRAY
                        - CREAM
                        - DENTAL
                        - GAS
                        - ICE
                        - CREAM_DENTAL
                assigneeMemo:
                    description: Assignee memo
                    type: string
                assignees:
                    description: Assignee list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskAssignee'
                calledDoctors:
                    description: Called doctors list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskCalledDoctor'
                completedDateTimeUtc:
                    description: |-
                        Task completion date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                doctorAssignedDateTimeUtc:
                    description: |-
                        Doctor assignment date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                doctorCallDateTime:
                    description: Doctor call date and time
                    type: string
                doctorMemo:
                    description: Doctor memo
                    type: string
                doctors:
                    description: Doctor list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTaskDoctor'
                doctorsCalledZone:
                    description: Doctor call zone
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskZone'
                memo:
                    description: Memo
                    type: string
                order:
                    description: Sort order
                    type: integer
                    format: int32
                paymentRequired:
                    description: Payment required
                    type: boolean
                procedureConfiguration:
                    description: |-
                        Procedure task configuration

                        Configuration for tasks where `type` is `PROCEDURE`.
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskProcedureConfiguration'
                purchaseId:
                    description: Payment ID
                    type: string
                readyDateTimeUtc:
                    description: |-
                        Task ready date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                responsibleDoctor:
                    description: Responsible doctor
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskResponsibleDoctor'
                room:
                    description: Assigned room
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.RoomContract'
                roomAssignedDateTimeUtc:
                    description: |-
                        Room assignment date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                sequence:
                    description: Task sequence number
                    type: integer
                    format: int32
                signed:
                    description: Signature status
                    type: boolean
                signedDateTimeUtc:
                    description: |-
                        Signature date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                status:
                    description: |
                        Task status

                        | Value | Meaning |
                        | --- | --- |
                        | `FLOW_TASK_STATUS_UNSPECIFIED` | Unknown |
                        | `WAITING` | Waiting |
                        | `READY` | Ready |
                        | `DONE` | Done |
                        | `NOT_STARTED` | Not started |
                        | `CANCELED` | Canceled |

                        `FLOW_TASK_STATUS_UNSPECIFIED` is a default value that should not be used unless there is an issue.
                    type: string
                    enum:
                        - FLOW_TASK_STATUS_UNSPECIFIED
                        - WAITING
                        - READY
                        - DONE
                        - NOT_STARTED
                        - CANCELED
                translsMap:
                    description: |-
                        Multilingual field translation map

                        Language-specific translation strings for `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: Assignee name
                    type: string
                id:
                    description: Assignee account ID
                    type: string
                role:
                    description: Assignee role
                    allOf:
                        - $ref: '#/components/schemas/protos.account.AccountRoleV2Contract'
        protos.schedule.flow.FlowTaskCalledDoctor:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Called doctor name
                    type: string
                id:
                    description: Called doctor account ID
                    type: string
        protos.schedule.flow.FlowTaskDoctor:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Doctor name
                    type: string
                id:
                    description: Doctor account ID
                    type: string
        protos.schedule.flow.FlowTaskEtceteraConfiguration:
            type: object
            required:
                - etceteraTaskId
                - name
            properties:
                name:
                    description: Other task name
                    type: string
                etceteraTaskId:
                    description: Other task ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        Multilingual field translation map

                        This is the per-language translation string for `name`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.schedule.flow.FlowTaskProcedureConfiguration:
            type: object
            properties:
                medicalServiceConfiguration:
                    description: Medical service configuration
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskProcedureConfiguration.MedicalServiceConfiguration'
                productOptionConfiguration:
                    description: Product option configuration
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskProcedureConfiguration.ProductOptionConfiguration'
                ticketConfiguration:
                    description: Ticket configuration
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.FlowTaskProcedureConfiguration.TicketConfiguration'
        protos.schedule.flow.FlowTaskProcedureConfiguration.MedicalServiceConfiguration:
            type: object
            required:
                - id
                - code
                - title
            properties:
                title:
                    description: Medical item name
                    type: string
                code:
                    description: Medical item code
                    type: string
                id:
                    description: Medical item ID
                    type: string
                    format: object-id
                machines:
                    description: Equipment list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceMachine'
                medicines:
                    description: Medicine list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.medical_service.MedicalServiceMedicine'
                translsMap:
                    description: |-
                        Multilingual field translation map

                        Language-specific translation strings for `title`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: Unit
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.schedule.flow.FlowTaskProcedureConfiguration.ProductOptionConfiguration:
            type: object
            required:
                - optionId
                - optionTitle
                - procedure
            properties:
                medicineAndMachines:
                    description: Device and medication list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                optionId:
                    description: Product option ID
                    type: string
                    format: object-id
                optionTitle:
                    description: Product option name
                    type: string
                procedure:
                    description: Procedure information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                productTitle:
                    description: Product name
                    type: string
                translsMap:
                    description: |-
                        Multilingual field translation map

                        Language-specific translation strings for `optionTitle` and `productTitle`.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: Unit
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.schedule.flow.FlowTaskProcedureConfiguration.TicketConfiguration:
            type: object
            properties:
                round:
                    description: Ticket round
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.flow.ProcedureRound'
                ticketId:
                    description: Ticket ID
                    type: string
        protos.schedule.flow.FlowTaskResponsibleDoctor:
            type: object
            required:
                - id
                - name
                - realName
            properties:
                name:
                    description: Responsible doctor name
                    type: string
                id:
                    description: Responsible doctor account ID
                    type: string
                realName:
                    description: Responsible doctor's real name
                    type: string
        protos.schedule.flow.FlowTaskZone:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: Zone name
                    type: string
                id:
                    description: Zone ID
                    type: string
                    format: object-id
        protos.schedule.flow.ProcedureRound:
            type: object
            required:
                - total
                - current
            properties:
                current:
                    description: Current round
                    type: integer
                    format: int32
                total:
                    description: Total rounds
                    type: integer
                    format: int32
        protos.schedule.reservation_time_slot.ReservationTimeSlot:
            type: object
            required:
                - dateTimeRangeUtc
                - available
            properties:
                available:
                    description: Slot availability
                    type: boolean
                dateTimeRangeUtc:
                    description: Slot time range
                    allOf:
                        - $ref: '#/components/schemas/protos.DateTimeRangeUtc'
        protos.schedule.schedule.EtceteraWorkConfiguration:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: Other task title
                    type: string
                id:
                    description: Other task setting ID
                    type: string
                    format: object-id
                translsMap:
                    description: |-
                        Multilingual translation map

                        The key is the language code, and the value is the translation data.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.schedule.schedule.GetScheduleDetailQuery:
            type: object
            required:
                - scheduleId
            properties:
                scheduleId:
                    description: Schedule ID to retrieve
                    type: string
                    format: uuid
        protos.schedule.schedule.GetScheduleDetailQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: Schedule detail information
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleContract'
        protos.schedule.schedule.GetSchedulesByVisitorQuery:
            type: object
            required:
                - visitorId
            properties:
                deleted:
                    description: |-
                        Whether to include deleted schedules

                        The response includes only schedules that have not been deleted.
                    type: boolean
                endDateTimeUtc:
                    description: |-
                        Query range end date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                startDateTimeUtc:
                    description: |-
                        Query range start date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                visitorId:
                    description: Client ID to query
                    type: string
                    format: object-id
        protos.schedule.schedule.GetSchedulesByVisitorQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        Schedule List

                        Includes only schedules that have not been deleted.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleContract'
        protos.schedule.schedule.GetSchedulesSummarizedByTaskQuery:
            type: object
            required:
                - visitorId
            properties:
                deleted:
                    description: |-
                        Whether to include deleted schedules

                        The response includes only schedules that have not been deleted.
                    type: boolean
                paymentRequired:
                    description: |-
                        Payment required filter

                        If set, the procedure task list is filtered by the same payment required value. If not set, all procedure tasks are returned.
                    type: boolean
                visitorId:
                    description: Client ID to retrieve
                    type: string
                    format: object-id
        protos.schedule.schedule.GetSchedulesSummarizedByTaskQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        Summary list of treatment tasks by schedule

                        Only includes schedules that have not been deleted.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleSummarizedByTask'
        protos.schedule.schedule.Reaction:
            type: object
            required:
                - id
            properties:
                id:
                    description: Reaction ID
                    type: string
        protos.schedule.schedule.ScheduleContract:
            type: object
            required:
                - id
                - visitor
                - flowStep
                - reservation
                - createdDateTimeUtc
                - tasks
                - purchaseIds
                - prescriptionIds
                - etceteraWorks
                - occupiedResources
            properties:
                consultation:
                    description: |-
                        Counseling information

                        Deprecated. This is single counseling information. For multiple counseling information, use `consultations`.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleDetailConsultationContract'
                consultations:
                    description: Counseling list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.consultation.ConsultationContract'
                createdDateTimeUtc:
                    description: |-
                        Created date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                deleted:
                    description: Deletion status
                    type: boolean
                etceteraWorks:
                    description: Other task list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleEtceteraWork'
                flowStep:
                    description: |
                        Current visit stage

                        | Value | Meaning |
                        | --- | --- |
                        | `FLOW_STATUS_UNSPECIFIED` | Unknown |
                        | `RESERVED` | Reserved |
                        | `RECEPTION` | Reception |
                        | `CONSULTATION_WAITING` | Consultation waiting |
                        | `CONSULTATION` | Consultation |
                        | `PROCEDURE_WAITING` | Procedure waiting |
                        | `PROCEDURE` | Procedure |
                        | `PROCEDURE_DONE` | Awaiting discharge |
                        | `COMPLETED` | Discharged |
                    type: string
                    enum:
                        - FLOW_STATUS_UNSPECIFIED
                        - RESERVED
                        - RECEPTION
                        - CONSULTATION_WAITING
                        - CONSULTATION
                        - PROCEDURE_WAITING
                        - PROCEDURE
                        - PROCEDURE_DONE
                        - COMPLETED
                flowStepUpdatedDateTimeUtc:
                    description: |-
                        Visit stage change date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                id:
                    description: Schedule ID
                    type: string
                    format: uuid
                occupiedResources:
                    description: Reservation schedule resource list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.OccupiedResource'
                orderMemo:
                    description: Order memo
                    type: string
                prescriptionIds:
                    description: Prescription ID list
                    type: array
                    items:
                        type: string
                purchaseIds:
                    description: Payment ID list
                    type: array
                    items:
                        type: string
                purchases:
                    description: |-
                        Payment list

                        Deprecated.
                    deprecated: true
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleDetailPurchaseContract'
                reactions:
                    description: Reaction list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleReaction'
                receptionDateTimeUtc:
                    description: |-
                        Reception date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                receptionNumber:
                    description: Reception number
                    type: integer
                    format: int32
                reservation:
                    description: Reservation information
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleDetailReservationContract'
                tasks:
                    description: Treatment task list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTask'
                updatedDateTimeUtc:
                    description: |-
                        Modified date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                visitor:
                    description: Client information
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleVisitorContract'
                visitorLocation:
                    description: Client location
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.VisitorLocation'
                visitorRequest:
                    description: Client request
                    type: string
                zone:
                    description: Reception zone information
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ZoneSummaryContract'
        protos.schedule.schedule.ScheduleDetailConsultationContract:
            type: object
            properties:
                consultationMemo:
                    description: Counseling memo
                    type: string
                counselor:
                    description: Counselor
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Counselor'
                doctor:
                    description: Doctor
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Doctor'
        protos.schedule.schedule.ScheduleDetailPurchaseContract:
            type: object
            required:
                - id
                - status
                - lastUpdatedDateTimeUtc
            properties:
                items:
                    description: Purchase item list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.purchase.PurchaseItem'
                id:
                    description: Payment ID
                    type: string
                lastUpdatedDateTimeUtc:
                    description: Last modified date and time
                    type: string
                status:
                    description: |-
                        Payment status

                        | Value | Meaning |
                        | --- | --- |
                        | `SCHEDULE_DETAIL_PURCHASE_STATUS_UNSPECIFIED` | Unknown |
                        | `REFUNDED` | Full refund |
                        | `PARTIALLY_REFUNDED` | Partial refund |
                        | `APPROVED` | Approved |


                        Deprecated.
                    type: string
                    enum:
                        - SCHEDULE_DETAIL_PURCHASE_STATUS_UNSPECIFIED
                        - REFUNDED
                        - PARTIALLY_REFUNDED
                        - APPROVED
                transactions:
                    description: Transaction list
                    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: |
                        Referral channel

                        | Value | Meaning |
                        | --- | --- |
                        | `Channel_UNSPEICIFED` | Unknown |
                        | `GANGNAMUNNI` | UNNI |
                        | `HOMEPAGE` | Homepage |
                        | `KOS_CONNECT` | KOS Connect |
                    type: string
                    enum:
                        - Channel_UNSPEICIFED
                        - GANGNAMUNNI
                        - HOMEPAGE
                        - KOS_CONNECT
                consultationRequired:
                    description: Counseling required
                    type: boolean
                counselor:
                    description: Preferred counselor
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Counselor'
                desiredDischargeDateTimeUtc:
                    description: |-
                        Desired discharge date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                doctor:
                    description: |-
                        Preferred doctor

                        Deprecated.
                    deprecated: true
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.Doctor'
                endDateTime:
                    description: |-
                        Appointment end date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                funnel:
                    description: Reservation channel
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationFunnel'
                requestedProcedures:
                    description: Desired treatment list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.ReservationRequestedProcedure'
                reservationAssignee:
                    description: Reservation staff member
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.ReservationAssignee'
                reservationGroupId:
                    description: |-
                        Reservation group ID

                        Deprecated.
                    deprecated: true
                    type: string
                    format: object-id
                reservationMemo:
                    description: Reservation memo
                    type: string
                sedationRequired:
                    description: Sedation anesthesia required
                    type: boolean
                startDateTime:
                    description: |-
                        Appointment start date and time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                status:
                    description: |
                        Reservation status

                        | Value | Meaning |
                        | --- | --- |
                        | `RESERVATION_STATUS_UNSPECIFIED` | Unknown |
                        | `RESERVED` | Reserved |
                        | `CANCELED` | Canceled |
                        | `NO_SHOW` | No-show |
                        | `IN_PROGRESS` | In progress |
                        | `COMPLETED` | Completed |
                    type: string
                    enum:
                        - RESERVATION_STATUS_UNSPECIFIED
                        - RESERVED
                        - CANCELED
                        - NO_SHOW
                        - IN_PROGRESS
                        - COMPLETED
                zoneId:
                    description: |-
                        Zone ID

                        Deprecated.
                    deprecated: true
                    type: string
                    format: object-id
        protos.schedule.schedule.ScheduleEtceteraWork:
            type: object
            required:
                - sequence
                - status
                - memo
                - etceteraWorkConfiguration
            properties:
                assignees:
                    description: Other task staff list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleEtceteraWorkAssignee'
                etceteraWorkConfiguration:
                    description: Other task setting
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.EtceteraWorkConfiguration'
                memo:
                    description: Other task memo
                    type: string
                sequence:
                    description: Other task order
                    type: integer
                    format: int32
                status:
                    description: |
                        Other task status

                        | Value | Meaning |
                        | --- | --- |
                        | `STATUS_UNSPECIFIED` | Unknown |
                        | `WAITING` | Waiting |
                        | `COMPLETED` | Completed |
                        | `CANCELED` | Canceled |
                    type: string
                    enum:
                        - STATUS_UNSPECIFIED
                        - WAITING
                        - COMPLETED
                        - CANCELED
        protos.schedule.schedule.ScheduleEtceteraWorkAssignee:
            type: object
            required:
                - id
                - name
                - role
            properties:
                name:
                    description: Other task staff name
                    type: string
                id:
                    description: Other task staff account ID
                    type: string
                role:
                    description: Other task staff role
                    allOf:
                        - $ref: '#/components/schemas/protos.account.AccountRoleV2Contract'
        protos.schedule.schedule.ScheduleReaction:
            type: object
            required:
                - reaction
            properties:
                accounts:
                    description: Reacted account list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleReactionAccount'
                reaction:
                    description: Reaction information
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.Reaction'
        protos.schedule.schedule.ScheduleReactionAccount:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Account name
                    type: string
                id:
                    description: Account ID
                    type: string
        protos.schedule.schedule.ScheduleSummarizedByTask:
            type: object
            required:
                - scheduleId
                - startDateTimeUtc
                - endDateTimeUtc
                - tasks
            properties:
                endDateTimeUtc:
                    description: |-
                        Appointment end date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                scheduleId:
                    description: Schedule ID
                    type: string
                    format: uuid
                startDateTimeUtc:
                    description: |-
                        Appointment start date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                tasks:
                    description: |-
                        Procedure Task List

                        If `paymentRequired` is provided, only procedure tasks with the same payment required status will be included.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.flow.FlowTask'
        protos.schedule.schedule.ScheduleVisitorCategoryContract:
            type: object
            required:
                - id
                - name
                - order
            properties:
                name:
                    description: Client category name
                    type: string
                color:
                    description: Color
                    type: string
                    enum:
                        - CodeColor_UNSPECIFIED
                        - RED
                        - LAVA
                        - ORANGE
                        - GREEN
                        - CYAN
                        - BLUE
                        - PURPLE
                        - MAGENTA
                        - GRAY
                id:
                    description: Client category ID
                    type: string
                order:
                    description: Sort order
                    type: integer
                    format: int32
        protos.schedule.schedule.ScheduleVisitorContract:
            type: object
            required:
                - id
                - name
                - chartNumber
            properties:
                name:
                    description: Client name
                    type: string
                categories:
                    description: Client category list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.schedule.schedule.ScheduleVisitorCategoryContract'
                chartNumber:
                    description: Chart number
                    type: string
                dateOfBirth:
                    description: Date of birth
                    type: string
                gender:
                    description: |
                        Gender

                        | Value | Meaning |
                        | --- | --- |
                        | `GENDER_UNSPECIFIED` | Unspecified |
                        | `MALE` | Male |
                        | `FEMALE` | Female |
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                id:
                    description: Client ID
                    type: string
                    format: object-id
                isNew:
                    description: New Client status
                    type: boolean
                memo:
                    description: Memo
                    type: string
                nationality:
                    description: Nationality
                    type: string
                phone:
                    description: Phone number
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                phoneticName:
                    description: Phonetic name
                    type: string
                snsInfo:
                    description: SNS information
                    allOf:
                        - $ref: '#/components/schemas/protos.visitor.SnsInfo'
                visitorType:
                    description: Client type
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.schedule.ScheduleVisitorTypeContract'
        protos.schedule.schedule.ScheduleVisitorTypeContract:
            type: object
            required:
                - id
                - name
            properties:
                name:
                    description: Client type name
                    type: string
                id:
                    description: Client type ID
                    type: string
        protos.schedule.schedule.ZoneSummaryContract:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: Reception zone name
                    type: string
                id:
                    description: Reception zone ID
                    type: string
                    format: object-id
        protos.schedule.zone.GetZoneQuery:
            type: object
            required:
                - zoneId
            properties:
                zoneId:
                    description: Zone ID to look up
                    type: string
                    format: object-id
        protos.schedule.zone.GetZoneQueryResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: Zone information
                    allOf:
                        - $ref: '#/components/schemas/protos.schedule.zone.ZoneContract'
        protos.schedule.zone.GetZonesResponse:
            type: object
            required:
                - data
            properties:
                data:
                    description: |-
                        Zone list

                        Sorted in ascending order by `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: Zone name
                    type: string
                id:
                    description: Zone ID
                    type: string
                    format: object-id
                isDefault:
                    description: Default zone status
                    type: boolean
                order:
                    description: Sort order
                    type: integer
                    format: int32
        protos.tenant.Code:
            type: object
            required:
                - id
                - category
                - name
                - order
                - closed
            properties:
                name:
                    description: Code name
                    type: string
                category:
                    description: |
                        Code category

                        | Value | Meaning |
                        | --- | --- |
                        | `CODE_CATEGORY_UNSPECIFIED` | Unknown |
                        | `FUNNEL` | Funnel |
                        | `EXPOSURE_CHANNEL` | Exposure channel |
                        | `ETCETRA_PRODUCT_CATEGORY` | Other product category |
                        | `IMAGE_EQUIPMENT` | Image equipment |
                        | `CALL_CONSULTATION_RESULT` | Call consultation result |
                        | `IMAGE_CATEGORY` | Image category |
                        | `FUNNEL_CATEGORY` | Funnel category |
                        | `VISITOR_CATEGORY` | Client category |
                        | `ACCOUNT_STATUS` | Account status |
                        | `CONSULTATION_RESULT` | 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: Deactivation status
                    type: boolean
                color:
                    description: |
                        Code color

                        | Value | Meaning |
                        | --- | --- |
                        | `CodeColor_UNSPECIFIED` | Unknown |
                        | `RED` | Red |
                        | `LAVA` | Lava |
                        | `ORANGE` | Orange |
                        | `GREEN` | Green |
                        | `CYAN` | Cyan |
                        | `BLUE` | Blue |
                        | `PURPLE` | Purple |
                        | `MAGENTA` | Magenta |
                        | `GRAY` | Gray |
                    type: string
                    enum:
                        - CodeColor_UNSPECIFIED
                        - RED
                        - LAVA
                        - ORANGE
                        - GREEN
                        - CYAN
                        - BLUE
                        - PURPLE
                        - MAGENTA
                        - GRAY
                default:
                    description: Default selection status
                    type: boolean
                id:
                    description: Code ID
                    type: string
                order:
                    description: Sort order
                    type: integer
                    format: int32
        protos.ticket.GetTicketBundlesQueryResponse:
            type: object
            properties:
                data:
                    description: |-
                        List of available treatment ticket bundles

                        Only bundles that have not been deleted and contain at least one ticket with `AVAILABLE` status are included.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.ticket.TicketBundleContract'
        protos.ticket.PriceAmount:
            type: object
            required:
                - value
                - currency
            properties:
                value:
                    description: Amount
                    type: number
                    format: double
                currency:
                    description: |-
                        Currency code

                        An [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard currency code. Example: `KRW`
                    type: string
        protos.ticket.ReferenceOptionConfiguration:
            type: object
            required:
                - optionId
                - optionTitle
                - productTitle
            properties:
                optionId:
                    description: Product option ID
                    type: string
                    format: object-id
                optionTitle:
                    description: Product option title
                    type: string
                productTitle:
                    description: Product title
                    type: string
                promotionConfiguration:
                    description: Promotion information
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.ReferenceOptionPromotionConfiguration'
                translsMap:
                    description: |-
                        Multilingual translation map for product option and product titles

                        The key is the field name to be translated, and the value is the translation data per language.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.ticket.ReferenceOptionPromotionConfiguration:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: Promotion title
                    type: string
                id:
                    description: Promotion ID
                    type: string
                    format: object-id
        protos.ticket.TicketBundleContract:
            type: object
            required:
                - purchaseId
                - purchaseItemId
                - optionConfiguration
                - price
            properties:
                title:
                    description: Treatment ticket bundle title
                    type: string
                optionConfiguration:
                    description: Product option information
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.ReferenceOptionConfiguration'
                price:
                    description: |-
                        Treatment ticket bundle amount

                        Treatment ticket amounts with `CANCELED` status are not included in the total.
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                purchaseId:
                    description: Payment ID
                    type: string
                    format: object-id
                purchaseItemId:
                    description: Purchase item ID
                    type: string
                    format: object-id
                ticketSets:
                    description: Treatment ticket set list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.ticket.TicketSetContract'
                translsMap:
                    description: |-
                        Multilingual translation map for treatment ticket bundle title

                        The key is the field name to be translated, and the value is the translation data per language.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
        protos.ticket.TicketContract:
            type: object
            required:
                - id
                - status
                - price
                - createdDateTimeUtc
            properties:
                createdDateTimeUtc:
                    description: |-
                        Treatment ticket creation date and time

                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format.
                    type: string
                    format: date-time
                id:
                    description: |-
                        Treatment ticket ID

                        UUID format.
                    type: string
                    format: uuid
                price:
                    description: Treatment ticket amount
                    allOf:
                        - $ref: '#/components/schemas/protos.ticket.PriceAmount'
                status:
                    description: |
                        Treatment ticket status

                        | Value | Meaning |
                        | --- | --- |
                        | `TicketStatus_UNSPECIFIED` | Unknown |
                        | `AVAILABLE` | Available |
                        | `USED` | Used |
                        | `CANCELED` | Canceled |
                        | `IN_USE` | In use |
                    type: string
                    enum:
                        - TicketStatus_UNSPECIFIED
                        - AVAILABLE
                        - USED
                        - CANCELED
                        - IN_USE
        protos.ticket.TicketSetContract:
            type: object
            required:
                - procedure
                - ticketGroupId
            properties:
                title:
                    description: Treatment ticket set title
                    type: string
                medicalService:
                    description: Medical service item
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.medical_service.MedicalService'
                medicineAndMachines:
                    description: Device and medication list used in the treatment
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.procedure.MedicineAndMachine'
                procedure:
                    description: Treatment information
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Procedure'
                ticketGroupId:
                    description: Treatment ticket group ID
                    type: string
                    format: object-id
                tickets:
                    description: Treatment ticket list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.ticket.TicketContract'
                translsMap:
                    description: |-
                        Multilingual translation map for treatment ticket set title

                        The key is the field name to be translated, and the value is the translation data per language.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
                unit:
                    description: Treatment unit
                    allOf:
                        - $ref: '#/components/schemas/protos.procedure.Unit'
        protos.visitor.Answers:
            type: object
            required:
                - answerId
                - title
                - inputType
                - isSubText
                - subText
            properties:
                title:
                    description: Answer Option Title
                    type: string
                answerId:
                    description: Questionnaire Answer Option ID
                    type: string
                inputType:
                    description: |
                        Answer Option Input Type

                        | Value | Meaning |
                        | --- | --- |
                        | `CHECK_BOX` | Checkbox |
                        | `SELECT_BOX` | Select Box |
                        | `INPUT_BOX` | Input Box |
                        | `DISCOUNT_SELECT_BOX` | Discount Select Box |

                        `DISCOUNT_SELECT_BOX` is a value that is no longer in use.
                    type: string
                    enum:
                        - CHECK_BOX
                        - SELECT_BOX
                        - INPUT_BOX
                        - DISCOUNT_SELECT_BOX
                isSubText:
                    description: Whether additional input is enabled
                    type: boolean
                subText:
                    description: |-
                        Additional input text

                        If a value exists, it will be used as a placeholder.
                    type: string
                translsMap:
                    description: |-
                        Answer Option translation map

                        The key is the language code, and the value is the translation data.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.visitor.GetQuestionnaireLagacyQueryResponse:
            type: object
            required:
                - name
                - phoneNumber
                - address
                - addressDetail
                - dateOfBirth
                - gender
            properties:
                name:
                    description: Client name
                    type: string
                address:
                    description: Client address
                    type: string
                addressDetail:
                    description: Client detailed address
                    type: string
                agreements:
                    description: Terms agreement item list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.SubmittedQuestionnaireAgreement'
                dateOfBirth:
                    description: |-
                        Client date of birth

                        Returned as a string.
                    type: string
                gender:
                    description: |
                        Client gender

                        | Value | Meaning |
                        | --- | --- |
                        | `GENDER_UNSPECIFIED` | Unspecified |
                        | `MALE` | Male |
                        | `FEMALE` | Female |
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                pages:
                    description: |-
                        Questionnaire page list

                        Pages are sorted by `id`.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.Pages'
                phone:
                    description: Client mobile phone number
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                phoneNumber:
                    description: |-
                        Client mobile phone number

                        Deprecated: Use the `phone` field instead.
                    deprecated: true
                    type: string
                phoneticName:
                    description: Client phonetic name
                    type: string
        protos.visitor.GetQuestionnaireSubmitLegacyQueryResponse:
            type: object
            required:
                - id
                - visitorId
                - visitorName
                - phoneNumber
                - dateOfBirth
                - gender
            properties:
                address:
                    description: Client address
                    type: string
                addressDetail:
                    description: Client detailed address
                    type: string
                agreements:
                    description: Terms agreement item list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.SubmittedQuestionnaireAgreement'
                answers:
                    description: Questionnaire response list
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.QuestionnaireSubmitAnswer'
                createdDateTimeUtc:
                    description: |-
                        First-visit questionnaire submission date/time

                        This is in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
                    type: string
                    format: date-time
                dateOfBirth:
                    description: |-
                        Client date of birth

                        An 8-digit string in `yyyyMMdd` format.
                    type: string
                gender:
                    description: |
                        Client gender

                        | Value | Meaning |
                        | --- | --- |
                        | `GENDER_UNSPECIFIED` | Unspecified |
                        | `MALE` | Male |
                        | `FEMALE` | Female |
                    type: string
                    enum:
                        - GENDER_UNSPECIFIED
                        - MALE
                        - FEMALE
                id:
                    description: Submitted first-visit questionnaire ID
                    type: string
                    format: object-id
                phone:
                    description: Client mobile phone number
                    allOf:
                        - $ref: '#/components/schemas/protos.Phone'
                phoneNumber:
                    description: |-
                        Client phone number

                        If the `phone` field exists, use `phone` instead of this field.
                    type: string
                phoneticName:
                    description: Client phonetic name
                    type: string
                visitorId:
                    description: Client ID
                    type: string
                    format: object-id
                visitorName:
                    description: Client name
                    type: string
        protos.visitor.Pages:
            type: object
            required:
                - id
                - title
            properties:
                title:
                    description: Questionnaire Page Title
                    type: string
                id:
                    description: Questionnaire Page ID
                    type: string
                questions:
                    description: |-
                        Page question list

                        Questions are sorted by `sequence`.
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.Questions'
                translsMap:
                    description: |-
                        Page translation map

                        The key is the language code, and the value is the translation data.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.visitor.QuestionnaireAgreement:
            type: object
            required:
                - id
                - title
                - required
            properties:
                title:
                    description: Terms Title
                    type: string
                type:
                    description: |
                        Terms Type

                        | Value | Meaning |
                        | --- | --- |
                        | `PERSONAL_INFORMATION` | Consent to Collection and Use of Personal Information |
                        | `ADVERTISEMENT` | Consent to Receive Promotional Messages |
                        | `INFORMATIONAL_NOTIFICATION` | Consent to Receive Informational Messages |
                    type: string
                    enum:
                        - PERSONAL_INFORMATION
                        - ADVERTISEMENT
                        - INFORMATIONAL_NOTIFICATION
                required:
                    description: Required Consent
                    type: boolean
                id:
                    description: Terms ID
                    type: string
                link:
                    description: Terms Link
                    type: string
                translsMap:
                    description: |-
                        Terms Translation Map

                        The key is the language code, and the value is the translation data.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.visitor.QuestionnaireSubmitAnswer:
            type: object
            required:
                - seq
                - questionId
                - questionTitle
                - answerId
                - answerTitle
                - memo
            properties:
                answerId:
                    description: Selected answer ID
                    type: string
                answerTitle:
                    description: Selected answer title
                    type: string
                memo:
                    description: Free-text input
                    type: string
                questionId:
                    description: Question ID
                    type: string
                questionTitle:
                    description: Question title
                    type: string
                seq:
                    description: Display order
                    type: string
        protos.visitor.Questions:
            type: object
            required:
                - questionId
                - title
                - sequence
            properties:
                title:
                    description: Question Title
                    type: string
                answers:
                    description: List of answer options for the question
                    type: array
                    items:
                        $ref: '#/components/schemas/protos.visitor.Answers'
                questionId:
                    description: Questionnaire Question ID
                    type: string
                sequence:
                    description: Question Order
                    type: integer
                    format: int32
                translsMap:
                    description: |-
                        Question translation map

                        The key is the language code, and the value is the translation data.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
        protos.visitor.SelectedAnswer:
            type: object
            required:
                - id
                - title
                - subText
                - inputText
                - parentQuestionId
                - parentQuestionTitle
                - inputType
            properties:
                title:
                    description: Selected option title
                    type: string
                id:
                    description: Selected option ID
                    type: string
                inputText:
                    description: |-
                        Direct input answer

                        If `inputType` is `INPUT_BOX`, it is saved as the questionnaire response memo.
                    type: string
                inputType:
                    description: |
                        Option input type

                        | Value | Meaning |
                        | --- | --- |
                        | `CHECK_BOX` | Checkbox |
                        | `SELECT_BOX` | Select Box |
                        | `INPUT_BOX` | Input Box |
                        | `DISCOUNT_SELECT_BOX` | Discount Select Box |

                        `DISCOUNT_SELECT_BOX` is a value that is no longer in use.
                    type: string
                    enum:
                        - CHECK_BOX
                        - SELECT_BOX
                        - INPUT_BOX
                        - DISCOUNT_SELECT_BOX
                parentQuestionId:
                    description: Parent question ID
                    type: string
                parentQuestionTitle:
                    description: Parent question title
                    type: string
                subText:
                    description: |-
                        Additional input content for the selected option

                        If `inputType` is not `INPUT_BOX`, it is saved as the questionnaire response memo.
                    type: string
        protos.visitor.SnsInfo:
            type: object
            required:
                - snsType
                - accountId
            properties:
                accountId:
                    description: SNS account ID
                    type: string
                snsType:
                    description: |
                        SNS type

                        | Value | Meaning |
                        | --- | --- |
                        | `etc` | Other |
                        | `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: Terms Title
                    type: string
                type:
                    description: |
                        Terms Type

                        | Value | Meaning |
                        | --- | --- |
                        | `PERSONAL_INFORMATION` | Consent to Collection and Use of Personal Information |
                        | `ADVERTISEMENT` | Consent to Receive Promotional Messages |
                        | `INFORMATIONAL_NOTIFICATION` | Consent to Receive Informational Messages |
                    type: string
                    enum:
                        - PERSONAL_INFORMATION
                        - ADVERTISEMENT
                        - INFORMATIONAL_NOTIFICATION
                required:
                    description: Required Consent
                    type: boolean
                agreed:
                    description: Consent Status
                    type: boolean
                id:
                    description: Terms ID
                    type: string
                link:
                    description: Terms Link
                    type: string
                translsMap:
                    description: |-
                        Terms Translation Map

                        The key is the language code, and the value is the translation data.
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/protos.Transls'
