---
openapi: 3.1.0
info:
  version: 1.0.0
  title: Lightspeed Restaurant K Series API
  description: |
    **Lightspeed Restaurant** offers a **REST API** in order to communicate with the data in the system. These APIs are built using the RESTful standards and adhere to the basic verb interactions as defined by the REST standard.
    Detailed developer guides can be found in the [Lightspeed Restaurant API Portal](https://api-portal.lsk.lightspeed.app/).
    These services are in continuous development and subject to change. Please find our versioning policy [here](https://api-portal.lsk.lightspeed.app/quick-start/versioning).
  x-logo:
    altText: Lightspeed Commerce
    url: static/lightspeed@2x.png
servers:
- url: https://api.trial.lsk.lightspeed.app
  description: Demo URL
  x-bump-branch-name: demo
- url: https://api.lsk.lightspeed.app
  description: Production URL
  x-bump-branch-name: prod
tags:
- name: Rich Item
- name: Tax Breakdown
- name: Staff
  description: Staff API. Authorisation Code grant type is required for this API with
    permission ROLE_CONFIG_USERS.
- name: Reservations for Platforms
- name: PMS
- name: Items
- name: Reservations
- name: ID Cards
- name: Financial
  description: |
    V1 endpoints (`/f/finance/...`) for retrieving sales and financial data.

    For the newer V2 versions of these endpoints see FinancialV2

    ### V1 behaviour

    - **Sorting**: No guaranteed sorting order; internal transformations may alter order unpredictably
    - **Transitory Accounts / Unsettled Sales**: Returns closed transactions only
    - **Pagination**: `pageSize` max of 1000. Uses HATEOAS `_links` with `self` and `nextPage` URLs
    - **Daily endpoints** (`getDailyFinancials`): No pagination, no hard cap on results. May have slower response times for larger data sets
    - **Backoffice transactions**: Historical dating supported. Transactions will be dated to a past date if the action impacts past reports. Can query transactions by original business date
    - **Backoffice modifications** (payment method change and canceling): Modifications appear on the original transaction date
- name: FinancialV2
  description: |
    V2 endpoints (`/f/v2/...`) for retrieving sales and financial data.

    ### Endpoint Mapping

    | V1 Endpoint | V2 Endpoint |
    |-------------|-------------|
    | `getFinancials` (`/f/finance/{id}/financials/{from}/{to}`) | `getSales` (`/f/v2/business-location/{id}/sales`) |
    | `getDailyFinancials` (`/f/finance/{id}/dailyFinancials`) | `getBusinessDaySales` (`/f/v2/business-location/{id}/sales-daily`) |

    Response DTOs are nearly identical to V1 with the exceptions noted below

    ### V2 behaviour

    - **Sorting**: Explicitly sorted by `timeClosed`
    - **Transitory Accounts /  Unsettled Sales**: Returns closed transactions and ensures no transitory (unclosed) transactions are included in reporting
    - **Pagination**: `pageSize` max of 100. No HATEOAS `_links`; uses `nextPageToken` string for pagination instead
    - **Daily endpoints** (`getBusinessDaySales`): No pagination, no hard cap on results. May have slower response times for larger data sets
    - **Backoffice transactions**: Historical dating not currently supported — transactions appear as if created at current time. Transactions can only be found by the date/time they were actually created. *Historical dating support is planned for a future release.*
    - **Backoffice modifications** (payment method change and canceling): Modifications appear on the date the modification was performed, not the original transaction date

    If you need to query transactions by their original business date (e.g. for historical reporting or reconciliation); The V1 endpoints may be more suitable until backwards compatibility is added to V2 for this aspect.
- name: Order and Pay
- name: 'Order and Pay: Webhook'
webhooks:
  apeOrder notification:
    post:
      summary: Order Notification
      operationId: onlineOrderNotification
      description: What your webhook implementation will receive when placing an order
      tags:
      - Order and Pay
      requestBody:
        content:
          application/json:
            examples:
              successfulWithoutAccountInfo:
                summary: successful
                value:
                  status: SUCCESS
                  ikentooAccountId: '2114502594134196'
                  ikentooAccountIdentifier: A123080.14
                  thirdPartyReference: REF11
                  type: ORDER
              readyForPickUp:
                summary: ready for pickup
                value:
                  thirdPartyReference: order-wFUBVgHNGPAJsryIrSaE
                  businessLocationId: 247158188015618
                  status: READY_FOR_PICKUP
                  account:
                    clientCount: 2
                    uuid: 5a81c7f4-9e2f-4db2-965d-6946a4f9c25b
                    openDate: '2021-12-21T13:24:49.265+0000'
                    paidAmount: '4.00'
                    serviceCharge: '0.00'
                    name: Order NZVV
                    currentAmount: '4.00'
                    staffName: Manager
                    staffId: 31930
                    salesEntries:
                    - id: 304087979524125
                      itemName: Appetizer 2
                      itemSku: '21'
                      unitAmount: '4.00'
                      quantity: 1
                      modifiers: []
                      amountWithTax: '4.00'
                      amountLessTax: '3.33'
                      discountedAmount: '0.00'
                      grossUnitAmount: '4.00'
                      active: true
                      taxIncluded: true
                    paymentEntries:
                    - paymentMethodDescription: API Payment
                      externalReference: '1234567890'
                      paymentMethodCode: APM
                      amountPaid: '4.00'
                      paymentDate: '2021-12-21T13:25:25.082+0000'
                      active: true
                    ikaccountId: A17700.3
                    tableNumber: 3
                    posId: 17700
                  ikentooAccountId: 304087979524124
                  ikentooAccountIdentifier: A17700.3
                  type: ORDER
              failure:
                summary: failure
                value:
                  status: FAILURE
                  reason: A consumer already exists for this email address with a
                    different external reference.
                  thirdPartyReference: REF12212
              succesfulWithAccount:
                summary: successful with account info
                value:
                  thirdPartyReference: order-wFUBVgHNGPAJsryIrSaE
                  businessLocationId: 247158188015618
                  status: SUCCESS
                  account:
                    clientCount: 2
                    uuid: 5a81c7f4-9e2f-4db2-965d-6946a4f9c25b
                    openDate: '2021-12-21T13:24:49.265+0000'
                    paidAmount: '0.00'
                    serviceCharge: '0.00'
                    name: Order NZVV
                    currentAmount: '4.00'
                    staffName: Online Order
                    staffId: 31930
                    salesEntries:
                    - id: 304087979524125
                      uuid: 1b8d016e-2c7f-456d-9349-8476eacd99bf
                      itemName: Appetizer 2
                      itemSku: '21'
                      unitAmount: '4.00'
                      quantity: 1
                      modifiers: []
                      amountWithTax: '4.00'
                      amountLessTax: '3.33'
                      discountedAmount: '0.00'
                      grossUnitAmount: '4.00'
                      timeOfTransactionUtc: '2023-11-08T13:33:52.641+0000'
                      active: true
                      subLineItems: []
                      taxIncluded: true
                    paymentEntries: []
                    ikaccountId: A17700.3
                    tableNumber: 3
                    posId: 17700
                  ikentooAccountId: 304087979524124
                  ikentooAccountIdentifier: A17700.3
                  type: ORDER
              checkWasUpdated:
                summary: check was updated
                value:
                  thirdPartyReference: order-wFUBVgHNGPAJsryIrSaE
                  businessLocationId: 247158188015618
                  status: CHECK_WAS_UPDATED
                  account:
                    clientCount: 2
                    uuid: 5a81c7f4-9e2f-4db2-965d-6946a4f9c25b
                    openDate: '2021-12-21T13:24:49.265+0000'
                    paidAmount: '4.00'
                    serviceCharge: '0.00'
                    name: Order NZVV
                    currentAmount: '4.00'
                    staffName: Manager
                    staffId: 31930
                    salesEntries:
                    - id: 304087979524125
                      itemName: Appetizer 2
                      itemSku: '21'
                      unitAmount: '4.00'
                      quantity: 1
                      modifiers: []
                      amountWithTax: '4.00'
                      amountLessTax: '3.33'
                      discountedAmount: '0.00'
                      grossUnitAmount: '4.00'
                      active: true
                      taxIncluded: true
                    paymentEntries:
                    - paymentMethodDescription: API Payment
                      externalReference: '1234567890'
                      paymentMethodCode: APM
                      amountPaid: '4.00'
                      paymentDate: '2021-12-21T13:25:25.082+0000'
                      active: true
                    ikaccountId: A17700.3
                    tableNumber: 3
                    posId: 17700
                  ikentooAccountId: 304087979524124
                  ikentooAccountIdentifier: A17700.3
                  type: ORDER
              closed:
                summary: closed
                value:
                  thirdPartyReference: order-wFUBVgHNGPAJsryIrSaE
                  businessLocationId: 247158188015618
                  status: CLOSED
                  account:
                    clientCount: 2
                    uuid: 5a81c7f4-9e2f-4db2-965d-6946a4f9c25b
                    openDate: '2021-12-21T13:24:49.265+0000'
                    paidAmount: '4.00'
                    serviceCharge: '0.00'
                    name: Order NZVV
                    currentAmount: '4.00'
                    staffName: Manager
                    staffId: 31930
                    salesEntries:
                    - id: 304087979524125
                      itemName: Appetizer 2
                      itemSku: '21'
                      unitAmount: '4.00'
                      quantity: 1
                      modifiers: []
                      amountWithTax: '4.00'
                      amountLessTax: '3.33'
                      discountedAmount: '0.00'
                      grossUnitAmount: '4.00'
                      active: true
                      taxIncluded: true
                    paymentEntries:
                    - paymentMethodDescription: API Payment
                      externalReference: '1234567890'
                      paymentMethodCode: APM
                      amountPaid: '4.00'
                      paymentDate: '2021-12-21T13:25:25.082+0000'
                      active: true
                    ikaccountId: A17700.3
                    tableNumber: 3
                    posId: 17700
                  ikentooAccountId: 304087979524124
                  ikentooAccountIdentifier: A17700.3
                  type: ORDER
            schema:
              allOf:
              - "$ref": "#/components/schemas/apeBaseWebhookInformation"
              - properties:
                  status:
                    enum:
                    - SUCCESS
                    - FAILURE
                    - IN_DELIVERY
                    - READY_FOR_PICKUP
                    - CLOSED
                    - ABANDONED
                    - CANCELLED
                    description: Status of the order operation.
                    type: string
                  type:
                    description: Notification type
                    default: ORDER
                    type: string
                  account:
                    allOf:
                    - description: Related account (if the webhook is configured to
                        provide it)
                    - "$ref": "#/components/schemas/apeAccountSnapshot"
                type: object
        required: true
      responses:
        '200':
          description: Your server returns this code if it accepts the callback
  apePayment notification:
    post:
      summary: Payment Notification
      operationId: onlinePaymentNotification
      description: What your webhook implementation will receive when placing a payment
      tags:
      - Order and Pay
      requestBody:
        content:
          application/json:
            examples:
              successfulPayment:
                summary: successful
                value:
                  thirdPartyReference: REF11
                  businessLocationId: 247158188015618
                  status: SUCCESS
                  ikentooAccountId: '2114502594134196'
                  ikentooAccountIdentifier: A123080.14
                  type: PAYMENT
              failurePayment:
                summary: failure
                value:
                  reason: the payment amount is greater than the amount due
                  thirdPartyReference: REF12212
                  businessLocationId: 141948669832802
                  status: FAILURE
                  ikentooAccountIdentifier: A78094.73
                  type: PAYMENT
            schema:
              allOf:
              - "$ref": "#/components/schemas/apeBaseWebhookInformation"
              - properties:
                  status:
                    enum:
                    - SUCCESS
                    - FAILURE
                    description: Status of the order or payment operation.
                    type: string
                  type:
                    description: Notification type
                    default: PAYMENT
                    type: string
                type: object
        required: true
      responses:
        '200':
          description: Your server returns this code if it accepts the callback
  apeItem availability notification:
    post:
      summary: Item Availability Notification
      operationId: salesRestrictionUpdatedNotification
      description: What your webhook implementation will receive when item sales restrictions
        are updated
      tags:
      - Order and Pay
      requestBody:
        content:
          application/json:
            examples:
              itemRestricted:
                summary: item restricted
                value:
                  sku: UGG-BB-PUR-06
                  businessLocationId: 247158188015618
                  count: 5
                  countUpdatedAt: '2024-04-04T09:42:00.000+00:00'
                  status: RESTRICTED
                  type: ITEM
              itemNotRestricted:
                summary: item not restricted
                value:
                  sku: UGG-BB-PUR-06
                  businessLocationId: 247158188015618
                  count:
                  countUpdatedAt: '2024-04-04T09:42:00.000+00:00'
                  status: NOT_RESTRICTED
                  type: ITEM
            schema:
              type: object
              properties:
                sku:
                  type: string
                  description: The SKU of the item with updated availability
                  examples:
                  - UGG-BB-PUR-06
                businessLocationId:
                  "$ref": "#/components/schemas/apeBusinessLocationId"
                count:
                  type:
                  - integer
                  - 'null'
                  format: int64
                  description: The available count of the item. null indicates no
                    restriction
                  examples:
                  - 5
                countUpdatedAt:
                  type: string
                  format: date-time
                  description: The timestamp when the count was last updated
                  examples:
                  - '2024-04-04T09:42:00.000+00:00'
                status:
                  type: string
                  enum:
                  - RESTRICTED
                  - NOT_RESTRICTED
                  description: The restriction status of the item
                  examples:
                  - RESTRICTED
                type:
                  type: string
                  description: Notification type
                  default: ITEM
                  examples:
                  - ITEM
              required:
              - sku
              - businessLocationId
              - countUpdatedAt
              - status
              - type
        required: true
      responses:
        '200':
          description: Your server returns this code if it accepts the callback
  pms-integration{subscriber-host}/charge:
    post:
      summary: Transaction Details
      operationId: transactionDetails
      description: |
        What subscriber endpoint implementation will receive when a transaction is made.
        Subscriber path need to end with `/charge`.
        Subscriber implementation should follow the payload backward compatibility rules below:
          - What considered as backward **compatible**:
            - Addition of new fields, enums, headers, or parameters.
            - Transition from optional to required fields. Which means Lightspeed will consistently send the parameter/field from now on.
          - What considered as backward **incompatible**:
            - Alteration of schema structure, such as switching from a map to an array.
            - Removal of field/enum/header
            - Changes in data types, such as converting from string to integer.
            - Changes of property name
      parameters:
      - in: header
        name: Accept
        required: true
        schema:
          type: string
          example: application/json
          description: |
            The expected response content type from subscriber.
            Only application/json is supported.
      - in: header
        name: X-Lightspeed-Idempotency-Key
        required: true
        schema:
          type: string
          example: LS1_123e4567-e89b-12d3-a456-426614174000
          description: 'Subscribers should utilize the Idempotency Key to ensure duplicates
            are handled appropriately on their end.

            '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/pms-integrationSalesWebhookDto"
      responses:
        '200':
          description: |
            Subscriber should return this code if it successfully processed the charge request at PMS.
            Following that, Lightspeed will mark the PMS charge transaction as SUCCESS as well.
        5XX:
          description: |
            If any server error occurs subscriber can pass their own custom message to the POS.
            The response body content need to follow the schema, else only `5XX {Error Type}` will be sent.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/pms-integrationErrorWebhookDto"
        4XX:
          description: |
            If any client error occurs subscriber can pass their own custom message to the POS.
            The response body content need to follow the schema, else only `4XX {Error Type}` will be sent.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/pms-integrationErrorWebhookDto"
      tags:
      - PMS Integration
  reservation-serviceReservation error notification:
    post:
      summary: Error notification
      operationId: reservationErrorNotification
      description: These notifications are sent to the URL provided in the[`errorsWebhookUrl`
        field](https://api-docs.lsk.lightspeed.app/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-errorswebhookurl).
      tags:
      - Reservations for Platforms
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-serviceErrorWebhook"
        required: true
      responses:
        '200':
          description: Your server returns this code if it accepts the callback.
  reservation-serviceReservation integration notification:
    post:
      summary: Integration notification
      operationId: reservationIntegrationNotification
      description: These notifications are sent to the URL provided in the[`integrationWebhookUrl`
        field](https://api-docs.lsk.lightspeed.app/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-integrationwebhookurl).
      tags:
      - Reservations for Platforms
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-serviceIntegrationWebhook"
        required: true
      responses:
        '200':
          description: Your server returns this code if it accepts the callback.
  reservation-serviceReservation onboarding notification:
    post:
      summary: Onboarding notification
      operationId: reservationOnboardingNotification
      description: These notifications are sent to the URL provided in the[`onboardingWebhookUrl`
        field](https://api-docs.lsk.lightspeed.app/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-onboardingwebhookurl).
      tags:
      - Reservations for Platforms
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-serviceOnboardingWebhook"
        required: true
      responses:
        '200':
          description: Your server returns this code if it accepts the callback.
  reservation-serviceReservation order notification:
    post:
      summary: Order notification
      operationId: reservationOrderNotification
      description: These notifications are sent to the URL provided in the[`orderWebhookUrl`
        field](https://api-docs.lsk.lightspeed.app/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-orderwebhookurl).
      tags:
      - Reservations for Platforms
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-serviceOrderUpdate"
        required: true
      responses:
        '200':
          description: Your server returns this code if it accepts the callback.
  reservation-servicePOS reservation updated notification:
    post:
      summary: POS reservation updated notification
      operationId: posReservationUpdatedNotification
      description: These notifications are sent to the URL provided in the[`posReservationUpdateWebhookUrl`
        field](https://api-docs.lsk.lightspeed.app/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-posreservationupdatewebhookurl).
      tags:
      - Reservations for Platforms
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-servicePosReservationUpdate"
        required: true
      responses:
        '200':
          description: Your server returns this code if it accepts the callback.
  staff-apiShift notification:
    post:
      summary: Shift notification
      operationId: shiftNotification
      description: Notify about a shift event.
      tags:
      - Staff
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/staff-apiWebhookEventDto"
        required: true
      responses:
        '200':
          description: Your server returns this code if it accepts the callback.
paths:
  "/o/op/data/businesses":
    get:
      summary: Get Businesses
      operationId: apeLookupBusinesses
      description: Returns a list of all businesses and business locations associated
        with the access token.
      tags:
      - Order and Pay
      responses:
        '200':
          description: Businesses
          content:
            application/json:
              schema:
                items:
                  properties:
                    name:
                      example: My Awesome Business
                      description: The business name.
                      type: string
                    id:
                      example: 454335871
                      description: The unique identifier for the business.
                      type: integer
                      format: int64
                    businessLocations:
                      description: The business locations within this business.
                      items:
                        properties:
                          id:
                            "$ref": "#/components/schemas/apeBusinessLocationId"
                          name:
                            example: My Awesome Business - Location 1
                            description: The business location name.
                            type: string
                        type: object
                      type: array
                  type: object
                type: array
      security:
      - OAuth2:
        - orders-api
  "/o/op/data/{businessLocationId}/floorplans":
    get:
      summary: Get All Floorplans
      operationId: apeLookupFloorPlans
      description: Returns the floorplans for a specific business location.
      tags:
      - Order and Pay
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: path
        required: true
      - name: expandTables
        in: query
        required: false
        description: |-
          If true, the response will include the table details for each floorplan.
          If false, the response will only include the [`name`](https://api-docs.lsk.lightspeed.app/operation/operation-apelookupfloorplans#operation-apelookupfloorplans-200-body-application-json-name) and [`id`](https://api-docs.lsk.lightspeed.app/operation/operation-apelookupfloorplans#operation-apelookupfloorplans-200-body-application-json-id) for the floorplans.
        schema:
          type: boolean
          default: true
      responses:
        '200':
          description: Floorplans
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      example: 141948669132976
                      description: The unique identifier for the floorplan.
                      format: int64
                      type: integer
                    name:
                      description: The name of the floorplan.
                      example: Terrace
                      type: string
                    tables:
                      items:
                        "$ref": "#/components/schemas/apeTable"
                      type: array
                  type: object
                type: array
        '404':
          description: |-
            Not Found

            Indicates that the business location has no floorplans configured.
      security:
      - OAuth2:
        - orders-api
  "/o/op/data/{businessLocationId}/floorplans/{floorPlanId}/tables":
    get:
      summary: Get Floorplan Tables
      operationId: apeGetTables
      description: Returns the tables for a specific floorplan of a business location
      tags:
      - Order and Pay
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: path
        required: true
      - schema:
          "$ref": "#/components/schemas/apeFloorPlanId"
        name: floorPlanId
        in: path
        required: true
      responses:
        '200':
          description: Tables
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/apeTable"
      security:
      - OAuth2:
        - orders-api
  "/o/op/data/account-profiles":
    get:
      summary: Get All Order Profiles
      operationId: apeAccountProfiles
      description: |-
        Returns a list of active [order profiles](https://k-series-support.lightspeedhq.com/hc/en-us/articles/1260804657389-About-order-profiles) for a specific business location.

        The order profile [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code) can be used to retrieve a specific price list when [loading a menu](https://api-docs.lsk.lightspeed.app/operation/operation-apegetmenubyid).

        Note: Order Profiles were previously called Account Profiles, and may still be referred to in this way in the API, in some cases.
      tags:
      - Order and Pay
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: query
        required: true
      responses:
        '200':
          description: Order profiles
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeAccountProfiles"
      security:
      - OAuth2:
        - orders-api
  "/o/op/data/{businessLocationId}/account-profiles/tagcode/{tagCode}":
    get:
      summary: Get Single Order Profile
      operationId: apeGetAccountProfile
      description: |-
        Returns details of an active [order profile](https://k-series-support.lightspeedhq.com/hc/en-us/articles/1260804657389-About-order-profiles) based on its [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code).

        Note: Order Profiles were previously called Account Profiles, and may still be referred to in this way in the API, in some cases.
      tags:
      - Order and Pay
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: path
        required: true
      - schema:
          "$ref": "#/components/schemas/apeTagCode"
        name: tagCode
        in: path
        required: true
      responses:
        '200':
          description: Order profile
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeAccountProfile"
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/menu/list":
    get:
      summary: Get All Menus
      operationId: apeLoadMenus
      description: Returns a list of menus for a given business location.
      tags:
      - Order and Pay
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: query
        required: true
      responses:
        '200':
          description: Load menus
          content:
            application/json:
              schema:
                items:
                  properties:
                    menuName:
                      description: The name of the menu.
                      example: Lunch Menu
                      type: string
                    ikentooMenuId:
                      type: integer
                      description: The unique identifier for the menu.
                      example: 141948669132851
                      format: int64
                  type: object
                type: array
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/menu/load/{menuId}":
    get:
      summary: Get Single Menu
      operationId: apeGetMenuById
      deprecated: true
      description: "**Deprecated:** Use [/o/op/2/menu/load/{menuId}](#/Order%20and%20Pay/getMenuByIdV2)
        instead. V2 includes product modifier groups and product modifiers on menu
        items and deal items. Returns details of a particular menu based on its unique
        identifier and other query parameters."
      tags:
      - Order and Pay
      parameters:
      - name: menuId
        in: path
        required: true
        description: The unique identifier for the menu.
        schema:
          type: integer
          description: The unique identifier for the menu.
          example: 141948669132851
          format: int64
      - name: businessLocationId
        in: query
        required: true
        schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
      - name: accountProfile
        in: query
        required: false
        schema:
          type: string
          description: The order profile [`code`](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code).
            Item prices returned will be those associated with this order profile,
            when applicable. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles)
            definition for more details.
          example: TAKEAWAY
          default: ''
      - name: richContent
        in: query
        required: false
        schema:
          type: boolean
          description: Query parameter to include rich content of menu items.
          example: true
          default: false
      responses:
        '200':
          description: Successful retrieval of menu details.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeMenu"
        '503':
          description: Service Unavailable
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '503'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
      security:
      - OAuth2:
        - orders-api
  "/o/op/2/menu/load/{menuId}":
    get:
      summary: Get Single Menu V2
      operationId: apeGetMenuByIdV2
      description: |-
        Returns details of a particular menu based on its unique identifier and other query parameters. Product modifier groups and product modifiers are always included in the response.

        **Migration from V1:** The response includes `menuModifierGroups` on each menu item and deal item, containing product modifier details (name, price, extraPrice, sku, rich data). Items with product modifier groups are no longer marked as `asSubItem`.
      tags:
      - Order and Pay
      parameters:
      - name: menuId
        in: path
        required: true
        description: The unique identifier for the menu.
        schema:
          type: integer
          description: The unique identifier for the menu.
          example: 141948669132851
          format: int64
      - name: businessLocationId
        in: query
        required: true
        schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
      - name: accountProfile
        in: query
        required: false
        schema:
          type: string
          description: The order profile [`code`](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code).
            Item prices returned will be those associated with this order profile,
            when applicable. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles)
            definition for more details.
          example: TAKEAWAY
          default: ''
      - name: richContent
        in: query
        required: false
        schema:
          type: boolean
          description: Query parameter to include rich content of menu items.
          example: true
          default: false
      responses:
        '200':
          description: Successful retrieval of menu details including product modifiers.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeMenuV2"
        '503':
          description: Service Unavailable
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '503'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/menu/modifiers":
    get:
      summary: Get Modifiers
      operationId: apeLoadAllModifiers
      description: Returns a list of production instructions for a specific business
        location.
      tags:
      - Order and Pay
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: query
        required: true
      responses:
        '200':
          description: Load modifiers
          content:
            application/json:
              schema:
                items:
                  "$ref": "#/components/schemas/apeProductionInstruction"
                type: array
                examples:
                - - multiSelectionPermitted: false
                    productionInstructionGroupName: Meat cooking
                    productionIntructionGroupId: 236025632784487
                    productionInstructionList:
                    - instruction: Bleu
                      ikentooModifierId: 236025632784488
                    - instruction: Rare
                      ikentooModifierId: 236025632784490
                    - instruction: Medium Rare
                      ikentooModifierId: 236025632784492
                    - instruction: Medium
                      ikentooModifierId: 236025632784494
                    - instruction: Medium well
                      ikentooModifierId: 236025632784496
                    - instruction: Well done
                      ikentooModifierId: 236025632784498
                  - multiSelectionPermitted: false
                    productionInstructionGroupName: Fish cooking
                    productionIntructionGroupId: 236025632784501
                    productionInstructionList:
                    - instruction: Seared
                      ikentooModifierId: 236025632784502
                    - instruction: Medium
                      ikentooModifierId: 236025632784504
                    - instruction: Well done
                      ikentooModifierId: 236025632784506
                  - multiSelectionPermitted: false
                    productionInstructionGroupName: Egg cooking
                    productionIntructionGroupId: 236025632784509
                    productionInstructionList:
                    - instruction: Sunny Side
                      ikentooModifierId: 236025632784510
                    - instruction: Over Easy
                      ikentooModifierId: 236025632784512
                    - instruction: Hard
                      ikentooModifierId: 236025632784514
                    - instruction: Scrambled
                      ikentooModifierId: 236025632784516
                  - multiSelectionPermitted: false
                    productionInstructionGroupName: Garnish
                    productionIntructionGroupId: 236025632784519
                    productionInstructionList:
                    - instruction: Fries
                      ikentooModifierId: 236025632784520
                    - instruction: Pasta
                      ikentooModifierId: 236025632784522
                    - instruction: Rice
                      ikentooModifierId: 236025632784524
                    - instruction: Vegetables
                      ikentooModifierId: 236025632784526
                    - instruction: Salad
                      ikentooModifierId: 236025632784528
                  - multiSelectionPermitted: false
                    productionInstructionGroupName: Flavors
                    productionIntructionGroupId: 236025632784531
                    productionInstructionList:
                    - instruction: Vanilla
                      ikentooModifierId: 236025632784532
                    - instruction: Strawberry
                      ikentooModifierId: 236025632784534
                    - instruction: Chocolate
                      ikentooModifierId: 236025632784536
                    - instruction: Coffee
                      ikentooModifierId: 236025632784538
                    - instruction: Caramel
                      ikentooModifierId: 236025632784540
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/menu/discounts":
    get:
      summary: Get Discounts
      operationId: apeLoadAllDiscounts
      description: Returns a list of discounts for a specific business location.
      tags:
      - Order and Pay
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: query
        required: true
      responses:
        '200':
          description: Load discounts
          content:
            application/json:
              schema:
                items:
                  "$ref": "#/components/schemas/apeDiscount"
                type: array
                examples:
                - - name: Free
                    code: FREE
                    discountPercentage: 100.0
                  - name: Ten Euros Off
                    code: TEN_OFF
                    discountAmount: 10.0
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/order/local":
    post:
      summary: Create Local Order
      description: |-
        Creates a new dine-in order for a specific business location. See [Online Ordering Basics](https://api-portal.lsk.lightspeed.app/guides/tutorials/online-ordering-basics) for more details.

        If the [accountIdentifier](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-accountidentifier) of an existing order is provided in the body of the request, the request will update the existing order.
      operationId: apeLocalOrder
      requestBody:
        content:
          application/json:
            schema:
              required:
              - businessLocationId
              - thirdPartyReference
              - endpointId
              - customerInfo
              properties:
                businessLocationId:
                  "$ref": "#/components/schemas/apeBusinessLocationId"
                thirdPartyReference:
                  description: The external reference provided for this order. Must
                    be unique. This value will be included in the order details sent
                    to the [webhook URL](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo#operation-apecreatewebhookoo-body-application-json-url).
                  type: string
                  minLength: 1
                  maxLength: 48
                  examples:
                  - MyAwesomeThirdPartyReference
                endpointId:
                  description: Endpoint ID for a unique webhook that has been created
                    using [the webhook endpoint](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo).
                  type: string
                  examples:
                  - MY-AWESOME-ENDPOINT-ID
                customerInfo:
                  "$ref": "#/components/schemas/apeCustomerInfo"
                orderNote:
                  description: A note added to this order and displayed on the printed
                    dockets.
                  type: string
                  examples:
                  - Sample Order Note
                maxTimeToAttemptOrderDeliverToPos:
                  description: |-
                    ** Use of this feature is strongly recommended **

                    Maximum time to attempt delivery of this order to the POS. In milliseconds. The minimum value is 60000ms (1 minute).

                    If [`scheduledTimeForOrderAsIso8601`](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-scheduledtimefororderasiso8601) is used, this value will be added to the scheduled order time.
                  type: integer
                  format: int32
                  examples:
                  - 60000
                staffId:
                  description: The unique identifier for the staff member.
                  type: integer
                  format: int64
                  examples:
                  - 1234567890
                accountProfileCode:
                  description: A valid order profile [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code)
                    to associate with this order. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles)
                    definition for more details.
                  type: string
                  examples:
                  - LOCALORDER
                scheduledTimeForOrderAsIso8601:
                  description: The time that the order will be sent to the POS. Must
                    be in the future.
                  type: string
                  format: date-time
                  examples:
                  - '2024-04-04T09:42:00.000+00:00'
                payment:
                  "$ref": "#/components/schemas/apeOrderPayment"
                accountId:
                  description: The system-generated account identifier for this order
                    (Applies to iKentoo V2). If this is specified, the associated
                    order will be updated.
                  deprecated: true
                  type: string
                  examples:
                  - '1234567890'
                accountIdentifier:
                  description: The system-generated account identifier for this order
                    (Applies to iKentoo V3+). If this is specified, the associated
                    order will be updated.
                  type: string
                  examples:
                  - A1235.89
                tableNumber:
                  description: The table number for this local order. If updating
                    an existing order, (ie.`accountIdentifier` is specified), the
                    `tableNumber` cannot be updated.
                  type: string
                  examples:
                  - '1'
                clientCount:
                  description: The number of customers for this order. If updating
                    an existing order, (ie.`accountIdentifier` is specified), the
                    `clientCount` cannot be updated.
                  type: integer
                  format: int32
                  examples:
                  - 4
                items:
                  description: The items in this order.
                  items:
                    "$ref": "#/components/schemas/apeLocalOrderItemLine"
                  type: array
                targetPrinterProfileId:
                  description: The printer profile id to use for printing the receipt
                    for this payment. If not provided, the default active printer
                    profile for the business location will be used.
                  type: integer
                  format: int64
                  examples:
                  - 1773881235
              type: object
        required: true
      tags:
      - Order and Pay
      responses:
        '200':
          description: accepted
          content:
            application/json:
              schema:
                properties:
                  status:
                    description: The response.
                    type: string
                    examples:
                    - ok
                type: object
        '400':
          description: Bad Request.
          content:
            application/json:
              schema:
                type: object
                description: Response object for error code 400
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T19:15:05.043+0000'
                  status:
                    type: integer
                    description: The HTTP status code of the error response.
                    examples:
                    - 400
                  error:
                    type: string
                    description: A brief title of the error status.
                    examples:
                    - Bad Request
                  message:
                    type: string
                    description: A message describing the nature of the error in detail.
                    examples:
                    - 'Validation failed for object=''localOrder''. Error count: 1'
                  errors:
                    type: array
                    description: An array of error details, outlining specific issues
                      with the request.
                    items:
                      type: object
                      properties:
                        codes:
                          type: array
                          items:
                            type: string
                          description: A set of code strings that correspond to the
                            validation error.
                          example:
                          - NotNull.localOrder.thirdPartyReference
                          - NotNull.thirdPartyReference
                          - NotNull.java.lang.String
                          - NotNull
                        arguments:
                          type: array
                          items:
                            type: object
                            properties:
                              codes:
                                type: array
                                items:
                                  type: string
                                description: Argument codes that are related to the
                                  field in validation.
                                example:
                                - localOrder.thirdPartyReference
                                - thirdPartyReference
                              defaultMessage:
                                type: string
                                description: The default message associated with the
                                  failed validation.
                                example: thirdPartyReference
                              code:
                                type: string
                                description: A single code that represents the specific
                                  validation rule that was not satisfied.
                                example: thirdPartyReference
                        defaultMessage:
                          type: string
                          description: The default error message provided when the
                            associated field fails validation.
                          example: must not be null
                        objectName:
                          type: string
                          description: The name of the object that failed validation.
                          example: localOrder
                        field:
                          type: string
                          description: The name of the field that failed validation.
                          example: thirdPartyReference
                        bindingFailure:
                          type: boolean
                          description: Indicates whether the error was a result of
                            a binding failure.
                          example: false
                        code:
                          type: string
                          description: A code representing the specific type of validation
                            error.
                          example: NotNull
                  path:
                    type: string
                    description: The path of the failed request.
                    examples:
                    - "/o/op/1/order/local"
        '409':
          description: Conflict
          content:
            "*/*":
              schema:
                properties:
                  status:
                    description: The request status.
                    type: string
                    examples:
                    - fail
                  msg:
                    description: A message describing the error.
                    type: string
                    examples:
                    - reference has already been used 123456789
                type: object
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/order/toGo":
    post:
      summary: Create To Go Order
      operationId: apePlaceToGoOrder
      description: Creates a new takeaway or delivery order for a specific business
        location. See [Online Ordering Basics](https://api-portal.lsk.lightspeed.app/guides/tutorials/online-ordering-basics)
        for more details.
      requestBody:
        content:
          application/json:
            schema:
              required:
              - businessLocationId
              - thirdPartyReference
              - endpointId
              - customerInfo
              properties:
                businessLocationId:
                  "$ref": "#/components/schemas/apeBusinessLocationId"
                thirdPartyReference:
                  description: The external reference provided for this order. Must
                    be unique. This value will be included in the order details sent
                    to the [webhook URL](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo#operation-apecreatewebhookoo-body-application-json-url).
                  type: string
                  minLength: 1
                  maxLength: 48
                  examples:
                  - MyAwesomeThirdPartyReference
                endpointId:
                  description: Endpoint id for a unique webhook that has been created
                    using [the webhook endpoint](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo).
                  type: string
                  examples:
                  - MY-AWESOME-ENDPOINT-ID
                customerInfo:
                  "$ref": "#/components/schemas/apeCustomerInfo"
                orderNote:
                  description: A note added to this order and displayed on the printed
                    dockets.
                  type: string
                  examples:
                  - Sample Order Note
                maxTimeToAttemptOrderDeliverToPos:
                  description: |-
                    ** Use of this feature is strongly recommended **

                    Maximum time to attempt delivery of this order to the POS. In milliseconds. The minimum value is 60000ms (1 minute).

                    If [`scheduledTimeForOrderAsIso8601`](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-scheduledtimefororderasiso8601) is used, this value will be added to the scheduled order time.
                  type: integer
                  format: int32
                  examples:
                  - 60000
                staffId:
                  description: The unique identifier for the staff member.
                  type: integer
                  format: int64
                  examples:
                  - 1234567890
                accountProfileCode:
                  description: A valid order profile [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code)
                    to associate with this order. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles)
                    definition for more details.
                  type: string
                  examples:
                  - TOGOORDER
                scheduledTimeForOrderAsIso8601:
                  description: The time that the order will be sent to the POS. Must
                    be in the future.
                  type: string
                  format: date-time
                  examples:
                  - '2024-04-04T09:42:00.000+00:00'
                payment:
                  "$ref": "#/components/schemas/apeOrderPayment"
                collectionCode:
                  maxLength: 8
                  description: Unique collection code for this order. If left blank,
                    one will be automatically generated.
                  type: string
                  examples:
                  - '12345'
                orderCollectionTimeAsIso8601:
                  description: The expected collection time of the order. Must be
                    in the future.
                  type: string
                  format: date-time
                  examples:
                  - '2024-04-04T09:42:00.000+00:00'
                items:
                  type: array
                  items:
                    "$ref": "#/components/schemas/apeToGoOrderItemLine"
                deliveryAddress:
                  type: object
                  description: The address to which the order should be delivered.
                  properties:
                    addressLine1:
                      type: string
                      description: The first line of the street address.
                    addressLine2:
                      type: string
                      description: The second line of the street address (if applicable).
                    zip:
                      type: string
                      description: The postal code for the delivery address.
                    city:
                      type: string
                      description: The city in which the delivery address is located.
                targetPrinterProfileId:
                  description: The printer profile id to use for printing the receipt
                    for this payment. If not provided, the default active printer
                    profile for the business location will be used.
                  type: integer
                  format: int64
                  examples:
                  - 1773881235
              type: object
        required: true
      tags:
      - Order and Pay
      responses:
        '200':
          description: accepted
          content:
            application/json:
              schema:
                properties:
                  status:
                    description: The response.
                    type: string
                    examples:
                    - ok
                type: object
        '400':
          description: Bad Request.
          content:
            application/json:
              schema:
                type: object
                description: Response object for error code 400
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T19:15:05.043+0000'
                  status:
                    type: integer
                    description: The HTTP status code of the error response.
                    examples:
                    - 400
                  error:
                    type: string
                    description: A brief title of the error status.
                    examples:
                    - Bad Request
                  message:
                    type: string
                    description: A message describing the nature of the error in detail.
                    examples:
                    - 'Validation failed for object=''toGoOrder''. Error count: 1'
                  errors:
                    type: array
                    description: An array of error details, outlining specific issues
                      with the request.
                    items:
                      type: object
                      properties:
                        codes:
                          type: array
                          items:
                            type: string
                          description: A set of code strings that correspond to the
                            validation error.
                          example:
                          - NotNull.toGoOrder.thirdPartyReference
                          - NotNull.thirdPartyReference
                          - NotNull.java.lang.String
                          - NotNull
                        arguments:
                          type: array
                          items:
                            type: object
                            properties:
                              codes:
                                type: array
                                items:
                                  type: string
                                description: Argument codes that are related to the
                                  field in validation.
                                example:
                                - toGoOrder.thirdPartyReference
                                - thirdPartyReference
                              defaultMessage:
                                type: string
                                description: The default message associated with the
                                  failed validation.
                                example: thirdPartyReference
                              code:
                                type: string
                                description: A single code that represents the specific
                                  validation rule that was not satisfied.
                                example: thirdPartyReference
                        defaultMessage:
                          type: string
                          description: The default error message provided when the
                            associated field fails validation.
                          example: must not be null
                        objectName:
                          type: string
                          description: The name of the object that failed validation.
                          example: toGoOrder
                        field:
                          type: string
                          description: The name of the field that failed validation.
                          example: thirdPartyReference
                        bindingFailure:
                          type: boolean
                          description: Indicates whether the error was a result of
                            a binding failure.
                          example: false
                        code:
                          type: string
                          description: A code representing the specific type of validation
                            error.
                          example: NotNull
                  path:
                    type: string
                    description: The path of the failed request.
                    examples:
                    - "/o/op/1/order/toGo"
        '409':
          description: Conflict
          content:
            "*/*":
              schema:
                properties:
                  status:
                    description: The request status.
                    type: string
                    examples:
                    - fail
                  msg:
                    description: A message describing the error.
                    type: string
                    examples:
                    - reference has already been used 123456789
                type: object
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/order/table/getCheck":
    get:
      summary: Get All Open Checks
      operationId: apeGetCheck
      description: Returns all open orders for the current day.
      tags:
      - Order and Pay
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: query
        required: true
      responses:
        '200':
          description: All open orders for the current day.
          content:
            application/json:
              schema:
                items:
                  "$ref": "#/components/schemas/apeAccountSnapshot"
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T22:18:49.101+0000'
                  status:
                    type: integer
                    description: The HTTP status code associated with the error.
                    examples:
                    - 400
                  error:
                    type: string
                    description: A short description of the HTTP status code meaning.
                    examples:
                    - Bad Request
                  message:
                    type: string
                    description: A human-readable message providing more details about
                      the error.
                    examples:
                    - Required request parameter 'businessLocationId' for method parameter
                      type Long is not present
                  path:
                    type: string
                    description: The request path where the error occurred.
                    examples:
                    - "/o/op/1/order/table/getCheck"
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/order/table/{tableNumber}/getCheck":
    get:
      summary: Get Open Check by Table
      operationId: apeCheckLookup
      description: |-
        Returns an open order for a specific table.
        Note: If more than one order is assigned to the table, the oldest order will be returned.
      tags:
      - Order and Pay
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: query
        required: true
      - schema:
          example: 1
          description: The table [number](https://api-docs.lsk.lightspeed.app/operation/operation-apelookupfloorplans#operation-apelookupfloorplans-200-body-application-json-tables-number).
          type: integer
          format: int32
        name: tableNumber
        in: path
        required: true
      responses:
        '200':
          description: Check
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeAccountSnapshot"
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T22:18:49.101+0000'
                  status:
                    type: integer
                    description: The HTTP status code associated with the error.
                    examples:
                    - 404
                  error:
                    type: string
                    description: A short description of the HTTP status code meaning.
                    examples:
                    - Not Found
                  message:
                    type: string
                    description: A human-readable message providing more details about
                      the error.
                    examples:
                    - account not found for BL 123456789
                  path:
                    type: string
                    description: The request path where the error occurred.
                    examples:
                    - "/o/op/1/order/table/1/getCheck"
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/order/accounts/{accountIdentifier}":
    get:
      summary: Get Single Check
      operationId: apeCheckLookupWithaccountIdentifier
      description: Returns a check based on the Account Identifier.
      tags:
      - Order and Pay
      parameters:
      - schema:
          description: |-
            The ID of the account being requested.
            (ex: A78094.69)
          example: A739800.52
          type: string
        name: accountIdentifier
        in: path
        required: true
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: query
        required: true
      responses:
        '200':
          description: The account requested.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeAccountSnapshot"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T22:18:49.101+0000'
                  status:
                    type: integer
                    description: The HTTP status code associated with the error.
                    examples:
                    - 400
                  error:
                    type: string
                    description: A short description of the HTTP status code meaning.
                    examples:
                    - Bad Request
                  message:
                    type: string
                    description: A human-readable message providing more details about
                      the error.
                    examples:
                    - Invalid account identifier
                  path:
                    type: string
                    description: The request path where the error occurred.
                    examples:
                    - "/o/op/1/order/accounts/-1"
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T22:18:49.101+0000'
                  status:
                    type: integer
                    description: The HTTP status code associated with the error.
                    examples:
                    - 404
                  error:
                    type: string
                    description: A short description of the HTTP status code meaning.
                    examples:
                    - Not Found
                  message:
                    type: string
                    description: A human-readable message providing more details about
                      the error.
                    examples:
                    - account not found for BL 123456789
                  path:
                    type: string
                    description: The request path where the error occurred.
                    examples:
                    - "/o/op/1/order/accounts/A78094.697/"
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/pay":
    post:
      summary: Apply a Payment
      operationId: apeMakePayment
      description: Add a payment to an existing order.
      requestBody:
        content:
          application/json:
            schema:
              properties:
                iKaccountId:
                  type: integer
                  format: int64
                  deprecated: true
                  examples:
                  - 0
                iKaccountIdentifier:
                  description: The ID of the account to apply this payment to.
                  type: string
                  examples:
                  - A1234.56
                thirdPartyPaymentReference:
                  description: A unique external reference provided for this order.
                    This value will be sent back in the webhook.
                  type: string
                  minLength: 1
                  maxLength: 50
                  examples:
                  - '12345678901234'
                endpointId:
                  description: Endpoint ID for a unique webhook that has been created
                    using [the webhook endpoint](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo).
                  type: string
                  examples:
                  - MY-AWESOME-ENDPOINT-ID
                businessLocationId:
                  "$ref": "#/components/schemas/apeBusinessLocationId"
                taskTtlInMs:
                  description: Maximum time to attempt delivery of this payment to
                    the POS. In milliseconds. The minimum value is 60000ms (1 minute).
                  type: integer
                  format: int32
                  examples:
                  - 60000
                staffId:
                  type: integer
                  format: int64
                  description: The ID of the employee responsible for this payment.
                deviceId:
                  description: POS device to specifically receive this payment. If
                    left null then all POS devices may receive the payment but only
                    one will process it.
                  type: integer
                  format: int64
                  examples:
                  - 12345678980
                paymentMethod:
                  description: Payment method code as configured by the merchant.
                  type: string
                  examples:
                  - OOPAYMENT
                paymentAmount:
                  description: The total amount of the payment without tips.
                  type: number
                  examples:
                  - 20.06
                tipAmount:
                  description: The tip amount, if any.
                  type: number
                  examples:
                  - 2.5
                targetPrinterProfileId:
                  description: The printer profile id to use for printing the receipt
                    for this payment. If not provided, the default active printer
                    profile for the business location will be used.
                  type: integer
                  format: int64
                  examples:
                  - 1773881235
              required:
              - businessLocationId
              - endpointId
              - paymentAmount
              - thirdPartyPaymentReference
              type: object
        required: true
      tags:
      - Order and Pay
      responses:
        '200':
          description: accepted
          content:
            application/json:
              schema:
                properties:
                  status:
                    description: The response.
                    type: string
                    examples:
                    - ok
                type: object
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred, in
                      UTC.
                    examples:
                    - '2023-11-07T23:00:20.075+0000'
                  status:
                    type: integer
                    description: The HTTP status code indicating the type of error.
                    examples:
                    - 400
                  error:
                    type: string
                    description: A short description of the HTTP status code meaning.
                    examples:
                    - Bad Request
                  message:
                    type: string
                    description: A detailed message describing the error, including
                      any specific details about the request that led to the error.
                    examples:
                    - reference has already been used 12345678901234
                  path:
                    type: string
                    description: The request path where the error occurred.
                    examples:
                    - "/o/op/1/pay"
                type: object
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/printMsg":
    post:
      summary: Print Message
      operationId: apePrintMsg
      description: Send a message to the POS. Generates a notification on the register
        screen. Can also be sent to the printer. <br> If the POS is offline, the message
        will be stored for up to 24h and sent when the POS comes online.
      tags:
      - Order and Pay
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: query
        required: true
      requestBody:
        content:
          application/json:
            schema:
              properties:
                message:
                  description: The message to be printed.
                  type: string
                  examples:
                  - The Print Message
                alsoToPrinter:
                  description: Print on the receipt printer as well as till (highly
                    recommended).
                  type: boolean
                  examples:
                  - true
              type: object
              required:
              - message
        required: true
      responses:
        '200':
          description: accepted
          content:
            application/json:
              schema:
                properties:
                  status:
                    description: The response.
                    type: string
                    examples:
                    - ok
                type: object
      security:
      - OAuth2:
        - orders-api
  "/o/op/1/itemAvailability":
    get:
      summary: Get Item Availability Information
      description: Returns item availability information, by business location and
        SKUs.
      operationId: apeGetRestrictedItems
      tags:
      - Order and Pay
      security:
      - OAuth2:
        - orders-api
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: query
        required: true
      - name: skus
        in: query
        description: List of SKUs to return.
        required: true
        schema:
          type: array
          items:
            type: string
            example: SKU1
          maxItems: 50
          minItems: 1
      - name: page
        in: query
        description: Starting page of results, when paginating. Starts at 0.
        required: false
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 0
        example: 0
      - name: size
        in: query
        description: Number of results to return, when paginating.
        required: false
        schema:
          maximum: 50
          minimum: 1
          type: integer
          format: int32
          default: 25
        example: 25
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeRestrictedItemPaginatedResponse"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T22:18:49.101Z'
                  status:
                    type: integer
                    description: The HTTP status code associated with the error.
                    examples:
                    - 400
                  error:
                    type: string
                    description: A short description of the HTTP status code meaning.
                    examples:
                    - Bad Request
                  message:
                    type: string
                    description: A human-readable message providing more details about
                      the error.
                    examples:
                    - Required request parameter 'businessLocationId' for method parameter
                      type Long is not present
                  path:
                    type: string
                    description: The request path where the error occurred.
                    examples:
                    - "/o/op/1/itemAvailability"
    post:
      summary: Get Item Availability Information by POST
      description: Returns item availability information filtered by business location
        and SKUs. The list of SKUs must be provided in the request body.
      operationId: apeGetRestrictedItemsByPost
      tags:
      - Order and Pay
      security:
      - OAuth2:
        - orders-api
      parameters:
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: query
        required: true
      - name: page
        in: query
        description: Starting page of results, when paginating. Starts at 0.
        required: false
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 0
        example: 0
      - name: size
        in: query
        description: Number of results to return, when paginating.
        required: false
        schema:
          maximum: 100
          minimum: 1
          type: integer
          format: int32
          default: 25
        example: 25
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/apeSkusRequest"
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeRestrictedItemPaginatedResponse"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T22:18:49.101Z'
                  status:
                    type: integer
                    description: The HTTP status code associated with the error.
                    examples:
                    - 400
                  error:
                    type: string
                    description: A short description of the HTTP status code meaning.
                    examples:
                    - Bad Request
                  message:
                    type: string
                    description: A human-readable message providing more details about
                      the error.
                    examples:
                    - Required request parameter 'businessLocationId' for method parameter
                      type Long is not present
                  path:
                    type: string
                    description: The request path where the error occurred.
                    examples:
                    - "/o/op/1/itemAvailability"
  "/o/wh/1/webhook":
    put:
      summary: Create a Webhook
      operationId: apeCreateWebhookOo
      description: Configures a new webhook to be used for order status updates.
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/apeWebhookEndpoint"
        required: true
      tags:
      - 'Order and Pay: Webhook'
      responses:
        '200':
          description: Webhook
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeWebhookEndpoint"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                description: Response object for error code 400.
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T19:15:05.043+0000'
                  status:
                    type: integer
                    description: The HTTP status code of the error response.
                    examples:
                    - 400
                  error:
                    type: string
                    description: A brief title of the error status.
                    examples:
                    - Bad Request
                  message:
                    type: string
                    description: A message describing the nature of the error in detail.
                    examples:
                    - 'Validation failed for object=''webhookEndpointDto''. Error
                      count: 1'
                  errors:
                    type: array
                    description: An array of error details, outlining specific issues
                      with the request.
                    items:
                      type: object
                      properties:
                        codes:
                          type: array
                          items:
                            type: string
                          description: A set of code strings that correspond to the
                            validation error.
                          example:
                          - NotNull.webhookEndpointDto.endpointId
                          - NotNull.endpointId
                          - NotNull.java.lang.String
                          - NotNull
                        arguments:
                          type: array
                          items:
                            type: object
                            properties:
                              codes:
                                type: array
                                items:
                                  type: string
                                description: Argument codes that are related to the
                                  field in validation.
                                example:
                                - webhookEndpointDto.endpointId
                                - endpointId
                              defaultMessage:
                                type: string
                                description: The default message associated with the
                                  failed validation.
                                example: endpointId
                              code:
                                type: string
                                description: A single code that represents the specific
                                  validation rule that was not satisfied.
                                example: endpointId
                        defaultMessage:
                          type: string
                          description: The default error message provided when the
                            associated field fails validation.
                          example: must not be null
                        objectName:
                          type: string
                          description: The name of the object that failed validation.
                          example: webhookEndpointDto
                        field:
                          type: string
                          description: The name of the field that failed validation.
                          example: endpointId
                        bindingFailure:
                          type: boolean
                          description: Indicates whether the error was a result of
                            a binding failure.
                          example: false
                        code:
                          type: string
                          description: A code representing the specific type of validation
                            error.
                          example: NotNull
                  path:
                    type: string
                    description: The path of the failed request.
                    examples:
                    - "/o/wh/1/webhook"
      security:
      - OAuth2:
        - orders-api
    post:
      summary: Update a webhook
      operationId: apeUpdateWebhookOo
      description: |-
        Updates an existing webhook entry.

        Important Note: if `provideAccount`, `expandTransactions`, or `expandPayments` are excluded from the update request, they will be reset to their default values.
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/apeWebhookEndpoint"
        required: true
      tags:
      - 'Order and Pay: Webhook'
      responses:
        '200':
          description: Webhook
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeWebhookEndpoint"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                description: Response object for error code 400.
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T19:15:05.043+0000'
                  status:
                    type: integer
                    description: The HTTP status code of the error response.
                    examples:
                    - 400
                  error:
                    type: string
                    description: A brief title of the error status.
                    examples:
                    - Bad Request
                  message:
                    type: string
                    description: A message describing the nature of the error in detail.
                    examples:
                    - 'Validation failed for object=''webhookEndpointDto''. Error
                      count: 1'
                  errors:
                    type: array
                    description: An array of error details, outlining specific issues
                      with the request.
                    items:
                      type: object
                      properties:
                        codes:
                          type: array
                          items:
                            type: string
                          description: A set of code strings that correspond to the
                            validation error.
                          example:
                          - NotNull.webhookEndpointDto.endpointId
                          - NotNull.endpointId
                          - NotNull.java.lang.String
                          - NotNull
                        arguments:
                          type: array
                          items:
                            type: object
                            properties:
                              codes:
                                type: array
                                items:
                                  type: string
                                description: Argument codes that are related to the
                                  field in validation.
                                example:
                                - webhookEndpointDto.endpointId
                                - endpointId
                              defaultMessage:
                                type: string
                                description: The default message associated with the
                                  failed validation.
                                example: endpointId
                              code:
                                type: string
                                description: A single code that represents the specific
                                  validation rule that was not satisfied.
                                example: endpointId
                        defaultMessage:
                          type: string
                          description: The default error message provided when the
                            associated field fails validation.
                          example: must not be null
                        objectName:
                          type: string
                          description: The name of the object that failed validation.
                          example: webhookEndpointDto
                        field:
                          type: string
                          description: The name of the field that failed validation.
                          example: endpointId
                        bindingFailure:
                          type: boolean
                          description: Indicates whether the error was a result of
                            a binding failure.
                          example: false
                        code:
                          type: string
                          description: A code representing the specific type of validation
                            error.
                          example: NotNull
                  path:
                    type: string
                    description: The path of the failed request.
                    examples:
                    - "/o/wh/1/webhook"
      security:
      - OAuth2:
        - orders-api
  "/o/wh/1/webhook/{endpointId}":
    get:
      summary: Retrieve a Webhook
      operationId: apeGetWebhookOo
      description: Retrieve an existing webhook.
      parameters:
      - schema:
          example: endpoint
          type: string
        name: endpointId
        in: path
        required: true
      tags:
      - 'Order and Pay: Webhook'
      responses:
        '200':
          description: Webhook
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeWebhookEndpoint"
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: The date and time at which the error occurred.
                    examples:
                    - '2023-11-07T22:18:49.101+0000'
                  status:
                    type: integer
                    description: The HTTP status code associated with the error.
                    examples:
                    - 404
                  error:
                    type: string
                    description: A short description of the HTTP status code meaning.
                    examples:
                    - Not Found
                  message:
                    type: string
                    description: A human-readable message providing more details about
                      the error.
                    examples:
                    - endpoint ID not found for MISSING-ENDPOINT
                  path:
                    type: string
                    description: The request path where the error occurred.
                    examples:
                    - "/o/wh/1/webhook/MISSING-ENDPOINT"
      security:
      - OAuth2:
        - orders-api
    delete:
      summary: Delete a Webhook
      operationId: apeDeleteWebhookEndpoint
      description: Delete an existing webhook.
      parameters:
      - schema:
          example: endpoint
          type: string
        name: endpointId
        in: path
        required: true
      tags:
      - 'Order and Pay: Webhook'
      responses:
        '200':
          description: Webhook deleted
      security:
      - OAuth2:
        - orders-api
  "/o/wh/1/webhook/{endpointId}/business-locations":
    get:
      summary: Get webhook business locations
      operationId: apeGetWebhookBusinessLocations
      description: Get all business locations added to a webhook endpoint via the
        API.
      parameters:
      - schema:
          type: string
          example: endpoint
        name: endpointId
        in: path
        required: true
      tags:
      - 'Order and Pay: Webhook'
      responses:
        '200':
          description: Business location IDs
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/apeWebhookEndpointBusinessLocationDto"
        '404':
          description: Not Found
      security:
      - OAuth2:
        - orders-api
  "/o/wh/1/webhook/{endpointId}/business-locations/{businessLocationId}":
    parameters:
    - in: path
      name: businessLocationId
      required: true
      schema:
        "$ref": "#/components/schemas/apeBusinessLocationId"
    put:
      summary: Add a Business Location to a Webhook
      operationId: apeAddWebhookBusinessLocation
      description: |-
        Enables a webhook for the specified business location.
        Required to receive item availability notifications (type 'item').
        Not required for 'order' and 'payment' webhooks.
      parameters:
      - schema:
          type: string
          example: endpoint
        name: endpointId
        in: path
        required: true
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: path
        required: true
      tags:
      - 'Order and Pay: Webhook'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeWebhookEndpointBusinessLocationDto"
        '404':
          description: Not Found
      security:
      - OAuth2:
        - orders-api
    delete:
      summary: Remove Business Location from a Webhook
      operationId: apeRemoveWebhookBusinessLocation
      description: Remove a business location ID from a webhook endpoint.
      parameters:
      - schema:
          type: string
          example: endpoint
        name: endpointId
        in: path
        required: true
      - schema:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        name: businessLocationId
        in: path
        required: true
      tags:
      - 'Order and Pay: Webhook'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/apeWebhookEndpointBusinessLocationDto"
        '404':
          description: Not Found
      security:
      - OAuth2:
        - orders-api
  "/f/data/businesses":
    get:
      summary: Get Businesses
      operationId: financial-apiGetBusinesses
      description: Returns all businesses the token has access to. Pagination is supported
        by providing the `page` and `size` query parameters. The maximum number of
        business locations per business returned is 500.
      tags:
      - Financial
      parameters:
      - description: Starting page of results, when paginating.
        in: query
        name: page
        required: false
        schema:
          default: 0
          format: int32
          type: integer
      - description: Number of results to return, when paginating.
        in: query
        name: size
        required: false
        schema:
          default: 1000
          format: int32
          type: integer
      responses:
        '200':
          description: Businesses returned
          content:
            application/json:
              schema:
                properties:
                  _embedded:
                    properties:
                      businessList:
                        items:
                          properties:
                            businessName:
                              type: string
                              example: My Business
                              description: The name of the business.
                            businessId:
                              type: number
                              example: 1234
                              description: The unique identifier for the business.
                            currencyCode:
                              type: string
                              description: The ISO 4217 currency code
                              example: GBP
                            businessLocations:
                              items:
                                properties:
                                  blName:
                                    type: string
                                    example: My Business Location 1
                                    description: The name of the business location.
                                  blID:
                                    type: number
                                    example: 1234567890
                                    description: The unique identifier for the business
                                      location.
                                  country:
                                    type: string
                                    example: GB
                                    description: The ISO 3166 country code.
                                  timezone:
                                    type: string
                                    example: Europe/London
                                    description: The time zone in ICANN format.
                                type: object
                              type: array
                          type: object
                        type: array
                    type: object
                  _links:
                    properties:
                      self:
                        properties:
                          href:
                            example: https:///api.ikentoo.com/data/businesses
                            type: string
                        type: object
                    type: object
                type: object
      security:
      - OAuth2:
        - financial-api
  "/f/finance/{businessLocationId}/tax-rates":
    get:
      summary: Get Tax Rates
      operationId: financial-apiGetTaxRates
      description: Returns tax rates for a business location.
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      tags:
      - Financial
      responses:
        '200':
          description: Tax rates returned
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/financial-apiResourcesTaxRate"
      security:
      - OAuth2:
        - financial-api
  "/f/finance/{businessLocationId}/paymentMethods":
    get:
      summary: Get Payment Methods
      operationId: financial-apiGetPaymentMethods
      description: Returns all payment methods for a business location.
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      tags:
      - Financial
      responses:
        '200':
          description: Payment methods returned
          content:
            application/json:
              schema:
                properties:
                  _embedded:
                    properties:
                      paymentMethodList:
                        items:
                          properties:
                            name:
                              type: string
                              description: Name of the payment type.
                              example: Cash
                            code:
                              type: string
                              description: System code for the payment type.
                              example: CASH
                            accountingReference:
                              type: string
                              description: Accounting reference code, if assigned.
                              example: cash-payment
                            pmId:
                              type: number
                              description: System identification number for payment
                                type.
                              example: 1234567890
                          type: object
                        type: array
                    type: object
                  _links:
                    properties:
                      self:
                        properties:
                          href:
                            example: https:///api.ikentoo.com/finance/1234567/paymentMethodss
                            type: string
                        type: object
                    type: object
                type: object
      security:
      - OAuth2:
        - financial-api
  "/f/finance/{businessLocationId}/accountingGroups":
    get:
      summary: Get Accounting Groups
      operationId: financial-apiGetAccountingGroups
      description: Returns all accounting groups for a business location.
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      tags:
      - Financial
      responses:
        '200':
          description: Accounting groups returned
          content:
            application/json:
              schema:
                properties:
                  _embedded:
                    description: The list of accounting groups.
                    properties:
                      accountingGroupList:
                        items:
                          properties:
                            accountingGroupId:
                              type: number
                              example: 1234567890
                              description: The numeric identifier of the accounting
                                group.
                            name:
                              type: string
                              example: Food
                              description: The name of the accounting group.
                            statisticGroup:
                              type: string
                              example: '[{"category":"default","value":"Food"}]'
                              description: The assigned statistic group, if applicable.
                            code:
                              type: string
                              example: fd
                              description: The code assigned to the accounting group,
                                if applicable.
                          type: object
                        type: array
                    type: object
                  _links:
                    properties:
                      self:
                        properties:
                          href:
                            example: https://api.ikentoo.com/f/finance/1234567/accountingGroups
                            type: string
                        type: object
                    type: object
                type: object
        '400':
          description: Bad Request
      security:
      - OAuth2:
        - financial-api
  "/f/finance/{businessLocationId}/financials/{from}/{to}":
    get:
      summary: Get Financials
      operationId: financial-apiGetFinancials
      description: |-
        Returns financial data for a business location for a specified date range.

        Note: Will only return sales created after migration from iKentoo 2.0 to Lightspeed K-Series.
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      - schema:
          example: '2022-09-21T10:11:56Z'
          type: string
          format: date-time
        name: from
        description: |-
          Start of requested results, in ISO 8601 format.

          The date range between 'from' and 'to' cannot exceed 365 days (1 year).

          Example:`2022-09-21T10:11:56Z` or `2022-09-21T06:11:56-04:00`
        in: path
        required: true
      - schema:
          example: '2022-09-21T10:11:56Z'
          type: string
          format: date-time
        name: to
        description: |-
          End of requested results, in ISO 8601 format.

          Example:`2022-09-21T10:11:56Z` or `2022-09-21T06:11:56-04:00`
        in: path
        required: true
      - "$ref": "#/components/parameters/financial-apiIncludeParameter"
      - schema:
          default: 1000
          maximum: 1000
          type: integer
          format: int32
        name: pageSize
        description: Number of entries to return.
        in: query
        required: false
      - schema:
          type: string
        name: nextPageToken
        description: |-
          The `accountId` where the results should begin.

          Example: `A65315.18`
        in: query
        required: false
      tags:
      - Financial
      responses:
        '200':
          description: Financials returned
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/financial-apiFinancialDto"
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                type: object
                additionalProperties:
                  type: object
      security:
      - OAuth2:
        - financial-api
  "/f/finance/{businessLocationId}/dailyFinancials":
    get:
      summary: Get Daily Financials
      operationId: financial-apiGetDailyFinancials
      description: Returns the financial data for the current business day or for
        the specified date.
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      - "$ref": "#/components/parameters/financial-apiIncludeParameter"
      - "$ref": "#/components/parameters/financial-apiDateParameter"
      - schema:
          example: true
          default: false
          type: boolean
        name: includeConsumers
        in: query
        required: false
      tags:
      - Financial
      responses:
        '200':
          description: Daily financials returned
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/financial-apiFinancialDto"
      security:
      - OAuth2:
        - financial-api
  "/f/finance/{businessLocationId}/saleByExternalReference":
    get:
      summary: Get Receipt by External Reference
      operationId: financial-apiGetReceiptByExternalReference
      description: Returns a single receipt matching the external reference supplied
        in the request. See [`externalReferences`](https://api-docs.lsk.lightspeed.app/operation/operation-financial-apigetfinancials#operation-financial-apigetfinancials-200-body-application-json-sales-externalreferences)
        for examples.
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      - "$ref": "#/components/parameters/financial-apiExternalReferenceId"
      tags:
      - Financial
      responses:
        '200':
          description: Receipt returned
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/financial-apiSaleDto"
      security:
      - OAuth2:
        - financial-api
  "/f/finance/{businessLocationId}/aggregatedSales":
    get:
      summary: Get Aggregated Sales
      operationId: financial-apiGetAggregatedSales
      description: |
        Get sales for the current business day or the specified date range, aggregated by one or more values.
        The values are specified in the `groupBy` parameter and are nested in the order provided in the request.

        - Use either the `date` parameter **or** the `from` and `to` parameters to specify the period.
        - The `date` parameter specifies a single date for aggregation.
        - The `from` and `to` parameters specify a date-time range and must be used together.
        - **If neither `date` nor `from`/`to` are provided it defaults to today's date**.
        - The date range between `from` and `to` cannot exceed 365 days (1 year).
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      - name: date
        in: query
        required: false
        description: 'Specify a single date for which to retrieve aggregated sales
          data. Cannot be combined with `from` and `to`. Use either `date`, or both
          `from` and `to`.

          '
        schema:
          type: string
          format: date
      - name: from
        in: query
        required: false
        description: 'Specify the start datetime for the aggregation range. Must be
          used together with `to`. Cannot be combined with `date`.

          '
        schema:
          type: string
          format: date-time
      - name: to
        in: query
        required: false
        description: 'Specify the end datetime for the aggregation range. Must be
          used together with `from`. Cannot be combined with `date`.

          '
        schema:
          type: string
          format: date-time
      - "$ref": "#/components/parameters/financial-apiFlattenedParameter"
      - "$ref": "#/components/parameters/financial-apiGroupByParameter"
      tags:
      - Financial
      responses:
        '200':
          description: Aggregated sales returned
          content:
            application/json:
              schema:
                properties:
                  groupByKey:
                    type: string
                    description: The groupBy parameter provided.
                    examples:
                    - staff
                  groupByValue:
                    type: string
                    description: The value that corresponds to the groupBy parameter.
                    examples:
                    - manager
                  totalAmount:
                    type: string
                    description: 'The aggregated total of sales for this data set
                      (ex. `staff: manager`).'
                    examples:
                    - '47.00'
                  serviceCharge:
                    type: string
                    description: 'The aggregated total of service charges for this
                      data set (ex. `staff: manager`).'
                    examples:
                    - '0.00'
                  totalDiscountedAmount:
                    type: string
                    description: 'The aggregated total of discounts for this data
                      set (ex. `staff: manager`).'
                    examples:
                    - '0.00'
                  totalTaxAmount:
                    type: string
                    description: 'The aggregated tax total for this data set (ex.
                      `staff: manager`).'
                    examples:
                    - '7.04'
                  numberOfSales:
                    type: number
                    description: 'The total number of sale lines for this data set
                      (ex. `staff: manager`).'
                    examples:
                    - 7.0
                  children:
                    items:
                      properties:
                        groupByKey:
                          type: string
                          description: The second groupBy parameter provided, if applicable.
                            The parameters will be nested based on the order provided.
                            For example, `staff,device` will show totals for each
                            `staff` value, and then those totals broken down by `device`.
                          example: device
                        children:
                          items:
                            properties:
                              groupByValue:
                                type: string
                                description: The value that corresponds to the second
                                  groupBy parameter provided.
                                example: iPad7
                              totalAmount:
                                type: string
                                description: 'The aggregated total of sales for this
                                  nested data set (ex. `staff:manager -> device: iPad7
                                  `).'
                                example: '28.00'
                              serviceCharge:
                                type: string
                                description: 'The aggregated total of service charges
                                  for this nested data set (ex. `staff:manager ->
                                  device: iPad7 `).'
                                example: '0.00'
                              totalDiscountedAmount:
                                type: string
                                description: 'The aggregated total of discounts for
                                  this nested data set (ex. `staff:manager -> device:
                                  iPad7 `).'
                                example: '0.00'
                              totalTaxAmount:
                                type: string
                                description: 'The aggregated tax total for this nested
                                  data set (ex. `staff:manager -> device: iPad7 `).'
                                example: '4.19'
                              numberOfSales:
                                type: number
                                description: 'The total number of sales for this nested
                                  data set (ex. `staff:manager -> device: iPad7 `).'
                                example: 3.0
                              children:
                                items:
                                  properties:
                                    groupByKey:
                                      type: string
                                    children:
                                      description: This would continue with as many
                                        nested data sets as specified by the groupBy
                                        parameters.
                                      items:
                                        properties: {}
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            type: object
                          type: array
                      type: object
                    type: array
                  nextStartOfDayAsIso8601:
                    type: string
                  dataComplete:
                    type: boolean
                  businessName:
                    type: string
                type: object
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                type: object
                additionalProperties:
                  type: object
      security:
      - OAuth2:
        - financial-api
  "/f/v2/business-location/{businessLocationId}/sales":
    get:
      x-generated: true
      summary: Get Sales
      operationId: financial-apiGetBusinessLocationSales
      description: Returns financial data for a business location for a specified
        date range. Sorted by the `timeClosed` field of the sales.
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      - schema:
          example: '2023-01-01T14:00:00Z'
          type: string
          format: date-time
        name: from
        description: |-
          Start of requested results, in ISO 8601 format.

          The date range between 'from' and 'to' cannot exceed 365 days (1 year).

          Based on the timeClosed sales field.
        in: query
        required: true
      - schema:
          example: '2023-01-01T13:00:00Z'
          type: string
          format: date-time
        name: to
        description: |-
          End of requested results, in ISO 8601 format.

          Based on the timeClosed sales field.

          If the `to` date is set to a future date or not included, it will be adjusted to the current
          date and time to retrieve the most recent data available.
        in: query
        required: false
      - "$ref": "#/components/parameters/financial-apiIncludeParameter"
      - "$ref": "#/components/parameters/financial-apiPageSize"
      - "$ref": "#/components/parameters/financial-apiNextPageToken"
      tags:
      - FinancialV2
      responses:
        '200':
          description: Financial data returned successfully.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/financial-apiSalesExportDto"
        '400':
          description: Bad Request - Invalid request parameters or format.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                - error
              examples:
                wrongDateFormat:
                  summary: Wrong DateTime Format
                  value:
                    error: 'Invalid date format: 12/12/2023'
                missingParameter:
                  summary: Missing 'from' or 'to' Parameter
                  value:
                    error: Required request parameter 'from' for method parameter
                      type OffsetDateTime is not present
                invalidDateRange:
                  summary: Invalid Date Range
                  value:
                    error: 'Invalid date range: ''from'' date %s should not be after
                      ''to'' date %s'
                invalidFromDate:
                  summary: Invalid 'from' date query Parameter
                  value:
                    error: |
                      Invalid 'from' date query parameter. The requested business location was not operational on the provided date.
                      Please specify a date and time after: {earliest_date}, which is the earliest available date for this location.
        '500':
          description: Internal Server Error - An error occurred on the server.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/financial-apiErrorResponse"
      security:
      - OAuth2:
        - financial-api
  "/f/v2/business-location/{businessLocationId}/sales-daily":
    get:
      x-generated: true
      summary: Get business day sales
      operationId: financial-apiGetBusinessLocationSalesOfABusinessDay
      description: Returns financial data for a business location for a specified
        business day.
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      - schema:
          example: '2021-09-21'
          type: string
          format: date
        name: date
        description: |-
          The date of the business day to get sales for.

          Example:`2022-09-21` or `2022-12-01`
        in: query
        required: true
      - "$ref": "#/components/parameters/financial-apiIncludeParameter"
      tags:
      - FinancialV2
      responses:
        '200':
          description: Financial data returned successfully.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/financial-apiSalesDailyExportDto"
        '400':
          description: Bad Request - Invalid request parameters or format.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                - error
        '500':
          description: Internal Server Error - An error occurred on the server.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/financial-apiErrorResponse"
      security:
      - OAuth2:
        - financial-api
  "/f/v2/business-location/{businessLocationId}/lightspeed-payments":
    get:
      x-generated: true
      summary: Lightspeed Payments Data
      operationId: financial-apiGetLightspeedPayments
      description: |-
        Returns Lightspeed Payments fee and surcharge data for a business location for a specified date range. Results are queried and sorted based on the specified dateType.

        Note: Will only return sales created after migration from iKentoo 2.0 to Lightspeed K-Series. See [this article](https://k-series-support.lightspeedhq.com/hc/en-us/articles/360056758333-Upgrading-to-K-Series-from-iKentoo-2-0) for more details.
      tags:
      - FinancialV2
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      - schema:
          example: '2023-01-01T14:00:00Z'
          type: string
          format: date-time
        name: from
        description: |-
          Start of requested results, in ISO 8601 format.

          The date range between 'from' and 'to' cannot exceed 365 days (1 year).

          Results queried by the dateType parameter.
        in: query
        required: true
      - schema:
          example: '2023-01-01T13:00:00Z'
          type: string
          format: date-time
        name: to
        description: |-
          End of requested results, in ISO 8601 format.

          Results queried by the dateType parameter.
        in: query
        required: false
      - "$ref": "#/components/parameters/financial-apiPageSize"
      - name: offset
        in: query
        required: false
        schema:
          example: 0
          default: 0
          description: The pagination offset.
          type: integer
          format: int32
      - name: sortDirection
        in: query
        required: false
        schema:
          "$ref": "#/components/schemas/financial-apiSortDirection"
      - name: dateType
        in: query
        required: false
        schema:
          "$ref": "#/components/schemas/financial-apiDateType"
      - name: status
        in: query
        description: Payment statuses to filter the result set by.
        example:
        - CAPTURED
        - REFUNDED
        required: false
        schema:
          type: array
          items:
            "$ref": "#/components/schemas/financial-apiLSPaymentStatus"
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/financial-apiLSPaymentsDto"
        '400':
          description: Bad Request - Invalid request parameters or format.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                - error
              examples:
                wrongDateFormat:
                  summary: Wrong DateTime Format
                  value:
                    error: 'Invalid date format: 12/12/2023'
                invalidDateRange:
                  summary: Invalid Date Range
                  value:
                    error: "'from' date cannot be after 'to' date"
      security:
      - OAuth2:
        - financial-api
  "/f/v2/beta/business-location/{businessLocationId}/aborted-orders":
    get:
      x-generated: true
      summary: BETA - Get Aborted Orders
      operationId: financial-apiGetBusinessLocationAbortedOrdersOfABusinessDay
      description: |-
        Retrieves a list of aborted orders for a specified business day.

        An aborted order is defined as an instance where items were added to an order, but **all** items were subsequently removed without being committed.
      x-beta: true
      parameters:
      - "$ref": "#/components/parameters/financial-apiBusinessLocationId"
      - schema:
          example: '2023-01-01'
          type: string
          format: date
        name: date
        description: The business date of the aborted orders.
        in: query
        required: true
      tags:
      - FinancialV2
      responses:
        '200':
          description: Aborted orders returned successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/financial-apiAbortedOrderDto"
        '400':
          description: Bad Request - Invalid request parameters or format.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                - error
        '500':
          description: Internal Server Error - An error occurred on the server.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/financial-apiErrorResponse"
      security:
      - OAuth2:
        - financial-api
  "/id-cards/v1/business-locations/{businessLocationId}/batches":
    post:
      summary: Create an ID Card Batch
      description: Creates a new batch of ID cards for a specific business location.
      operationId: id-cards-apiCreateIdCardBatch
      x-beta: true
      security:
      - OAuth2:
        - id-cards
      parameters:
      - "$ref": "#/components/parameters/id-cards-apiBusinessLocationId"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/id-cards-apiCreateIdCardBatchRequest"
      responses:
        '201':
          description: Successfully created an ID card batch.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/id-cards-apiIdCardBatch"
      tags:
      - ID Cards
  "/id-cards/v1/business-locations/{businessLocationId}/batches/{batchId}/cards":
    post:
      summary: Create ID Cards
      description: Creates a specified number of ID cards for an existing ID card
        batch.
      operationId: id-cards-apiCreateIdCards
      x-beta: true
      security:
      - OAuth2:
        - id-cards
      parameters:
      - "$ref": "#/components/parameters/id-cards-apiBusinessLocationId"
      - name: batchId
        in: path
        required: true
        description: The unique identifier for the ID card batch.
        schema:
          type: integer
          format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/id-cards-apiCreateIdCardsRequest"
      responses:
        '201':
          description: Successfully created ID cards.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/id-cards-apiCreateIdCardsResponse"
      tags:
      - ID Cards
  "/r/wh/1/webhook/{endpointId}":
    delete:
      description: Delete a webhook endpoint
      operationId: ireneDeleteWebhookEndpoint
      parameters:
      - in: path
        name: endpointId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/ireneBadRequest"
        '403':
          description: Forbidden
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/ireneForbidden"
        '404':
          description: Not Found
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/ireneNotFound"
      security:
      - OAuth2:
        - reservations-api
      summary: Delete a webhook endpoint
      tags:
      - Reservations
    get:
      description: Get a webhook endpoint
      operationId: ireneGetWebhookEndpoint
      parameters:
      - in: path
        name: endpointId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ireneWebhookEndpointDto"
          description: OK
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/ireneBadRequest"
        '403':
          description: Forbidden
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/ireneForbidden"
        '404':
          description: Not Found
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/ireneNotFound"
      security:
      - OAuth2:
        - reservations-api
      summary: Get a webhook endpoint
      tags:
      - Reservations
  "/items/v1/items/{id}":
    get:
      summary: Get Item by ID
      operationId: items-apiGetItemById
      description: Returns the details of a specific item.
      tags:
      - Items
      parameters:
      - in: path
        schema:
          "$ref": "#/components/schemas/items-apiItemId"
        name: id
        required: true
      - in: query
        name: businessLocationId
        schema:
          "$ref": "#/components/schemas/items-apiBusinessLocationId"
        required: true
      responses:
        '200':
          description: Item found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/items-apiItemDTO"
        '404':
          description: Item not found
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '404'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
      security:
      - OAuth2:
        - items
    put:
      summary: Update Item by ID
      description: Modifies the values of an existing item.
      operationId: items-apiPut
      tags:
      - Items
      parameters:
      - in: path
        name: id
        schema:
          "$ref": "#/components/schemas/items-apiItemId"
        required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/items-apiUpdateItemDTO"
        required: true
      responses:
        '200':
          description: Item updated
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/items-apiItemDTO"
        '400':
          description: Constraint violation
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '400'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
      security:
      - OAuth2:
        - items
  "/items/v1/items":
    get:
      summary: Get All Items
      operationId: items-apiGetItems
      description: Returns the items for a specific business location. Supports searching
        by [`accountingGroupId`](#operation-getitems-accountinggroupid), [`name`](#operation-getitems-name),
        or [`sku`](#operation-getitems-sku).
      tags:
      - Items
      parameters:
      - in: query
        name: businessLocationId
        schema:
          "$ref": "#/components/schemas/items-apiBusinessLocationId"
        required: true
      - in: query
        name: sku
        schema:
          "$ref": "#/components/schemas/items-apiSku"
        required: false
      - in: query
        name: name
        schema:
          "$ref": "#/components/schemas/items-apiName"
        required: false
      - in: query
        name: accountingGroupId
        schema:
          "$ref": "#/components/schemas/items-apiAccountingGroupId"
        required: false
      - in: query
        name: offset
        schema:
          "$ref": "#/components/schemas/items-apiOffset"
        required: false
      - in: query
        name: amount
        schema:
          "$ref": "#/components/schemas/items-apiAmount"
        required: false
      responses:
        '200':
          description: Item found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/items-apiItemDTO"
        '400':
          description: Constraint violation
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '400'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
        '404':
          description: Not Found
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '404'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
      security:
      - OAuth2:
        - items
    post:
      summary: Create Item
      operationId: items-apiCreateItem
      description: Create a new item for a specific business location.
      tags:
      - Items
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/items-apiCreateItemDTO"
        required: true
      responses:
        '201':
          description: Item created
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/items-apiItemDTO"
        '404':
          description: Could not create item
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '404'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
      security:
      - OAuth2:
        - items
  "/pms/v1/business-locations/{businessLocationId}/revenue-centers":
    get:
      summary: Get PMS Revenue Centers
      operationId: pms-apiGetRevenueCenters
      description: Returns a list of all POS Configurations which can be mapped to
        PMS Revenue Centers. For more details on revenue centers, see our [Integration
        Guide](https://api-portal.lsk.lightspeed.app/guides/integration-guides/property-management-systems/financial-api-endpoints#revenue-centers).
      tags:
      - PMS
      parameters:
      - name: businessLocationId
        in: path
        required: true
        schema:
          "$ref": "#/components/schemas/pms-apiBusinessLocationId"
      responses:
        '200':
          description: Found a list of Revenue Centers
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      "$ref": "#/components/schemas/pms-apiRevenueCenterId"
                    name:
                      "$ref": "#/components/schemas/pms-apiRevenueCenterName"
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/pms-apiErrorResponse"
        '404':
          description: Invalid input business location id
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/pms-apiErrorResponse"
      security:
      - OAuth2:
        - propertymanagement
  "/pms/v1/providers/{id}":
    get:
      summary: Get a PMS provider by ID
      operationId: pms-apiGetProvider
      description: |
        Returns the details of a specific PMS provider.

        Only PMS providers created by the authenticated OAuth client will be returned.
      tags:
      - PMS
      parameters:
      - in: path
        schema:
          "$ref": "#/components/schemas/pms-apiProviderId"
        name: id
        required: true
      responses:
        '200':
          description: Provider found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/pms-apiGetProvider"
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/pms-apiErrorResponse"
        '404':
          description: Provider not found
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/pms-apiErrorResponse"
      security:
      - OAuth2:
        - propertymanagement
    put:
      summary: Update a PMS provider
      operationId: pms-apiUpdateProvider
      description: |
        Modifies the values of an existing **PMS** provider.

        Only PMS providers created by the authenticated OAuth client can be updated.
      tags:
      - PMS
      parameters:
      - in: path
        schema:
          "$ref": "#/components/schemas/pms-apiProviderId"
        name: id
        required: true
      requestBody:
        content:
          application/json:
            schema:
              required:
              - name
              - endpoint
              - apiKey
              - features
              properties:
                name:
                  "$ref": "#/components/schemas/pms-apiProviderName"
                endpoint:
                  "$ref": "#/components/schemas/pms-apiProviderEndpoint"
                apiKey:
                  "$ref": "#/components/schemas/pms-apiProviderApiKey"
                features:
                  "$ref": "#/components/schemas/pms-apiProviderFeatures"
              type: object
        required: true
      responses:
        '200':
          description: Provider updated
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/pms-apiGetProvider"
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/pms-apiErrorResponse"
        '404':
          description: Provider not found
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/pms-apiErrorResponse"
      security:
      - OAuth2:
        - propertymanagement
    delete:
      summary: Delete a PMS provider
      operationId: pms-apiDeleteProvider
      description: Permanently removes a PMS provider from a businessLocation.
      tags:
      - PMS
      parameters:
      - in: path
        schema:
          "$ref": "#/components/schemas/pms-apiProviderId"
        name: id
        required: true
      responses:
        '200':
          description: Provider deleted
          content:
            application/json:
              schema:
                type: integer
                format: int64
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/pms-apiErrorResponse"
        '404':
          description: Provider not found
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/pms-apiErrorResponse"
      security:
      - OAuth2:
        - propertymanagement
  "/pms/v1/providers":
    get:
      summary: Get PMS providers
      operationId: pms-apiGetProviders
      description: 'Returns a list of PMS providers that have been configured for
        the business location. Only PMS providers created by the authenticated OAuth
        client will be returned.

        '
      tags:
      - PMS
      parameters:
      - in: query
        schema:
          "$ref": "#/components/schemas/pms-apiBusinessLocationId"
        name: businessLocationId
        required: false
      responses:
        '200':
          description: Result
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/pms-apiGetProvider"
      security:
      - OAuth2:
        - propertymanagement
    post:
      summary: Create PMS provider
      operationId: pms-apiCreateProvider
      description: Creates a new PMS provider for the businessLocation.
      tags:
      - PMS
      requestBody:
        content:
          application/json:
            schema:
              required:
              - name
              - endpoint
              - apiKey
              - features
              - businessLocationId
              properties:
                businessLocationId:
                  "$ref": "#/components/schemas/pms-apiBusinessLocationId"
                name:
                  "$ref": "#/components/schemas/pms-apiProviderName"
                endpoint:
                  "$ref": "#/components/schemas/pms-apiProviderEndpoint"
                apiKey:
                  "$ref": "#/components/schemas/pms-apiProviderApiKey"
                features:
                  "$ref": "#/components/schemas/pms-apiProviderFeatures"
              type: object
        required: true
      responses:
        '200':
          description: Provider created
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/pms-apiGetProvider"
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/pms-apiErrorResponse"
        '404':
          description: Provider not found
          content:
            "*/*":
              schema:
                "$ref": "#/components/schemas/pms-apiErrorResponse"
      security:
      - OAuth2:
        - propertymanagement
  "/reservation/api/1/platform/{platform-code}/integration/onboarding":
    post:
      description: Once the external platform receives the [onboarding webhook](https://api-docs.lsk.lightspeed.app/operation/operation-reservationonboardingnotification),
        the process needs to be completed using this callback.
      operationId: reservation-serviceOnboardingCallback
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-serviceOnboardingCallbackRequest"
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/reservation-serviceOnboardingCallbackResponse"
          description: Accepted
        '400':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/reservation-serviceOnboardingCallbackResponse"
          description: Non relevant request
        '403':
          description: Scope 'reservation-{platform-code}' not found in the token
        '404':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/reservation-serviceOnboardingCallbackResponse"
          description: Platform not found
      security:
      - OAuth2:
        - reservation-platform-code
      summary: Callback to Complete Onboarding
      tags:
      - Reservations for Platforms
  "/reservation/api/1/platform/{platform-code}/profile":
    get:
      description: Retrieve platform profile details.
      operationId: reservation-serviceGetByPlatformCode
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/reservation-servicePlatformProfileResponse"
          description: Platform profile details
        '400':
          description: Non relevant request
        '403':
          description: Scope 'reservation-{platform-code}' not found in the token
      security:
      - OAuth2:
        - reservation-platform-code
      summary: Platform Profile Details
      tags:
      - Reservations for Platforms
    post:
      description: Create or update details for external reservation platform.
      operationId: reservation-serviceSetByPlatformCode
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-servicePlatformProfile"
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/reservation-servicePlatformProfileResponse"
          description: Platform profile details
        '400':
          description: Non relevant request
        '403':
          description: Scope 'reservation-{platform-code}' not found in the token
      security:
      - OAuth2:
        - reservation-platform-code
      summary: Create or Update Platform Profile
      tags:
      - Reservations for Platforms
  "/reservation/api/1/platform/{platform-code}/course-settings":
    patch:
      description: Setup platform's course settings definition.
      operationId: reservation-servicePlatformCourseSettings
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-servicePlatformCourseSettingsDto"
      responses:
        '200':
          description: Accepted
        '400':
          description: Non relevant request
        '403':
          description: Scope 'reservation-{platform-code}' not found in the token
      security:
      - OAuth2:
        - reservation-platform-code
      summary: Platform course settings definition
      tags:
      - Reservations for Platforms
  "/reservation/api/1/platform/{platform-code}/restaurant/{platform-restaurant-id}/reservation/{platform-reservation-id}/push":
    put:
      description: Create a new reservation or provide updates about guests, deposits,
        status, etc.
      operationId: reservation-servicePushPlatformReservation
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      - in: path
        name: platform-restaurant-id
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
      - description: The external identifier of the reservation.
        in: path
        name: platform-reservation-id
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformReservationId"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-servicePlatformReservation"
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/reservation-servicePlatformReservationAcceptedDto"
        '400':
          description: Non relevant request
        '403':
          description: Scope 'reservation-{platform-code}' not found in the token
        '404':
          description: Integration not found
      security:
      - OAuth2:
        - reservation-platform-code
      summary: Create or Update Reservation
      tags:
      - Reservations for Platforms
  "/reservation/api/1/platform/{platform-code}/webhook/auth/api-keys":
    patch:
      description: Activate XApiKey authentication for webhooks.
      operationId: reservation-serviceActivateApiKeysAuth
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-servicePlatformAPIKeysWebhook"
      responses:
        '200':
          description: Accepted
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/reservation-servicePlatformWebhookResponseDto"
        '400':
          description: Non relevant request
        '403':
          description: Scope 'reservation-{platform-code}' not found in the token
        '404':
          description: Platform not found
      security:
      - OAuth2:
        - reservation-platform-code
      summary: Add authentication by XApiKey
      tags:
      - Reservations for Platforms
  "/reservation/api/1/platform/{platform-code}/webhook/auth/basic-auth":
    patch:
      description: Activate BasicAuth authentication for webhooks.
      operationId: reservation-serviceActivateBasicAuth
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-servicePlatformBasicAuthWebhook"
      responses:
        '200':
          description: Accepted
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/reservation-servicePlatformWebhookResponseDto"
        '400':
          description: Non relevant request
        '403':
          description: Scope 'reservation-{platform-code}' not found in the token
        '404':
          description: Platform not found
      security:
      - OAuth2:
        - reservation-platform-code
      summary: Add authentication with BasicAuth
      tags:
      - Reservations for Platforms
  "/reservation/api/1/platform/{platform-code}/webhook/auth/bearer-auth":
    patch:
      description: Activate BearerAuth authentication for webhooks.
      operationId: reservation-serviceActivateBearerAuthAuth
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-servicePlatformBearerTokenWebhook"
      responses:
        '200':
          description: Accepted
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/reservation-servicePlatformWebhookResponseDto"
        '400':
          description: Non relevant request
        '403':
          description: Scope 'reservation-{platform-code}' not found in the token
        '404':
          description: Platform not found
      security:
      - OAuth2:
        - reservation-platform-code
      summary: Add authentication with BearerAuth
      tags:
      - Reservations for Platforms
  "/reservation/api/1/platform/{platform-code}/webhook/auth/oauth2":
    patch:
      description: Activate OAuth2 authentication for webhooks.
      operationId: reservation-serviceActivateOAuth2
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-servicePlatformOAuth2Webhook"
      responses:
        '200':
          description: Accepted
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/reservation-servicePlatformWebhookResponseDto"
        '400':
          description: Non relevant request
        '403':
          description: Scope 'reservation-{platform-code}' not found in the token
        '404':
          description: Platform not found
      security:
      - OAuth2:
        - reservation-platform-code
      summary: Add authentication with OAuth2
      tags:
      - Reservations for Platforms
  "/reservation/api/1/user/platform/{platform-code}/business-locations":
    get:
      description: Retrieve all the business locations accessible for a User
      operationId: reservation-serviceGetBusinessLocations
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      - description: The page number, when paginating
        in: query
        name: page
        required: false
        schema:
          default: 0
          format: int32
          type: integer
      - description: The items per page, when paginating
        in: query
        name: size
        required: false
        schema:
          default: 1000
          format: int32
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  "$ref": "#/components/schemas/reservation-servicePlatformBusinessLocation"
                type: array
                examples:
                - - businessLocationId: '123456789'
                    city: Genève
                    country: CH
                    name: Le Gâteau
                    state: Canton de Genève
                    street1: Rue de la Servette 10
                    street2: Suite 2
                    zip: '101201'
          description: A list of business locations
        '400':
          description: Non relevant request
        '403':
          description: Access token not relevant for the businessLocation, use authorization-code
        '404':
          description: No business locations found
      security:
      - OAuth2:
        - user-token-by-authorization-code
      summary: Get Business Locations
      tags:
      - Reservations for Platforms
  "/reservation/api/1/user/platform/{platform-code}/integration/activate":
    post:
      description: Activate the integration between the K-Series business location
        and the external reservation platform.
      operationId: reservation-serviceActivatePlatformIntegration
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-servicePlatformIntegrationDto"
      responses:
        '200':
          description: Accepted
        '400':
          description: Non relevant request
        '403':
          description: Access token not relevant for the businessLocation, use authorization-code
        '404':
          description: Platform not found
      security:
      - OAuth2:
        - user-token-by-authorization-code
      summary: Activate Integration for Restaurant
      tags:
      - Reservations for Platforms
  "/reservation/api/1/user/platform/{platform-code}/integration/deactivate":
    post:
      description: Deactivate the integration between the K-Series business location
        and the external reservation platform.
      operationId: reservation-serviceDeactivatePlatformIntegration
      parameters:
      - in: path
        name: platform-code
        required: true
        schema:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/reservation-servicePlatformIntegrationDto"
      responses:
        '200':
          description: Accepted
        '400':
          description: Non relevant request
        '403':
          description: Access token not relevant for the businessLocation, use authorization-code
        '404':
          description: Platform not found
      security:
      - OAuth2:
        - user-token-by-authorization-code
      summary: Deactivate Integration for Restaurant
      tags:
      - Reservations for Platforms
  "/staff/v1/businessLocations/{businessLocationId}/shift":
    get:
      tags:
      - Staff
      summary: Get Shifts
      operationId: staff-apiGetShift
      parameters:
      - "$ref": "#/components/parameters/staff-apiBusinessLocationId"
      - "$ref": "#/components/parameters/staff-apiPage"
      - "$ref": "#/components/parameters/staff-apiSize"
      - "$ref": "#/components/parameters/staff-apiSortByShift"
      - "$ref": "#/components/parameters/staff-apiStartTime"
      - "$ref": "#/components/parameters/staff-apiEndTime"
      - "$ref": "#/components/parameters/staff-apiStaffId"
      responses:
        '200':
          description: List of shifts with related links.
          content:
            application/json:
              schema:
                allOf:
                - "$ref": "#/components/schemas/staff-apiResponseSchema"
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        shifts:
                          type: array
                          items:
                            "$ref": "#/components/schemas/staff-apiShift"
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/userTypes/POS":
    get:
      tags:
      - Staff
      summary: Get All POS Users
      operationId: staff-apiGetPOSStaff
      parameters:
      - "$ref": "#/components/parameters/staff-apiBusinessLocationId"
      - "$ref": "#/components/parameters/staff-apiPage"
      - "$ref": "#/components/parameters/staff-apiSize"
      - "$ref": "#/components/parameters/staff-apiSortByStaff"
      - name: isActive
        description: Filter on active status.
        in: query
        schema:
          type: boolean
      - name: startDate
        description: Filter on user start date. The format should be `yyyy-MM-dd'T'HH:mm:ss`
          (ISO 8601 format).
        in: query
        schema:
          type: string
          format: date-time
      - name: endDate
        description: Filter on user end date. The format should be `yyyy-MM-dd'T'HH:mm:ss`
          (ISO 8601 format).
        in: query
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Staff List
          content:
            application/json:
              schema:
                allOf:
                - "$ref": "#/components/schemas/staff-apiResponseSchema"
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        staff:
                          type: array
                          items:
                            "$ref": "#/components/schemas/staff-apiPOSStaff"
      security:
      - OAuth2:
        - staff-api
    post:
      tags:
      - Staff
      summary: Create POS User
      operationId: staff-apiCreatePOSStaff
      parameters:
      - "$ref": "#/components/parameters/staff-apiBusinessLocationId"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/staff-apiCreatePosStaffDto"
      responses:
        '201':
          description: User created successfully
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/staff-apiStaff"
        '400':
          description: Bad request. Invalid input parameters.
        '401':
          description: Authentication failed.
        '403':
          description: Access Denied.
        '500':
          description: Internal Server Error.
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/userTypes/POS/{staffId}":
    put:
      tags:
      - Staff
      summary: Update POS User
      operationId: staff-apiUpdatePOSStaff
      parameters:
      - "$ref": "#/components/parameters/staff-apiBusinessLocationId"
      - name: staffId
        in: path
        required: true
        description: The unique identifier for the user.
        schema:
          type: integer
          format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/staff-apiUpdatePosStaffDto"
      responses:
        '201':
          description: User updated successfully
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/staff-apiStaff"
        '400':
          description: Bad request. Invalid input parameters.
        '401':
          description: Authentication failed.
        '403':
          description: Access Denied.
        '500':
          description: Internal Server Error.
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/userTypes/BACK_OFFICE":
    get:
      tags:
      - Staff
      summary: Get All Back Office Users
      operationId: staff-apiGetBackOfficeStaff
      parameters:
      - "$ref": "#/components/parameters/staff-apiBusinessLocationId"
      - "$ref": "#/components/parameters/staff-apiPage"
      - "$ref": "#/components/parameters/staff-apiSize"
      - "$ref": "#/components/parameters/staff-apiSortByStaff"
      - name: email
        in: query
        description: Filter on email address.
        schema:
          type: string
          format: email
      - name: isActive
        description: Filter on active status.
        in: query
        schema:
          type: boolean
      - name: startDate
        description: Filter on user start date. The format should be `yyyy-MM-dd'T'HH:mm:ss`
          (ISO 8601 format).
        in: query
        schema:
          type: string
          format: date-time
      - name: endDate
        description: Filter on user end date. The format should be `yyyy-MM-dd'T'HH:mm:ss`
          (ISO 8601 format).
        in: query
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Staff List
          content:
            application/json:
              schema:
                allOf:
                - "$ref": "#/components/schemas/staff-apiResponseSchema"
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        staff:
                          type: array
                          items:
                            "$ref": "#/components/schemas/staff-apiBOStaff"
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/staff/{staffId}":
    get:
      tags:
      - Staff
      summary: Get Single User
      operationId: staff-apiGetSingleStaff
      parameters:
      - name: businessLocationId
        in: path
        description: The unique identifier for the business location.
        required: true
        schema:
          type: integer
          format: int64
      - name: staffId
        in: path
        description: The unique identifier for the user.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: User object
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/staff-apiStaff"
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/groups":
    get:
      tags:
      - Staff
      summary: Get All User Groups
      operationId: staff-apiGetPosUserGroups
      parameters:
      - "$ref": "#/components/parameters/staff-apiBusinessLocationId"
      - "$ref": "#/components/parameters/staff-apiPage"
      - "$ref": "#/components/parameters/staff-apiSize"
      - "$ref": "#/components/parameters/staff-apiSortByStaffGroup"
      - name: name
        description: Filter on group name.
        in: query
        schema:
          type: string
      - name: roles
        description: Filter on group roles.
        in: query
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: POS User Groups List
          content:
            application/json:
              schema:
                allOf:
                - "$ref": "#/components/schemas/staff-apiResponseSchema"
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        staffGroupList:
                          type: array
                          items:
                            "$ref": "#/components/schemas/staff-apiStaffGroup"
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/groups/{groupId}":
    get:
      tags:
      - Staff
      summary: Get Single User Group
      operationId: staff-apiGetPosUserGroupById
      parameters:
      - "$ref": "#/components/parameters/staff-apiBusinessLocationId"
      - name: groupId
        in: path
        description: The unique identifier for the user group.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: POS User Group
          content:
            application/json:
              schema:
                allOf:
                - "$ref": "#/components/schemas/staff-apiResponseSchema"
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        staffGroup:
                          "$ref": "#/components/schemas/staff-apiStaffGroup"
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/business/{businessId}/assignStaff/{staffId}":
    post:
      tags:
      - Staff
      summary: Add Business Location Access
      operationId: staff-apiAddStaffBusinessLocationAccess
      parameters:
      - "$ref": "#/components/parameters/staff-apiBusinessId"
      - name: staffId
        in: path
        description: The unique identifier for the user.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/staff-apiBusinessLocationIds"
      responses:
        '200':
          description: User business location access added successfully.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/staff-apiBusinessLocationIds"
        '400':
          description: Bad request. Invalid input parameters.
        '401':
          description: Authentication failed.
        '403':
          description: Access Denied.
        '500':
          description: Internal Server Error.
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/unAssignStaff/{staffId}":
    delete:
      tags:
      - Staff
      summary: Remove Business Location Access
      operationId: staff-apiDeleteStaffBusinessLocationAccess
      parameters:
      - "$ref": "#/components/parameters/staff-apiBusinessLocationId"
      - name: staffId
        in: path
        description: The unique identifier for the user.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '204':
          description: User business location access removed successfully.
        '400':
          description: Bad request. Invalid input parameters.
        '401':
          description: Authentication failed.
        '403':
          description: Access Denied.
        '500':
          description: Internal Server Error.
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/webhooks":
    post:
      tags:
      - Staff
      summary: Create Webhook
      operationId: staff-apiCreateWebhook
      parameters:
      - name: businessLocationId
        in: path
        description: The unique identifier for the business location.
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/staff-apiCreateWebhookRequest"
      responses:
        '200':
          description: Webhook Created
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/staff-apiWebhookDto"
      security:
      - OAuth2:
        - staff-api
    get:
      tags:
      - Staff
      summary: Get Webhooks
      operationId: staff-apiGetWebhooks
      parameters:
      - name: businessLocationId
        in: path
        description: The unique identifier for the business location.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Webhooks Returned
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/staff-apiWebhookDto"
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/webhooks/{webhookId}":
    patch:
      tags:
      - Staff
      summary: Update Existing Webhook
      description: Updates the details of an existing webhook.
      operationId: staff-apiUpdateWebhook
      parameters:
      - "$ref": "#/components/parameters/staff-apiBusinessLocationId"
      - name: webhookId
        in: path
        required: true
        description: The unique identifier for the webhook.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/staff-apiCreateWebhookRequest"
      responses:
        '200':
          description: Webhook updated successfully
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/staff-apiWebhookDto"
        '400':
          description: Bad request. Invalid input parameters.
        '404':
          description: Not found. The specified webhook ID does not exist.
        '409':
          description: Conflict. A webhook with the specified details already exists.
      security:
      - OAuth2:
        - staff-api
    delete:
      tags:
      - Staff
      summary: Delete Webhook
      operationId: staff-apiDeleteWebhook
      parameters:
      - name: businessLocationId
        in: path
        description: The unique identifier for the business location.
        required: true
        schema:
          type: integer
          format: int64
      - name: webhookId
        in: path
        description: The unique identifier for the webhook.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Webhook successfully deleted
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/userTypes/POS/reportAccess":
    get:
      tags:
      - Staff
      summary: Get Report Access Levels
      operationId: staff-apiGetReportAccessLevels
      parameters:
      - name: businessLocationId
        in: path
        description: The unique identifier for the business location.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: List of report access levels.
          content:
            application/json:
              schema:
                allOf:
                - "$ref": "#/components/schemas/staff-apiResponseSchema"
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        staff:
                          type: array
                          items:
                            "$ref": "#/components/schemas/staff-apiReportAccessLevel"
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/userTypes/BACK_OFFICE/roles":
    get:
      tags:
      - Staff
      summary: Get All Back Office User Permissions
      operationId: staff-apiGetBackOfficeUserPermissions
      parameters:
      - name: businessLocationId
        in: path
        description: The unique identifier for the business location.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: User permissions List
          content:
            application/json:
              schema:
                allOf:
                - "$ref": "#/components/schemas/staff-apiResponseSchema"
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        staff:
                          type: array
                          items:
                            "$ref": "#/components/schemas/staff-apiUserPermission"
      security:
      - OAuth2:
        - staff-api
  "/staff/v1/businessLocations/{businessLocationId}/userTypes/POS/roles":
    get:
      tags:
      - Staff
      summary: Get All POS User Permissions
      operationId: staff-apiGetPosUserPermissions
      parameters:
      - name: businessLocationId
        in: path
        description: The unique identifier for the business location.
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: User permissions List
          content:
            application/json:
              schema:
                allOf:
                - "$ref": "#/components/schemas/staff-apiResponseSchema"
                - type: object
                  properties:
                    data:
                      type: object
                      properties:
                        staff:
                          type: array
                          items:
                            "$ref": "#/components/schemas/staff-apiUserPermission"
      security:
      - OAuth2:
        - staff-api
  "/tp/v1/business-locations/{businessLocationId}/tax-breakdown":
    post:
      summary: Post proposed order
      description: Returns the tax breakdown of a proposed order
      operationId: tax-preview-apiTaxBreakdown
      parameters:
      - in: path
        name: businessLocationId
        required: true
        schema:
          format: int64
          minimum: 1
          type: integer
          example: 45454565682155
          description: the id of the businessLocation
      requestBody:
        content:
          application/json:
            schema:
              properties:
                accountProfileCode:
                  description: A valid account profile code as setup for this business
                    location.
                  type: string
                items:
                  description: The items contained in this order
                  items:
                    properties:
                      sku:
                        maxLength: 25
                        description: A stock-keeping unit
                        type: string
                      quantity:
                        description: Quantity of item to be ordered
                        type: number
                        format: double
                      subItems:
                        description: subitems applied to this item
                        items:
                          properties:
                            sku:
                              maxLength: 25
                              description: A stock-keeping unit
                              type: string
                            quantity:
                              description: Quantity of sub-item to be added to the
                                order item
                              type: number
                              format: double
                          type: object
                          required:
                          - sku
                        type: array
                    type: object
                    required:
                    - sku
                  type: array
              type: object
        required: true
      tags:
      - Tax Breakdown
      responses:
        '200':
          description: Tax Breakdown
          content:
            application/json:
              schema:
                properties:
                  transactions:
                    items:
                      properties:
                        sku:
                          example: UGG-BB-PUR-06
                          maxLength: 25
                          description: A stock-keeping unit
                          type: string
                        quantity:
                          description: Quantity of the item on this transaction line
                          type: number
                        unitPrice:
                          description: Cost of item
                          type: number
                        netAmount:
                          description: Cost of transaction line before taxes are applied
                          type: number
                        grossAmount:
                          description: Cost of transaction with all taxes applied
                          type: number
                        taxAmount:
                          description: Cost of all taxes to be applied to this transaction
                            line
                          type: number
                      type: object
                    type: array
                  taxLines:
                    items:
                      properties:
                        description:
                          description: Description of the tax to print on the receipt
                          type: string
                        taxRate:
                          description: Tax rate as configured, a decimal number encoded
                            in a string, "1.20" means 20% tax
                          type: string
                        taxCode:
                          description: Tax code as configured
                          type: string
                        taxName:
                          description: Tax name as configured
                          type: string
                        netAmount:
                          description: Cost of transaction line before taxes are applied
                          type: number
                        grossAmount:
                          description: Cost of transaction with all taxes applied
                          type: number
                        taxAmount:
                          description: Cost of all taxes to be applied to this transaction
                            line
                          type: number
                        taxIncluded:
                          type: boolean
                      type: object
                    type: array
                  totalNetAmountInCents:
                    description: Total cost of order before taxes are applied
                    type: integer
                    format: int64
                  totalGrossAmountInCents:
                    description: Total cost of order after all taxes are applied
                    type: integer
                    format: int64
                  totalTaxAmountInCents:
                    description: Cost of all taxes due on the order
                    type: integer
                    format: int64
                  amountDue:
                    description: Total cost of order in big decimal format
                    type: number
                type: object
        '400':
          description: Bad Request
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '400'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
        '403':
          description: Forbidden
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '403'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
        '404':
          description: Not Found
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '404'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
        '503':
          description: Service Unavailable
          content:
            "*/*":
              schema:
                properties:
                  status:
                    enum:
                    - '503'
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  message:
                    type: string
                  apiSubExceptions:
                    items:
                      properties:
                        field:
                          type: string
                        rejectedValue:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                type: object
      security:
      - OAuth2:
        - orders-api
  "/i/allergens":
    get:
      summary: Get allergens
      operationId: teckelGetAllergens
      description: Returns a list of all possible allergens that can be added to a
        rich item. See [Allergens Table](https://api-portal.lsk.lightspeed.app/guides/reference/reference-tables/allergens)
        for more details.
      tags:
      - Rich Item
      responses:
        '200':
          description: Allergens
          content:
            application/json:
              schema:
                description: A list of allergens.
                items:
                  description: Allergen
                  properties:
                    code:
                      description: The allergen code.
                      example: fish
                      type: string
                    translations:
                      description: List of translations.
                      example:
                      - locale: en
                        text: Fish
                      - locale: fr
                        text: Poisson
                      items:
                        properties:
                          locale:
                            description: Language locale (eg. 'en' or 'en_US').
                            example: en
                            nullable: false
                            type: string
                          text:
                            description: Translation in the language of the locale.
                            type: string
                        type: object
                      uniqueItems: true
                      type: array
                  type: object
                type: array
      security:
      - OAuth2:
        - orders-api
  "/i/locales/{businessId}":
    get:
      summary: Get locales
      operationId: teckelGetLocales
      description: Returns the locales of a business in ISO Code 2 or language_localization
        (eg. 'en' or 'en_US').
      tags:
      - Rich Item
      parameters:
      - "$ref": "#/components/parameters/teckelPathBusinessId"
      responses:
        '200':
          description: Locales
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/teckelLocalesDto"
      security:
      - OAuth2:
        - orders-api
    put:
      summary: Update locales
      operationId: teckelUpdateLocales
      description: Sets business item languages. Supports language ISO code 2 or language_localization
        (eg. 'en' or 'en_US').
      tags:
      - Rich Item
      parameters:
      - "$ref": "#/components/parameters/teckelPathBusinessId"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/teckelLocalesDto"
        required: true
      responses:
        '200':
          description: OK
        '201':
          description: Created
      security:
      - OAuth2:
        - orders-api
  "/i/richItem/{businessId}":
    get:
      summary: Get rich items
      operationId: teckelGetRichItems
      description: Returns all of the rich item information for a specific business.
      tags:
      - Rich Item
      parameters:
      - "$ref": "#/components/parameters/teckelPathBusinessId"
      - "$ref": "#/components/parameters/teckelPage"
      - "$ref": "#/components/parameters/teckelSize"
      - "$ref": "#/components/parameters/teckelSort"
      responses:
        '200':
          description: Rich Items
          content:
            application/hal+json;charset=UTF-8:
              schema:
                properties:
                  _embedded:
                    properties:
                      richItemDtoList:
                        description: List of rich items
                        items:
                          allOf:
                          - "$ref": "#/components/schemas/teckelRichItemDto"
                          - "$ref": "#/components/schemas/teckelRichItemDtoDates"
                          - "$ref": "#/components/schemas/teckelRichItemDtoPictures"
                          - "$ref": "#/components/schemas/teckelRichItemDtoLinks"
                          type: object
                        type: array
                    type: object
                  _links:
                    "$ref": "#/components/schemas/teckelLinkSelfPage"
      security:
      - OAuth2:
        - orders-api
  "/i/richItem/{businessId}/{sku}":
    get:
      summary: Get rich item by sku
      operationId: teckelGetRichItem
      description: Get a rich item from its sku and the business id.
      tags:
      - Rich Item
      parameters:
      - "$ref": "#/components/parameters/teckelPathBusinessId"
      - "$ref": "#/components/parameters/teckelPathSKU"
      responses:
        '200':
          description: OK
          content:
            application/hal+json;charset=UTF-8:
              schema:
                allOf:
                - "$ref": "#/components/schemas/teckelRichItemDto"
                - "$ref": "#/components/schemas/teckelRichItemDtoDates"
                - "$ref": "#/components/schemas/teckelRichItemDtoPictures"
                - "$ref": "#/components/schemas/teckelRichItemDtoLinks"
                type: object
        '404':
          description: Not Found
      security:
      - OAuth2:
        - orders-api
    patch:
      summary: Update picture
      operationId: teckelUpdateRichItemPicture
      description: Partially updates the rich item to set the picture or rawPicture.
      tags:
      - Rich Item
      parameters:
      - "$ref": "#/components/parameters/teckelPathBusinessId"
      - "$ref": "#/components/parameters/teckelPathSKU"
      requestBody:
        content:
          application/json:
            schema:
              properties:
                businessId:
                  description: The id of the business
                  type: integer
                  format: int64
                  examples:
                  - 454335871
                sku:
                  maxLength: 25
                  description: A stock-keeping unit
                  type: string
                  examples:
                  - UGG-BB-PUR-06
                fileType:
                  description: Image format (eg. 'jpeg' or 'png').
                  type: string
                  examples:
                  - png
                picture:
                  description: 'The cropped picture: use this field only to update
                    picture (PATCH method). When updating picture, this field is required.'
                  type: string
                  format: byte
                  examples:
                  - iVBORw0KGgoAAAANSUhEUgAAAIwAAACMAQMAAACUDtN9AAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAJwAAACcBKgmRTwAAAANQTFRFAAAAp3o92gAAABlJREFUeJztwTEBAAAAwqD1T20JT6AAAOBrCmQAASsQRDsAAAAASUVORK5CYII=
                rawPicture:
                  description: 'The raw picture (before cropping): use this field
                    only to update picture (PATCH method). When updating picture,
                    this field is optional.'
                  type: string
                  format: byte
                  examples:
                  - iVBORw0KGgoAAAANSUhEUgAAAIwAAACMAQMAAACUDtN9AAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAJwAAACcBKgmRTwAAAANQTFRFAAAAp3o92gAAABlJREFUeJztwTEBAAAAwqD1T20JT6AAAOBrCmQAASsQRDsAAAAASUVORK5CYII=
              type: object
              required:
              - businessId
              - sku
        required: true
      responses:
        '200':
          description: Patched
          content:
            application/hal+json;charset=UTF-8:
              schema:
                allOf:
                - "$ref": "#/components/schemas/teckelRichItemDto"
                - "$ref": "#/components/schemas/teckelRichItemDtoDates"
                - "$ref": "#/components/schemas/teckelRichItemDtoPictures"
                type: object
      security:
      - OAuth2:
        - orders-api
    put:
      summary: Create or update rich item
      operationId: teckelCreateOrUpdateRichItem
      description: Creates a new rich item or updates an existing rich item. To update
        the sku, set the new sku in the request body. The picture cannot be set using
        this method (use PATCH method).
      tags:
      - Rich Item
      parameters:
      - "$ref": "#/components/parameters/teckelPathBusinessId"
      - "$ref": "#/components/parameters/teckelPathSKU"
      requestBody:
        content:
          application/json:
            schema:
              properties:
                businessId:
                  description: The id of the business
                  type: integer
                  format: int64
                  examples:
                  - 454335871
                sku:
                  maxLength: 25
                  description: A stock-keeping unit
                  type: string
                  examples:
                  - UGG-BB-PUR-06
                allergenCodes:
                  description: List of allergen codes
                  items:
                    type: string
                  uniqueItems: true
                  type: array
                  examples:
                  - - milk
                    - cereals
                descriptions:
                  description: List of localized descriptions
                  items:
                    "$ref": "#/components/schemas/teckelRichItemDescriptionDto"
                  uniqueItems: true
                  type: array
                  examples:
                  - - localeCode: en
                      description: This is a test for a rich item
                      displayName: Rich Item 1
                    - localeCode: de
                      description: Das ist ein Test
                      displayName: Rich Item 1 DE
              type: object
              required:
              - businessId
              - sku
        required: true
      responses:
        '200':
          description: Updated
          content:
            application/hal+json;charset=UTF-8:
              schema:
                allOf:
                - "$ref": "#/components/schemas/teckelRichItemDto"
                - "$ref": "#/components/schemas/teckelRichItemDtoDates"
                - "$ref": "#/components/schemas/teckelRichItemDtoPictures"
                type: object
      security:
      - OAuth2:
        - orders-api
    delete:
      summary: Delete rich item
      operationId: teckelDeleteRichItem
      description: Delete rich item
      tags:
      - Rich Item
      parameters:
      - "$ref": "#/components/parameters/teckelPathBusinessId"
      - "$ref": "#/components/parameters/teckelPathSKU"
      responses:
        '204':
          description: Item deleted
      security:
      - OAuth2:
        - orders-api
  "/i/richItem/{businessId}/itemsBySkus":
    post:
      summary: Get rich items by SKUs
      operationId: teckelGetRichItemBySKUs
      description: Returns a list of rich items matching the SKUs provided in the
        request.
      tags:
      - Rich Item
      parameters:
      - "$ref": "#/components/parameters/teckelPathBusinessId"
      requestBody:
        content:
          application/json:
            schema:
              items:
                example: UGG-BB-PUR-06
                maxLength: 25
                description: A stock-keeping unit
                type: string
              type: array
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json;charset=UTF-8:
              schema:
                properties:
                  _embedded:
                    properties:
                      richItemDtoList:
                        description: List of rich items
                        items:
                          allOf:
                          - "$ref": "#/components/schemas/teckelRichItemDto"
                          - "$ref": "#/components/schemas/teckelRichItemDtoDates"
                          - "$ref": "#/components/schemas/teckelRichItemDtoPictures"
                          - "$ref": "#/components/schemas/teckelRichItemDtoLinks"
                          type: object
                        type: array
                    type: object
                  _links:
                    allOf:
                    - "$ref": "#/components/schemas/teckelLinkSelf"
                    type: object
      security:
      - OAuth2:
        - orders-api
  "/i/richItem/{businessId}/pictureSpec":
    get:
      summary: Get picture specifications
      operationId: teckelGetRichItemPictureSpec
      description: Get rich item picture specifications.
      tags:
      - Rich Item
      parameters:
      - "$ref": "#/components/parameters/teckelPathBusinessId"
      responses:
        '200':
          content:
            application/hal+json;charset=UTF-8:
              schema:
                "$ref": "#/components/schemas/teckelPictureSpecDto"
          description: OK
      security:
      - OAuth2:
        - orders-api
x-tagGroups:
- name: Rich Item API
  tags:
  - Rich Item
  - Migration
- name: Tax Preview API
  tags:
  - Tax Breakdown
- name: Staff Api
  tags:
  - Staff
  - Internal Staff
- name: Reservation API
  tags:
  - Reservations for Platforms
- name: PMS API
  tags:
  - PMS
- name: Items API
  tags:
  - Items
  - ItemsV2
  - Menus
  - Buttons
  - Production Instructions
  - Inventory
  - Combos
  - Groups
  - MenusV2
  - Accounting Group
  - IntegrationMenu
  - Price Lists
  - Products
  - ItemAppearance
  - Modifiers
  - ModifierGroups
  - Allergens
  - Locales
  - RichItem
- name: id-cards-api API
  tags:
  - ID Cards
- name: Financial API
  tags:
  - Financial
  - FinancialV2
- name: Online Ordering API
  tags:
  - Order and Pay
  - 'Order and Pay: Webhook'
components:
  schemas:
    access-control-serviceAttributeType:
      type: string
      description: Specifies if the attribute is a part of action, resource or subject
        attributes
      enum:
      - ACTION
      - RESOURCE
      - SUBJECT
    access-control-serviceAttributeDto:
      type: object
      description: Represents an attribute used for authorization decisions, either
        value or values can be set
      properties:
        type:
          "$ref": "#/components/schemas/access-control-serviceAttributeType"
        key:
          type: string
          description: The key of the attribute. The key is matched in the authorization
            policies
        value:
          deprecated: true
          type: string
          description: The value of the attribute. The value is matched in the authorization
            policies. Deprecated in favor of 'values' field
        values:
          type: array
          description: The values of the attribute. The values are matched in the
            authorization policies
          items:
            type: string
      required:
      - type
      - key
    access-control-serviceCallerDto:
      type: object
      description: Represents the application requesting the authorization
      properties:
        applicationName:
          description: The name of the application requesting the authorization
          type: string
      required:
      - applicationName
    access-control-serviceHeaderDto:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
    access-control-serviceRequestRepresentationDto:
      type: object
      description: The representation of the request to be authorized
      properties:
        method:
          "$ref": "#/components/schemas/access-control-serviceHttpMethod"
        uri:
          type: string
          description: The URI of the request, typically the path of the request
        headers:
          type: array
          description: The headers of the request. Headers are used to extract the
            subject attributes. For example, from the Authorization header
          items:
            "$ref": "#/components/schemas/access-control-serviceHeaderDto"
      required:
      - method
      - uri
      - headers
    access-control-serviceDeniedResponseDto:
      type: object
      description: The response to be returned by the application in case of a DENY
        decision
      properties:
        payload:
          type: string
        statusCode:
          type: integer
          format: int32
        headers:
          type: array
          items:
            "$ref": "#/components/schemas/access-control-serviceHeaderDto"
    access-control-serviceSubjectDto:
      type: object
      description: The representation of a valid K-Series subject
      properties:
        passThroughHeaders:
          type: array
          description: The headers to add to the requests to the downstream services
            to authenticate as the user
          items:
            "$ref": "#/components/schemas/access-control-serviceHeaderDto"
        nameForDiagnostics:
          type: string
          description: The name of the subject. This is used for diagnostics purposes.
            Do not expect any specific format
        attributes:
          type: object
          description: |
            The attributes of the user.
            These may be used by the app to perform business logic.
            For K_Series backoffice users 'email' key is present.
            For K_Series backoffice users 'user_id' key is present.
            For POS devices - 'device_id' and `device_location_id` keys are present.
            The keys are subject to change for now. Please notify the team if a certain key is needed.
          additionalProperties:
            type: string
        mdc:
          type: object
          description: The MDC context to be set for the request
          additionalProperties:
            type: string
      required:
      - passThroughHeaders
      - nameForDiagnostics
      - attributes
      - mdc
    access-control-serviceHttpMethod:
      type: string
      enum:
      - GET
      - POST
      - PUT
      - DELETE
      - PATCH
      - HEAD
      - OPTIONS
      - TRACE
      - CONNECT
    apaleo-integrationPmsPaymentDto:
      properties:
        gratuity:
          type: number
        methodName:
          type: string
        reservationId:
          type: string
        staffName:
          type: string
      type: object
    apaleo-integrationPmsTransactionDto:
      properties:
        amount:
          type: number
        description:
          type: string
        groupId:
          format: int64
          type: integer
        quantity:
          type: number
        taxRate:
          type: number
      type: object
    apaleo-integrationApaleoAuthorizationRequestAdditionalInfoDto:
      properties:
        authorizeUri:
          type: string
        clientId:
          type: string
        clientSecret:
          type: string
        scope:
          type: string
        tokenUri:
          type: string
      type: object
    apaleo-integrationSubAccountMappingDto:
      properties:
        subAccountId:
          example: MUC-TEA
          description: SubAccount ID
          type: string
        name:
          example: Finest green tea
          description: SubAccount name
          type: string
        accountingGroups:
          description: Ids of accounting groups that are mapped to the sub-account
          items:
            type: integer
            format: int64
          type: array
      type: object
    apaleo-integrationPaymentMethodMappingDto:
      properties:
        apaleoPaymentMethodId:
          example: PayPal
          description: Payment method ID
          type: string
        paymentMethodIds:
          description: IDs of LSK payment methods that are mapped to the apaleo payment
            method
          items:
            type: integer
            format: int64
          type: array
      type: object
    apaleo-integrationPaymentMethod:
      required:
      - code
      - description
      - id
      - type
      properties:
        id:
          type: integer
          format: int64
        description:
          type: string
        code:
          type: string
        accountingReference:
          type: string
        type:
          type: string
        gratuityCutPct:
          type: integer
          format: int32
        giveChange:
          type: boolean
        showPaymentsInReport:
          type: boolean
        clientSideHidden:
          type: boolean
        nativeMethod:
          type: boolean
        gratuityEnabled:
          type: boolean
        openCashDrawer:
          type: boolean
        noPrint:
          type: boolean
        virtualMerchantReceipt:
          type: boolean
        managerOnly:
          type: boolean
        printHeader:
          type: boolean
        printFooter:
          type: boolean
        refundOnFailure:
          type: boolean
        includeInFloatCount:
          type: boolean
        editable:
          type: boolean
        qrTokenEnabled:
          type: boolean
        foreignCurrencyCode:
          type: string
        qrToken:
          type: string
        config:
          additionalProperties:
            type: string
          type: object
      type: object
    apaleo-integrationSubAccountMappingMode:
      enum:
      - PER_ACCOUNTING_GROUP
      - PER_POS_CONFIG
      type: string
    apaleo-integrationChargesPostingAggregationMode:
      enum:
      - NO_AGGREGATION
      - BY_SUB_ACCOUNT
      type: string
    apaleo-integrationPosConfigSubAccountMappingDto:
      properties:
        posConfigId:
          format: int64
          type: integer
        subAccountMappings:
          items:
            "$ref": "#/components/schemas/apaleo-integrationSubAccountMappingDto"
          type: array
      type: object
    apeBusinessLocationId:
      description: The unique identifier for the business location.
      type: integer
      format: int64
      example: 45454565682155
    apeFloorPlanId:
      type: integer
      format: int64
      example: 45454565682155
      description: The unique identifier for the floor plan. See [Get Floorplans](https://api-docs.lsk.lightspeed.app/operation/operation-apelookupfloorplans)
    apeOrderPayment:
      required:
      - paymentAmount
      properties:
        paymentMethod:
          example: OOPAYMENT
          description: Payment method code as configured by the merchant.
          type: string
        paymentAmount:
          example: 14.0
          description: The total amount of the payment including tips if any.
          type: number
        tipAmount:
          example: 2.0
          description: The tip amount, if any.
          type: number
      type: object
    apeCustomerInfo:
      required:
      - firstName
      properties:
        firstName:
          example: Jane
          description: Customer first name.
          type: string
          minLength: 1
          maxLength: 128
        lastName:
          example: Doe
          description: Customer last name.
          type: string
        thirdPartyReference:
          example: ZEN-7074522d-c71d-403f
          type: string
          description: The unique reference for this customer which can help to identify
            them later on. If the email is left empty, this should be empty as well.
        email:
          example: jane.doe@example.com
          description: The email address for this customer.
          type: string
        contactNumberAsE164:
          example: "+14155552671"
          description: The customer phone number in E164 format.
          type: string
        notes:
          example: Notes about the customer.
          description: The notes attached to the customer.
          type: string
        salutation:
          example: Mr.
          description: Salutation for the customer (Mr., Mrs., Dr., etc...).
          type: string
        sendEmailReceipts:
          example: true
          description: Default value of emailNotification setting for new customers
          type: boolean
        emailNotification:
          default: DONT_CHANGE
          description: Update the customer email notification setting. For example,
            sendEmailReceipts = true, emailNotification = DONT_CHANGE - sends receipt
            email for all users who haven't disabled it in the Backoffice. sendEmailReceipts
            = false, emailNotification = DONT_CHANGE - will not send receipt email
            for all users except those who enabled it in the Backoffice
          enum:
          - ENABLE
          - DISABLE
          - DONT_CHANGE
          type: string
      type: object
    apeAccountLineItem:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique ID assigned to the sale line.
          example: 1341648999023061
        uuid:
          type: string
          description: The UUID assigned to the sale line.
          example: 2c83b049-a2c1-4bc5-8479-eb152e5a54be
        itemName:
          type: string
          description: The name given to the item.
          example: Burger
        itemSku:
          type: string
          description: The SKU assigned to the item.
          example: '14'
        unitAmount:
          type: number
          description: The price per unit.
          example: 10.0
        quantity:
          type: number
          format: double
          description: The quantity of the item for this sale line.
          example: 1.0
        modifiers:
          type: array
          description: The modifiers of the item for this sale line.
          items:
            "$ref": "#/components/schemas/apeModifier"
        amountWithTax:
          type: number
          description: The total price of the item including tax.
          example: 11.5
        amountLessTax:
          type: number
          description: The total price of the item without tax.
          example: 10.0
        discountedAmount:
          type: number
          description: The amount the item was discounted.
          example: 0.0
        timeOfTransactionUtc:
          type: string
          format: date-time
          description: The date and time in UTC when the transaction occurred.
          example: '2023-11-07T21:24:44.741+0000'
        active:
          type: boolean
          deprecated: true
          example: true
        parentId:
          type: integer
          format: int64
          writeOnly: true
        subLineItems:
          type: array
          description: Collection of sub-line items associated with this sale line.
          items:
            "$ref": "#/components/schemas/apeAccountLineItem"
          example:
          - id: 1341648999023062
            uuid: 2c83b049-a2c1-4bc5-8479-eb152e5a54be
            itemName: Extra Cheese
            itemSku: '35'
            unitAmount: 1.0
            quantity: 1.0
            modifiers: []
            amountWithTax: 1.15
            amountLessTax: 1.0
            discountedAmount: 0.0
            grossUnitAmount: 1.0
            timeOfTransactionUtc: '2023-11-07T21:24:44.755+0000'
            active: true
            subLineItems: []
            taxIncluded: false
        isTaxIncluded:
          type: boolean
          writeOnly: true
        taxIncluded:
          type: boolean
          description: Indicates whether tax is included in the unit amount.
          example: false
    apeAccountPaymentLine:
      type: object
      properties:
        paymentMethodDescription:
          type: string
          description: Payment method for this payment line.
          example: API Payment
        externalReference:
          type: string
          description: Payment external reference.
          example: '12345678901234'
        paymentMethodCode:
          type: string
          description: Payment method code for this payment line.
          example: APM
        amountPaid:
          type: number
          description: Amount paid for this payment line.
          example: 12.65
        paymentDate:
          type: string
          format: date-time
          description: Date/Time in UTC of this payment.
          example: '2023-11-07T22:05:16.127+0000'
        active:
          type: boolean
          description: Whether this payment line is active or not.
          example: true
        accountCancelled:
          type: boolean
          writeOnly: true
      description: Payments associated with this check.
    apeCurrentWarning:
      type: object
      properties:
        information:
          type: string
        type:
          type: string
    apeCurrentInfo:
      type: object
      properties:
        page:
          type: integer
          format: int32
          description: Current page number.
          example: 0
        pageSize:
          type: integer
          format: int32
          description: Number of items per page.
          example: 50
    apePaginatedMetadata:
      type: object
      properties:
        warnings:
          description: A list of warnings that occurred during the request, but which
            did not prevent a successful response.  For instance, if the Business
            Location does not have the required POS app version to support item availability.
          type: array
          items:
            "$ref": "#/components/schemas/apeCurrentWarning"
        current:
          "$ref": "#/components/schemas/apeCurrentInfo"
        total:
          type: integer
          format: int32
          example: 1
          description: Total number of items requested.
        totalPages:
          type: integer
          format: int32
          example: 10
          description: Total number of pages of items.
    apeRestrictedItemPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          items:
            "$ref": "#/components/schemas/apeRestrictedItem"
        metadata:
          "$ref": "#/components/schemas/apePaginatedMetadata"
    apeRestrictedItem:
      type: object
      properties:
        sku:
          type: string
          description: The SKU assigned to the item.
          example: SKU1
        count:
          type: integer
          description: The count of available items.
          format: int64
          example: 50
        updatedAt:
          type: string
          format: date-time
          description: The last update of the item count.
          example: '2025-07-08T14:20:00Z'
    apeSkusRequest:
      type: object
      required:
      - skus
      properties:
        skus:
          type: array
          items:
            type: string
            example: SKU1
          minItems: 1
          maxItems: 50
          description: List of SKUs to return.
    apeAccountSnapshot:
      type: object
      properties:
        clientCount:
          type: integer
          format: int32
          description: The number of guests at the table.
          example: 4
        identifier:
          type: string
          deprecated: true
        uuid:
          type: string
          description: The account uuid.
          example: a3bb189e-8f29-4cce-b0e9-f29b123dfe3d
        openDate:
          type: string
          format: date-time
          description: The date this account was opened in UTC.
          example: '2021-06-21T14:20:00Z'
        closeDate:
          type: string
          format: date-time
          description: The date this account was closed in UTC.
          example: '2021-06-22T10:15:00Z'
        paidAmount:
          type: number
          description: The total of all payments on the check.
          example: 100.0
        serviceCharge:
          type: number
          description: The service charge applied to the check.
          example: 10.0
        name:
          type: string
          description: The check name.
          example: ORDER A1C2E
        currentAmount:
          type: number
          description: The current total amount on the check.
          example: 110.0
        staffName:
          type: string
          description: The name of the staff member assigned to the check.
          example: Jane Smith
        staffId:
          type: integer
          format: int64
          description: The unique ID of the staff member assigned to the check.
          example: 7701234
        salesEntries:
          type: array
          description: Collection of check items.
          items:
            "$ref": "#/components/schemas/apeAccountLineItem"
        paymentEntries:
          type: array
          description: Collection of payment entries to the check.
          items:
            "$ref": "#/components/schemas/apeAccountPaymentLine"
        id:
          type: string
          deprecated: true
        ikaccountId:
          type: string
          description: The system-generated account identifier for this check.(Applies
            to iKentoo V3+).
          example: A78094.48
        number:
          type: integer
          format: int32
          deprecated: true
        tableNumber:
          type: integer
          format: int32
          description: The table number assigned to the check.
          example: 2
        posId:
          type: integer
          format: int64
          description: The unique ID of the POS station that processed the check.
          example: 54321
        deviceId:
          type: integer
          format: int64
          deprecated: true
    apeItemModifier:
      properties:
        modifierId:
          example: '236025632784492'
          description: Modifier ID to be applied to this item.
          type: string
      type: object
    apeModifier:
      type: object
      properties:
        name:
          example: Rare
          description: The name of the modifier.
          type: string
        quantity:
          example: 1
          description: The quantity of the modifier.
          type: integer
          format: int32
      description: The modifiers of the item for this sale line
    apeOrderApiApiConfigDto:
      type: object
      properties:
        enabled:
          type: boolean
          description: A flag indicating if a business location has the Online Ordering
            API enabled
        orderProfileId:
          type: integer
          format: int64
          description: Order Profile id
        staffId:
          type: integer
          format: int64
          description: Staff id
    apeOrderApiPosStatusDto:
      type: object
      properties:
        salesPeriod:
          description: Sales period status for the location
          type: string
          enum:
          - OPENED
          - CLOSED
        acceptingOnlineOrders:
          type: boolean
          description: A flag indicating if a POS in the location has the option `Online
            Orders enabled` in `Control center`
        availableDevices:
          type: boolean
          description: A flag indicating if the location has devices running for accepting
            and processing online orders
    apeProductionInstruction:
      type: object
      properties:
        multiSelectionPermitted:
          type: boolean
          description: Specifies if more than one production instruction can be selected
            for this group.
        productionInstructionGroupName:
          type: string
          description: The group name for this production instruction.
        productionIntructionGroupId:
          type: integer
          description: The unique identifier for this production instruction group.
          format: int64
        productionInstructionList:
          type: array
          description: Array of production instructions for this group.
          items:
            "$ref": "#/components/schemas/apeProductionInstructionEntry"
    apeProductionInstructionEntry:
      type: object
      properties:
        instruction:
          type: string
          description: The name of the production instruction.
        ikentooModifierId:
          description: The unique identifier of this production instruction.
          type: integer
          format: int64
      description: Array of production instructions for this group
    apeItemRichData:
      type: object
      properties:
        squareImageUrl:
          description: A download link for the image associated with this item, as
            formatted for display in the POS.
          type: string
          example: http://s3-eu-west-1.amazonaws.com/com.ikentoo.trial.rich-content-store/8262_2f6c1716-0f06-488c-afc2-d888666d94fb.image/png
        rawImageUrl:
          description: A download link for the image associated with this item.
          type: string
          example: http://s3-eu-west-1.amazonaws.com/com.ikentoo.trial.rich-content-store/8262_2f6c1716-0f06-488c-afc2-d888666d94fb_raw.image/png
        previewImageUrl:
          description: A download link for the preview image associated with this
            item.
          type: string
          example: http://s3-eu-west-1.amazonaws.com/com.ikentoo.trial.rich-content-store/8262_2f6c1716-0f06-488c-afc2-d888666d94fb_preview.image/png
        containsAlcohol:
          description: Flag to indicate if the item contains alcohol.
          type: boolean
          example: true
        alcoholPercentage:
          description: The percentage of alcohol in the item.
          type: number
          example: 13.0
        texts:
          type: array
          items:
            "$ref": "#/components/schemas/apeItemTexts"
        allergenCodes:
          description: The allergen codes associated with this item.
          example:
          - mustard
          - cereals
          uniqueItems: true
          type: array
          items:
            type: string
    apeItemTexts:
      type: object
      properties:
        locale:
          type: string
          description: The two letter language code associated with this item text.
        friendlyDisplayName:
          type: string
          description: The display name for this item in the configured language.
        description:
          type: string
          description: The descriptive text for this item in the configured language.
      example:
        locale: en
        friendlyDisplayName: Burger - ENG
        description: "<p>Burger in english</p>"
    apeTagCode:
      description: The order profile [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code).
      type: string
      example: DELIVERY
    apeMenu:
      properties:
        menuName:
          description: The name of the menu.
          type: string
          example: Main Menu
        menuEntryGroups:
          description: |-
            Menu groups of this menu. The top-level entry will always be of type "group", representing a menu screen. Beneath each `menuEntryGroup` will be a `menuEntry` array containing any combination of one or more menu entries:
            * A `menuItemEntry` represents an individual item.
            * A `menuGroupEntry` represents a menu sub-screen.
            * A `menuDealEntry` represents a combo.
          items:
            "$ref": "#/components/schemas/apeTopLevelMenuGroupEntry"
          type: array
        richDataMissing:
          description: Indicates whether or not rich item data is missing, if requested.
          type: boolean
          example: false
        ikentooMenuId:
          type: integer
          description: The unique identifier for the menu.
          example: 141948669132851
          format: int64
        conditionalTaxRules:
          description: Warning that actual tax depends on a POS Account condition
            and may be different from what is provided in this API.
          type: boolean
      type: object
    apeMenuDealEntry:
      title: menuDeal
      allOf:
      - type: object
        properties:
          "@type":
            type: string
            description: Indicates the item is a Combo.
            example: menuDeal
            enum:
            - menuDeal
          items:
            description: List of items to select from.
            type: array
            items:
              "$ref": "#/components/schemas/apeMenuItemEntry"
          menuDealGroups:
            type: array
            description: Array of Items in the Combo
            items:
              "$ref": "#/components/schemas/apeMenuDealGroup"
      - "$ref": "#/components/schemas/apeMenuItemEntryParent"
    apeMenuDealGroup:
      type: object
      properties:
        description:
          type: string
          description: Description of the combo item grouping.
          example: Side Dishes
        sku:
          type: string
          description: The SKU of the combo item grouping.
          example: '25'
        mustSelectAnItem:
          type: boolean
          description: Whether or not this is a required selection.
          example: true
        multiSelectionPermitted:
          type: boolean
          description: Whether or not multiple items can be selected from this item
            grouping.
          example: true
        minimumSelection:
          type: integer
          format: int32
          description: The minimum number of items that must be selected from this
            item grouping. If null then no minimum is set.
          example: 1
        maximumSelection:
          type: integer
          format: int32
          description: The maximum number of items that can be selected from this
            item grouping. If null then no maximum is set.
          example: 3
        itemRichData:
          "$ref": "#/components/schemas/apeItemRichData"
        items:
          description: List of items to select from.
          type: array
          items:
            "$ref": "#/components/schemas/apeMenuItemEntry"
      description: Collections of item groups within the combo to select from.
    apeTopLevelMenuGroupEntry:
      allOf:
      - type: object
        properties:
          "@type":
            type: string
            description: Indicates this is a menu group, which represents a menu screen
              in the POS.
            example: group
            enum:
            - group
      - type: object
        properties:
          id:
            type: string
            description: The menu group ID.
            example: '141948669133028'
          name:
            type: string
            description: The menu group name.
            example: Mains
          color:
            type: string
            description: The color of the button in the POS.
            example: blue
          menuEntry:
            type: array
            description: Array of menu entry objects.
            items:
              type: object
              oneOf:
              - "$ref": "#/components/schemas/apeMenuItemEntry"
              - "$ref": "#/components/schemas/apeMenuDealEntry"
              - "$ref": "#/components/schemas/apeMenuGroupEntry"
              discriminator:
                propertyName: "@type"
                mapping:
                  menuItem: "#/components/schemas/apeMenuItemEntry"
                  menuDeal: "#/components/schemas/apeMenuDealEntry"
                  group: "#/components/schemas/apeMenuGroupEntry"
    apeMenuGroupEntry:
      title: group
      allOf:
      - type: object
        properties:
          "@type":
            type: string
            description: Indicates this is a sub-screen of the menu in the POS. The
              object will have the same structure as the `menuEntryGroups` object
              and may contain any of the three `menuEntry` types.
            example: group
            enum:
            - group
      - type: object
        properties:
          id:
            type: string
            description: The menu group ID.
            example: '141948669133028'
          name:
            type: string
            description: The menu group name.
            example: Mains
          color:
            type: string
            description: The color of the button in the POS.
            example: blue
          menuEntry:
            type: array
            description: Array of menu entry objects.
            items:
              type: object
              oneOf:
              - "$ref": "#/components/schemas/apeMenuItemEntry"
              - "$ref": "#/components/schemas/apeMenuDealEntry"
              - "$ref": "#/components/schemas/apeMenuGroupEntry"
              discriminator:
                propertyName: "@type"
                mapping:
                  menuItem: "#/components/schemas/apeMenuItemEntry"
                  menuDeal: "#/components/schemas/apeMenuDealEntry"
                  group: "#/components/schemas/apeMenuGroupEntry"
    apeMenuItemEntry:
      title: menuItem
      allOf:
      - type: object
        properties:
          "@type":
            type: string
            description: Indicates this is an individual item.
            example: menuItem
            enum:
            - menuItem
      - "$ref": "#/components/schemas/apeMenuItemEntryParent"
      - type: object
        properties:
          asSubItem:
            type: boolean
            description: Indicates whether or not this product is a sub-item that
              cannot be sold alone. Note - when the item is nested under a `menuDeal`
              this will always be false.
          productionInstructionList:
            type: array
            description: Array of production instructions for this product
            items:
              "$ref": "#/components/schemas/apeProductionInstruction"
            example:
            - multiSelectionPermitted: false
              productionInstructionGroupName: Meat cooking
              productionIntructionGroupId: 236025632784487
              productionInstructionList:
              - instruction: Bleu
                ikentooModifierId: 236025632784488
              - instruction: Rare
                ikentooModifierId: 236025632784490
              - instruction: Medium Rare
                ikentooModifierId: 236025632784492
              - instruction: Medium
                ikentooModifierId: 236025632784494
              - instruction: Medium well
                ikentooModifierId: 236025632784496
              - instruction: Well done
                ikentooModifierId: 236025632784498
    apeMenuModifierGroupV2:
      type: object
      description: A product modifier group containing product modifiers to select
        from.
      properties:
        description:
          type: string
          description: Description of the modifier group.
          example: Milk options
        sku:
          type: string
          description: The SKU of the modifier group.
          example: '30'
        mustSelectAnItem:
          type: boolean
          description: Whether or not this is a required selection.
          example: false
        multiSelectionPermitted:
          type: boolean
          description: Whether or not multiple items can be selected from this modifier
            group.
          example: false
        minimumSelection:
          type: integer
          format: int32
          description: The minimum number of items that must be selected from this
            modifier group. If null then no minimum is set.
          example: 0
        maximumSelection:
          type: integer
          format: int32
          description: The maximum number of items that can be selected from this
            modifier group. If null then no maximum is set.
          example: 2
        itemRichData:
          "$ref": "#/components/schemas/apeItemRichData"
        productModifiers:
          description: Array of product modifiers within this modifier group.
          type: array
          items:
            "$ref": "#/components/schemas/apeMenuProductModifierEntryV2"
    apeMenuProductModifierEntryV2:
      title: menuProductModifier
      allOf:
      - type: object
        properties:
          "@type":
            type: string
            description: Indicates this is a product modifier.
            example: menuProductModifier
            enum:
            - menuProductModifier
      - "$ref": "#/components/schemas/apeMenuItemEntryParentV2"
      - type: object
        properties:
          productionInstructionList:
            type: array
            description: Array of production instructions for this modifier
            items:
              "$ref": "#/components/schemas/apeProductionInstruction"
            example:
            - multiSelectionPermitted: false
              productionInstructionGroupName: Meat cooking
              productionIntructionGroupId: 236025632784487
              productionInstructionList:
              - instruction: Bleu
                ikentooModifierId: 236025632784488
              - instruction: Rare
                ikentooModifierId: 236025632784490
              - instruction: Medium Rare
                ikentooModifierId: 236025632784492
              - instruction: Medium
                ikentooModifierId: 236025632784494
              - instruction: Medium well
                ikentooModifierId: 236025632784496
              - instruction: Well done
                ikentooModifierId: 236025632784498
    apeMenuV2:
      properties:
        menuName:
          description: The name of the menu.
          type: string
          example: Main Menu
        menuEntryGroups:
          description: |-
            Menu groups of this menu. The top-level entry will always be of type "group", representing a menu screen. Beneath each `menuEntryGroup` will be a `menuEntry` array containing any combination of one or more menu entries:
            * A `menuItemEntry` represents an individual item and may include product modifier groups.
            * A `menuGroupEntry` represents a menu sub-screen.
            * A `menuDealEntry` represents a combo.
            * A `menuProductModifierEntry` represents a product modifier.
          items:
            "$ref": "#/components/schemas/apeTopLevelMenuGroupEntryV2"
          type: array
        richDataMissing:
          description: Indicates whether or not rich item data is missing, if requested.
          type: boolean
          example: false
        ikentooMenuId:
          type: integer
          description: The unique identifier for the menu.
          example: 141948669132851
          format: int64
        conditionalTaxRules:
          description: Warning that actual tax depends on a POS Account condition
            and may be different from what is provided in this API.
          type: boolean
      type: object
    apeTopLevelMenuGroupEntryV2:
      allOf:
      - type: object
        properties:
          "@type":
            type: string
            description: Indicates this is a menu group.
            example: group
            enum:
            - group
          id:
            type: string
            description: The menu group ID.
            example: '141948669133028'
          name:
            type: string
            description: The menu group name.
            example: Mains
          color:
            type: string
            description: The color of the button in the POS.
            example: blue
          menuEntry:
            type: array
            description: Array of menu entry objects.
            items:
              type: object
              oneOf:
              - "$ref": "#/components/schemas/apeMenuItemEntryV2"
              - "$ref": "#/components/schemas/apeMenuDealEntryV2"
              - "$ref": "#/components/schemas/apeMenuGroupEntryV2"
              - "$ref": "#/components/schemas/apeMenuProductModifierEntryV2"
              discriminator:
                propertyName: "@type"
                mapping:
                  menuItem: "#/components/schemas/apeMenuItemEntryV2"
                  menuDeal: "#/components/schemas/apeMenuDealEntryV2"
                  group: "#/components/schemas/apeMenuGroupEntryV2"
                  menuProductModifier: "#/components/schemas/apeMenuProductModifierEntryV2"
    apeMenuGroupEntryV2:
      title: group
      allOf:
      - type: object
        properties:
          "@type":
            type: string
            description: Indicates this is a menu group.
            example: group
            enum:
            - group
          id:
            type: string
            description: The menu group ID.
            example: '141948669133028'
          name:
            type: string
            description: The menu group name.
            example: Mains
          color:
            type: string
            description: The color of the button in the POS.
            example: blue
          menuEntry:
            type: array
            description: Array of menu entry objects.
            items:
              type: object
              oneOf:
              - "$ref": "#/components/schemas/apeMenuItemEntryV2"
              - "$ref": "#/components/schemas/apeMenuDealEntryV2"
              - "$ref": "#/components/schemas/apeMenuGroupEntryV2"
              - "$ref": "#/components/schemas/apeMenuProductModifierEntryV2"
              discriminator:
                propertyName: "@type"
                mapping:
                  menuItem: "#/components/schemas/apeMenuItemEntryV2"
                  menuDeal: "#/components/schemas/apeMenuDealEntryV2"
                  group: "#/components/schemas/apeMenuGroupEntryV2"
                  menuProductModifier: "#/components/schemas/apeMenuProductModifierEntryV2"
    apeMenuItemEntryV2:
      title: menuItem
      allOf:
      - type: object
        properties:
          "@type":
            type: string
            description: Indicates this is an individual item.
            example: menuItem
            enum:
            - menuItem
      - "$ref": "#/components/schemas/apeMenuItemEntryParentV2"
      - type: object
        properties:
          asSubItem:
            type: boolean
            description: Indicates whether or not this product is a sub-item that
              cannot be sold alone. Note - when the item is nested under a `menuDeal`
              this will always be false.
          productionInstructionList:
            type: array
            description: Array of production instructions for this product
            items:
              "$ref": "#/components/schemas/apeProductionInstruction"
            example:
            - multiSelectionPermitted: false
              productionInstructionGroupName: Meat cooking
              productionIntructionGroupId: 236025632784487
              productionInstructionList:
              - instruction: Bleu
                ikentooModifierId: 236025632784488
              - instruction: Rare
                ikentooModifierId: 236025632784490
              - instruction: Medium Rare
                ikentooModifierId: 236025632784492
              - instruction: Medium
                ikentooModifierId: 236025632784494
              - instruction: Medium well
                ikentooModifierId: 236025632784496
              - instruction: Well done
                ikentooModifierId: 236025632784498
          menuModifierGroups:
            type: array
            description: Array of product modifier groups for this product
            items:
              "$ref": "#/components/schemas/apeMenuModifierGroupV2"
    apeMenuDealEntryV2:
      title: menuDeal
      allOf:
      - type: object
        properties:
          "@type":
            type: string
            description: Indicates the item is a Combo.
            example: menuDeal
            enum:
            - menuDeal
          items:
            description: List of items to select from.
            type: array
            items:
              "$ref": "#/components/schemas/apeMenuItemEntryV2"
          menuDealGroups:
            type: array
            description: Array of Items in the Combo
            items:
              "$ref": "#/components/schemas/apeMenuDealGroupV2"
      - "$ref": "#/components/schemas/apeMenuItemEntryParentV2"
    apeMenuDealGroupV2:
      type: object
      properties:
        description:
          type: string
          description: Description of the combo item grouping.
          example: Side Dishes
        sku:
          type: string
          description: The SKU of the combo item grouping.
          example: '25'
        mustSelectAnItem:
          type: boolean
          description: Whether or not this is a required selection.
          example: true
        multiSelectionPermitted:
          type: boolean
          description: Whether or not multiple items can be selected from this item
            grouping.
          example: true
        minimumSelection:
          type: integer
          format: int32
          description: The minimum number of items that must be selected from this
            item grouping. If null then no minimum is set.
          example: 1
        maximumSelection:
          type: integer
          format: int32
          description: The maximum number of items that can be selected from this
            item grouping. If null then no maximum is set.
          example: 3
        itemRichData:
          "$ref": "#/components/schemas/apeItemRichData"
        items:
          description: List of items to select from.
          type: array
          items:
            "$ref": "#/components/schemas/apeMenuItemEntryV2"
      description: Collections of item groups within the combo to select from.
    apeMenuItemEntryParent:
      properties:
        productName:
          type: string
          description: The name of the item.
          example: Burger
        productPrice:
          type: number
          description: The price of the item.
          example: 10.0
        extraPrice:
          type: number
          description: Additional item price when selected in a combo group.
          example: 1.99
        color:
          type: string
          description: The color of the menu button for this item.
          example: blue
        sku:
          type: string
          description: The SKU of the item.
          example: '25'
        customItemNameEnabled:
          type: boolean
          description: Whether the name of the item can be customized.
          example: false
        pricingStrategy:
          type: string
          description: The pricing type of the item.
          example: PRICE_CANNOT_BE_CUSTOMIZED
          enum:
          - CUSTOMIZED_ITEM_PRICE_WILL_BE_NEGATIVE
          - CUSTOMIZED_ITEM_PRICE_WILL_BE_POSTIVE
          - CUSTOMIZED_ITEM_PRICE_WILL_BE_A_PERCENTAGE_OF_TOTAL
          - PRICE_CANNOT_BE_CUSTOMIZED
        itemRichData:
          "$ref": "#/components/schemas/apeItemRichData"
        defaultTaxAmount:
          description: The tax amount as calculated at the default tax rate (a sum
            for multiple taxes).
          type: number
          example: 1.5
        defaultTaxPercentage:
          description: The default tax percentage for this item (a sum for multiple
            taxes).
          type: number
          example: 15.0
        taxIncludedInPrice:
          description: Whether or not tax is included in the price of the item.
          type: boolean
          example: false
        conditionalTaxRules:
          description: Warning that actual tax depends on a POS Account condition
            and may be different from what is provided in this API.
          type: boolean
        taxes:
          description: Detailed tax info
          items:
            "$ref": "#/components/schemas/apeMenuItemTax"
          type: array
    apeMenuItemEntryParentV2:
      properties:
        productName:
          type: string
          description: The name of the item.
          example: Burger
        productPrice:
          type: number
          description: The price of the item.
          example: 10.0
        extraPrice:
          type: number
          description: Additional item price when selected in a combo group.
          example: 1.99
        color:
          type: string
          description: The color of the menu button for this item.
          example: blue
        sku:
          type: string
          description: The SKU of the item.
          example: '25'
        customItemNameEnabled:
          type: boolean
          description: Whether the name of the item can be customized.
          example: false
        pricingStrategy:
          type: string
          description: The pricing type of the item.
          example: PRICE_CANNOT_BE_CUSTOMIZED
          enum:
          - CUSTOMIZED_ITEM_PRICE_WILL_BE_NEGATIVE
          - CUSTOMIZED_ITEM_PRICE_WILL_BE_POSTIVE
          - CUSTOMIZED_ITEM_PRICE_WILL_BE_A_PERCENTAGE_OF_TOTAL
          - PRICE_CANNOT_BE_CUSTOMIZED
        itemRichData:
          "$ref": "#/components/schemas/apeItemRichData"
        defaultTaxAmount:
          description: The tax amount as calculated at the default tax rate (a sum
            for multiple taxes).
          type: number
          example: 1.5
        defaultTaxPercentage:
          description: The default tax percentage for this item (a sum for multiple
            taxes).
          type: number
          example: 15.0
        taxIncludedInPrice:
          description: Whether or not tax is included in the price of the item.
          type: boolean
          example: false
        conditionalTaxRules:
          description: Warning that actual tax depends on a POS Account condition
            and may be different from what is provided in this API.
          type: boolean
        taxes:
          description: Detailed tax info
          items:
            "$ref": "#/components/schemas/apeMenuItemTax"
          type: array
    apeMenuItemTax:
      type: object
      properties:
        description:
          type: string
          description: Tax description as it appears on a POS and receipt.
          example: 5% GST
        amount:
          type: number
          description: The amount of Tax applied by default by this Tax, this can
            change dynamically at time of sale.
          example: 12.55
        percentage:
          type: number
          description: The percentage of Tax applied by default by this Tax, this
            can change dynamically at time of sale.
          example: 5.0
    apeDiscount:
      type: object
      properties:
        name:
          type: string
          description: The discount name as configured in merchant account.
          example: Staff Discount
        code:
          type: string
          description: The discount code as configured in merchant account.
          example: STAFF
        discountPercentage:
          type: number
          description: The discount percentage, may be fractional. A discount can
            be a percentage or an amount, but not both.
          example: 15
        discountAmount:
          type: number
          description: The discount amount, may be fractional. A discount can be a
            percentage or an amount, but not both.
          example: 5
    apeEventResource:
      description: Event to listen to by resource
      example:
        name: DELIVERED
        resource: order
      properties:
        name:
          type: string
          description: |-
            Events to subscribe to.
            * order: `DELIVERED`
            * item: `SALES_RESTRICTION_UPDATED` - Business locations for this webhook must be specified [here](https://api-docs.lsk.lightspeed.app/operation/operation-apegetwebhookbusinesslocations).

            The following are always sent:
            * Account: `CLOSED` and `CHECK_WAS_UPDATED`.
            * Order: `FAILURE`, `READY_FOR_PICKUP` and `CANCELLED`.
            * Payment: `SUCCESS` and `FAILURE`.
        resource:
          enum:
          - order
          - payment
          - item
          - order_api
          type: string
      type: object
    apeWebhookEndpoint:
      required:
      - endpointId
      - url
      properties:
        endpointId:
          example: MY-AWESOME-ENDPOINT-ID
          description: The unique endpoint ID, for example the integration name. Case
            sensitive.
          type: string
        url:
          example: https://webhook.site/1dc40b86-3d0d
          description: The URL which this endpoint points to.
          type: string
        withBasicAuth:
          default: false
          description: If basic auth should be used, defaults to false.
          type: boolean
          example: true
        username:
          example: username
          description: The username for basic auth.
          type: string
        password:
          example: password
          description: The password for basic auth.
          type: string
        provideAccount:
          description: Whether or not to include account info in the notification.
          example: true
          default: false
          type: boolean
        expandTransactions:
          example: true
          description: Whether or not to include transaction lines in the notification.
          default: false
          type: boolean
        expandPayments:
          example: true
          description: Whether or not to include payment lines in the notification.
          default: false
          type: boolean
        subscribeTo:
          items:
            "$ref": "#/components/schemas/apeEventResource"
          type: array
      type: object
    apeWebhookEndpointBusinessLocationDto:
      type: object
      properties:
        businessLocationId:
          type: integer
          format: int64
          description: The unique identifier for the business location.
          example: 45454565682155
        createdAt:
          type: string
          format: date-time
          description: Timestamp when this association was created.
          example: '2023-11-07T19:15:05.043+0000'
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when this association was last updated.
          example: '2023-11-07T19:15:05.043+0000'
        warnings:
          description: A list of warnings that occurred during the request, but which
            did not prevent a successful response.  For instance, if the Business
            Location does not have the required POS app version to support item availability.
          type: array
          items:
            "$ref": "#/components/schemas/apeCurrentWarning"
      required:
      - businessLocationId
    apeBaseWebhookInformation:
      type: object
      properties:
        reason:
          description: Reason for failure if applicable.
          type: string
        thirdPartyReference:
          description: Third-party reference you provided when the order or payment
            was placed.
          type: string
        businessLocationId:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        ikentooAccountIdentifier:
          description: The K-series account identifier for a SUCCESS event (V3 format)
          type: string
        iKentooAccountId:
          description: The K-series account identifier for a SUCCESS event (V2 format)
          deprecated: true
          type: integer
          format: int64
    apeTable:
      description: The tables under this floorplan.
      properties:
        number:
          description: The table number.
          format: int32
          type: integer
          example: 1
        reference:
          description: The table reference.
          type: string
          example: abcdefg123456
        id:
          description: The unique identifier for this table.
          type: string
          example: '141948669132977'
        active:
          description: If the table is active.
          type: boolean
          example: true
        description:
          description: The table description.
          type: string
          example: Table 1
        defaultClientCount:
          description: The default client count for this table.
          format: int32
          type: integer
          example: 4
      type: object
    apeAccountProfile:
      properties:
        id:
          format: int64
          type: integer
          description: The unique identifier for the order profile.
          example: 12454575601144
        code:
          type: string
          description: A short code representing the order profile.
          example: takeaway
        name:
          type: string
          example: Takeaway
          description: The system display name for the order profile.
        deliveryMode:
          enum:
          - NONE
          - TAKE_AWAY
          - DELIVERY
          type: string
          example: TAKE_AWAY
          description: Specifies the delivery mode for the order profile.
      type: object
    apeAccountProfiles:
      properties:
        businessLocationId:
          "$ref": "#/components/schemas/apeBusinessLocationId"
        accountProfileList:
          items:
            "$ref": "#/components/schemas/apeAccountProfile"
          type: array
      type: object
    apeLocalOrderItemLine:
      properties:
        quantity:
          example: 1
          description: Quantity of item to be ordered.
          type: integer
          format: int32
        sku:
          example: UGG-BB-PUR-06
          maxLength: 25
          description: The SKU of the item to be ordered.
          type: string
        customItemName:
          example: My Custom Item Name
          description: The custom name to be used, if overwriting is permitted for
            this item.
          type: string
        customItemPrice:
          example: 10.0
          description: The custom price to be used, if custom pricing is permitted
            for this item.
          type: number
        discountAmountOverride:
          description: The custom discount amount applied to this item. Only one of
            `discountAmountOverride` or `discountPercentOverride` can be set. Must
            be used in conjunction with a [discountCode](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-items-discountcode)
            and this discount must be configured as a "manual discount" in the POS.
            See [Understanding Discounts](https://k-series-support.lightspeedhq.com/hc/en-us/articles/1260804657089-Understanding-discounts).
          type: number
          example: 5.0
        discountPercentOverride:
          description: The custom percentage discount applied to this item. Only one
            of `discountAmountOverride` or `discountPercentOverride` can be set. Must
            be used in conjunction with a [discountCode](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-items-discountcode)
            and this discount must be configured as a "manual discount" in the POS.
            See [Understanding Discounts](https://k-series-support.lightspeedhq.com/hc/en-us/articles/1260804657089-Understanding-discounts).
          type: number
          example: 10.0
        modifiers:
          description: Collection of [modifiers](https://api-docs.lsk.lightspeed.app/operation/operation-apeloadallmodifiers)
            to be applied to this item.
          type: array
          items:
            "$ref": "#/components/schemas/apeItemModifier"
        discountCode:
          example: FIVEPERCENT
          description: The discount code being applied to this item, if applicable.
          type: string
        course:
          example: 2
          description: The course number for this item, if applicable.
          minimum: 0
          type: integer
          format: int32
        subItems:
          description: The sub-items applied to this item.
          items:
            "$ref": "#/components/schemas/apeSubItemOrderLine"
          type: array
      type: object
      required:
      - quantity
      - sku
    apeToGoOrderItemLine:
      properties:
        quantity:
          example: 1
          description: Quantity of item to be ordered.
          type: integer
          format: int32
        sku:
          example: UGG-BB-PUR-06
          maxLength: 25
          description: The SKU of the item to be ordered.
          type: string
        customItemName:
          example: My Custom Item Name
          description: The custom name to be used, if overwriting is permitted for
            this item.
          type: string
        customItemPrice:
          example: 10.0
          description: The custom price to be used, if custom pricing is permitted
            for this item.
          type: number
        discountAmountOverride:
          description: The custom discount amount applied to this item. Only one of
            `discountAmountOverride` or `discountPercentOverride` can be set.
          type: number
          example: 5.0
        discountPercentOverride:
          description: The custom percentage discount applied to this item. Only one
            of `discountAmountOverride` or `discountPercentOverride` can be set.
          type: number
          example: 10.0
        modifiers:
          description: Collection of [modifiers](https://api-docs.lsk.lightspeed.app/operation/operation-apeloadallmodifiers)
            to be applied to this item.
          type: array
          items:
            "$ref": "#/components/schemas/apeItemModifier"
        discountCode:
          example: FIVEPERCENT
          description: The discount code being applied to this item, if applicable.
          type: string
        subItems:
          type: array
          items:
            "$ref": "#/components/schemas/apeSubItemOrderLine"
      type: object
      required:
      - quantity
      - sku
    apeSubItemOrderLine:
      required:
      - quantity
      - sku
      properties:
        quantity:
          example: 1
          description: Quantity of sub-item to be ordered.
          type: integer
          format: int32
        sku:
          example: ABC-123
          maxLength: 25
          description: The SKU of the sub-item to be ordered.
          type: string
        customItemName:
          example: My Custom Sub-Item Name
          description: The custom name to be used if overwriting is supported for
            this sub-item.
          type: string
        customItemPrice:
          example: 2.0
          description: The custom price to be used if overwriting is supported for
            this sub-item.
          type: number
        modifiers:
          description: Collection of modifiers to be applied to this sub-item.
          items:
            "$ref": "#/components/schemas/apeItemModifier"
          type: array
        subItems:
          description: Product modifiers applied to this item.
          items:
            "$ref": "#/components/schemas/apeSubItemOrderLine"
          type: array
      type: object
    availability-apiCreateAvailabilityDto:
      type: object
      properties:
        snoozeUntil:
          format: date-time
          type: string
        provider:
          type: string
      required:
      - snoozeUntil
      - provider
    availability-apiItemWIthAvailability:
      type: object
      properties:
        sku:
          type: string
          description: Items sku
        active:
          type: boolean
          description: Items is active
        businessLocationId:
          type: string
          description: Business location id
        id:
          type: string
          description: Item id
        itemType:
          type: string
          description: Item type
        price:
          type: number
          description: Item price
        status:
          type: string
          description: Item status
          enum:
          - ACTIVE
          - INACTIVE
          - DISCONNECTED
        snoozeUntil:
          format: date-time
          type: string
          description: Items snoozing end time
      required:
      - sku
      - active
      - businessLocationId
      - id
      - itemType
      - price
      - status
      - snoozeUntil
    availability-apiCurrentInfo:
      type: object
      properties:
        page:
          type: number
          description: Current page metadata information
        pageSize:
          type: number
          description: Current page size metadata information
      required:
      - page
      - pageSize
    availability-apiPaginatedItemsMetadata:
      type: object
      properties:
        current:
          description: Current page metadata information
          allOf:
          - "$ref": "#/components/schemas/availability-apiCurrentInfo"
        total:
          type: number
          description: Total elements metadata information
        totalPages:
          type: number
          description: Total pages metadata information
      required:
      - current
      - total
      - totalPages
    availability-apiProviderDto:
      type: object
      properties:
        provider:
          type: string
          description: The provider
        snoozeUntil:
          format: date-time
          type: string
          description: The item snooze end time
      required:
      - provider
      - snoozeUntil
    availability-apiItemWIthRestriction:
      type: object
      properties:
        sku:
          type: string
          description: Item sku
        businessLocationId:
          type: string
          description: Business location id
        id:
          type: string
          description: The availability id
        count:
          type: number
          description: The count of available items
        countUpdatedAt:
          format: date-time
          type: string
          description: The last update date for the count
      required:
      - sku
      - businessLocationId
      - id
      - count
      - countUpdatedAt
    backendv3AccountDetailDto:
      type: object
      properties:
        accountIdentifier:
          type: string
        businessDeviceId:
          type: integer
          format: int64
        businessLocationId:
          type: integer
          format: int64
        cancelled:
          type: boolean
        clientCount:
          type: number
          format: double
        closeDate:
          type: string
          format: date-time
        consumerId:
          type: integer
          format: int64
        currencyCode:
          type: string
        currencyId:
          type: integer
          format: int64
        currentAmount:
          type: number
          format: double
        debtInvoiceId:
          type: integer
          format: int64
        deviceId:
          type: integer
          format: int64
        deviceName:
          type: string
        events:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3DeviceEventDto"
        id:
          type: integer
          format: int64
        identifier:
          type: string
        name:
          type: string
        openDate:
          type: string
          format: date-time
        paidAmount:
          type: number
          format: double
        paymentLines:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3PaymentLineDto"
        receipt:
          type: string
        receiptId:
          type: string
        staffId:
          type: integer
          format: int64
        staffName:
          type: string
        transactionLines:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3TransactionLineDto"
        updateDate:
          type: string
          format: date-time
        uuid:
          type: string
        version:
          type: integer
          format: int32
    backendv3AccountNameType:
      type: string
      enum:
      - ALL
      - DIRECT
      - TABLE
      - DELIVERY
      - ONLINE
    backendv3AccountObjectDto:
      type: object
      properties:
        active:
          type: boolean
        code:
          type: string
        defaultClientCount:
          type: integer
          format: int32
        description:
          type: string
          maxLength: 128
          minLength: 0
        errors: {}
        floorPlanH:
          type: integer
          format: int32
        floorPlanW:
          type: integer
          format: int32
        floorPlanX:
          type: integer
          format: int32
        floorPlanY:
          type: integer
          format: int32
        id:
          type: integer
          format: int64
        identifier:
          type: integer
          format: int32
        reference:
          type: string
        shape:
          "$ref": "#/components/schemas/backendv3AccountObjectShape"
      required:
      - description
    backendv3AccountObjectShape:
      type: string
      enum:
      - SQUARE
      - ROUND
    backendv3AccountTypeDto:
      type: string
      enum:
      - CLIENT
      - TECHNICAL_INTERNAL
      - DEMO_TEMPLATE
      - EVENT
      - RESELLER
      - OTHER
    backendv3AccountingAccountDto:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
        taxName:
          type: string
        taxRate:
          type: number
          format: double
        taxType:
          type: string
        type:
          type: string
    backendv3AccountingEngineType:
      type: string
      enum:
      - NONE
      - XERO
      - WINBIZ
    backendv3AccountingGroupDto:
      type: object
      properties:
        available:
          type: boolean
        countForCovers:
          type: boolean
        errors: {}
        id:
          type: integer
          format: int64
        itemCount:
          type: integer
          format: int64
        locationSpecific:
          "$ref": "#/components/schemas/backendv3AccountingGroupLocationSpecificDto"
        name:
          type: string
          maxLength: 25
          minLength: 0
        productionCenter:
          type: string
          maxLength: 1023
          minLength: 0
        reference:
          type: string
          maxLength: 128
          minLength: 0
        secondaryProductionCenter:
          type: string
          maxLength: 1023
          minLength: 0
        siCount:
          type: integer
          format: int64
        statisticGroup:
          type: string
          maxLength: 500
          minLength: 0
        taxProfileCode:
          type: string
        taxProfileDescription:
          type: string
        taxProfileId:
          type: integer
          format: int64
        unlinkedCount:
          type: integer
          format: int64
      required:
      - name
    backendv3AccountingGroupLocationSpecificDto:
      type: object
      properties:
        exemptFromMandatoryBilling:
          type: boolean
    backendv3AccountingGroupParametersV2QsrDto:
      type: object
      properties:
        departmentId:
          type: string
    backendv3AccountingMappingDto:
      type: object
      properties:
        accountCode:
          type: string
        entityDescription:
          type: string
        entityId:
          type: integer
          format: int64
        valid:
          type: boolean
    backendv3Activity:
      type: string
      enum:
      - NEVER
      - LAST_DAY
      - LAST_WEEK
      - LAST_MONTH
      - LAST_YEAR
    backendv3AdyenTerminalConfigDto:
      type: object
      properties:
        printOnTerminal:
          type: boolean
      required:
      - printOnTerminal
    backendv3AggregationType:
      type: string
      enum:
      - NONE_OR_ONE_OF
      - ONE_OF
      - MANY_OF
      - ALL
      - MODIFIER
      - MODIFIER_GROUP
    backendv3AllergenTranslation:
      type: object
      description: Allergen translation
      properties:
        localeCode:
          type: string
          description: Language locale (eg. 'en' or 'en_US').
          example: en
        text:
          type: string
          description: Translation in the language of the locale.
      required:
      - localeCode
      - text
    backendv3BackgroundTaskStatusDto:
      type: string
      enum:
      - SUBMITTED
      - PARTIALLY_SUCCEEDED
      - RUNNING
      - EXECUTION_TIMEOUT
      - FAILED
      - CANCELLED
      - SUCCEEDED
    backendv3BaseButtonDtoObject:
      type: object
      properties:
        buttons:
          type: array
          items: {}
          uniqueItems: true
        color:
          type: string
        fieldToCopiedObject:
          writeOnly: true
        id:
          type: integer
          format: int64
        name:
          type: string
    backendv3BillingDetailsDto:
      type: object
      properties:
        addressLine1:
          type: string
          maxLength: 64
          minLength: 0
        addressLine2:
          type: string
          maxLength: 64
          minLength: 0
        ccEmailAddresses:
          type: string
          maxLength: 1024
          minLength: 0
        city:
          type: string
          maxLength: 64
          minLength: 0
        companyName:
          type: string
          maxLength: 256
          minLength: 0
        country:
          type: string
          maxLength: 8
          minLength: 0
        emailAddress:
          type: string
          format: email
          maxLength: 128
          minLength: 0
        errors: {}
        firstName:
          type: string
          maxLength: 128
          minLength: 0
        fiscalIdentifier:
          type: string
          maxLength: 32
          minLength: 0
        lastName:
          type: string
          maxLength: 128
          minLength: 0
        phone:
          type: string
          maxLength: 32
          minLength: 0
        state:
          type: string
          maxLength: 64
          minLength: 0
        tcAccepted:
          type: boolean
        zipCode:
          type: string
          maxLength: 64
          minLength: 0
      required:
      - city
      - companyName
      - country
      - emailAddress
    backendv3BillingEventDto:
      type: object
      properties:
        billingPeriod:
          type: string
        effectiveDate:
          type: string
          format: date-time
        eventId:
          type: string
        eventType:
          type: string
        phase:
          type: string
        priceList:
          type: string
        product:
          type: string
        requestedDate:
          type: string
          format: date-time
    backendv3BillingInvoiceItemDto:
      type: object
      properties:
        description:
          type: string
        discountAmount:
          type: number
        discountedAmount:
          type: number
        effectiveAmount:
          type: number
        id:
          type: integer
          format: int64
        normalAmount:
          type: number
        quantity:
          type: integer
          format: int32
        totalAmount:
          type: number
        totalDiscountAmount:
          type: number
    backendv3BillingInvoicePaymentDto:
      type: object
      properties:
        paymentDate:
          type: string
          format: date-time
        paymentMethod:
          type: string
        reference:
          type: string
    backendv3BillingInvoiceStatusDto:
      type: string
      enum:
      - OPEN
      - PAID
      - CANCELLED
    backendv3BillingPlanDto:
      type: object
      properties:
        addOns:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3BillingProductDto"
        addOnsDevices:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3BillingProductDto"
        allowed:
          type: boolean
        description:
          type: string
        discountPercent:
          type: integer
          format: int32
        discounted:
          type: boolean
        free:
          type: boolean
        id:
          type: string
        name:
          type: string
        normalPrice:
          type: number
        price:
          type: number
        priceList:
          type: string
        product:
          "$ref": "#/components/schemas/backendv3BillingProductDto"
        recurringPeriod:
          "$ref": "#/components/schemas/backendv3BillingRecurringPeriodDto"
        setupFee:
          type: number
        visible:
          type: boolean
    backendv3BillingProductDto:
      type: object
      properties:
        addOnSelected:
          type: boolean
        allowedDevices:
          type: integer
          format: int32
        description:
          type: string
        id:
          type: string
        name:
          type: string
        normalPrice:
          type: number
        price:
          type: number
    backendv3BillingRecurringPeriodDto:
      type: string
      enum:
      - MONTH
      - YEAR
    backendv3BillingRecurringTurnoverDto:
      type: object
      properties:
        averagePrice:
          type: number
        monthlyPerClient:
          type: number
        periods:
          type: integer
          format: int64
        planCount:
          type: integer
          format: int64
        revenue:
          type: number
        yearlyPerClient:
          type: number
        yearlyRevenue:
          type: number
    backendv3BillingStateDto:
      type: string
      enum:
      - UNKNOWN
      - TRIAL
      - NORMAL
      - MIGRATING
      - OVERDUE
      - CANCELLED
    backendv3BillingSubscriptionDto:
      type: object
      properties:
        accountId:
          type: string
        billingEndDate:
          type: string
          format: date-time
        billingPeriod:
          type: string
        billingStartDate:
          type: string
          format: date-time
        bundleId:
          type: string
        cancelledDate:
          type: string
          format: date-time
        chargedThroughDate:
          type: string
          format: date-time
        deletedEvents:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3BillingEventDto"
        events:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3BillingEventDto"
        externalKey:
          type: string
        newEvents:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3BillingEventDto"
        priceList:
          type: string
        productCategory:
          type: string
        productName:
          type: string
        startDate:
          type: string
          format: date-time
        subscriptionId:
          type: string
    backendv3BillingTurnoverDto:
      type: object
      properties:
        amountInvoiced:
          type: number
        amountPaid:
          type: number
        count:
          type: integer
          format: int64
        nonPayingCount:
          type: integer
          format: int64
        payingCount:
          type: integer
          format: int64
    backendv3BusinessDeviceDto:
      type: object
      properties:
        active:
          type: boolean
        address:
          type: string
        altitude:
          type: number
        appVersion:
          type: string
        bssid:
          type: string
        btPeripheralSupport:
          type: boolean
        businessLocationId:
          type: integer
          format: int64
        cashDrawerDeviceId:
          type: integer
          format: int64
        clientTime:
          type: string
          format: date-time
        clientTimezone:
          type: string
        clientVersion:
          type: string
        currentPeriod:
          type: integer
          format: int32
          deprecated: true
        customerDisplayBanner:
          type: string
        customerDisplayTimeout:
          type: integer
          format: int32
        defaultSalesPointId:
          type: integer
          format: int64
        deviceName:
          type: string
        deviceState:
          type: string
        directAccountsPrefix:
          type: integer
          format: int32
        directLocalOrders:
          type: boolean
        errors: {}
        externalPriceDevice:
          type: string
        gatewayPort:
          type: integer
          format: int32
        getiButtonDeviceIpAddress:
          type: string
        id:
          type: integer
          format: int64
        ipAddress:
          type: string
        kdsAccountingGroupIds:
          type: array
          items:
            type: integer
            format: int64
          uniqueItems: true
        kdsProductionCenterFilter:
          type: boolean
        kdsReceiptMode:
          type: boolean
        kmsHost:
          type: boolean
        labelPrinterDevice:
          type: string
        lastActivity:
          type: string
          format: date-time
        lastConfiguration:
          type: string
          format: date-time
        latitude:
          type: number
        listenForLocalOrders:
          type: boolean
        longitude:
          type: number
        maxCollectionCodeCount:
          type: integer
          format: int32
        model:
          type: string
        modelName:
          type: string
        name:
          type: string
          maxLength: 8
          minLength: 0
        newPOSConfigurationId:
          type: integer
          format: int64
        notePrinterProfileId:
          type: integer
          format: int64
        osVersion:
          type: string
        payTerminalId:
          type: integer
          format: int64
          deprecated: true
        payTerminals:
          type: array
          items:
            type: integer
            format: int64
        pmsServerAddress:
          type: string
        posDisplayDeviceId:
          type: integer
          format: int64
        primaryPayTerminalId:
          type: integer
          format: int64
        printerProfileId:
          type: integer
          format: int64
        reloadNow:
          type: boolean
        reloadRequested:
          type: boolean
        resetCollectionCode:
          type: boolean
        role:
          "$ref": "#/components/schemas/backendv3DeviceRoleDto"
        salesPointProfileOverride:
          type: boolean
        scoreDelta:
          type: integer
          format: int32
        serverVersion:
          type: string
        sharingScore:
          type: integer
          format: int32
        ssidName:
          type: string
        stockId:
          type: integer
          format: int64
        stockRedirections:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3StockRedirectionDto"
          uniqueItems: true
        transactionTagIds:
          type: array
          items:
            type: integer
            format: int64
          uniqueItems: true
        uuid:
          type: string
      required:
      - name
    backendv3BusinessDeviceLiteDto:
      type: object
      properties:
        clientVersion:
          type: string
        id:
          type: integer
          format: int64
        isActive:
          type: boolean
        lastConfiguration:
          type: string
          format: date-time
        name:
          type: string
        reloadNow:
          type: boolean
        reloadRequested:
          type: boolean
        role:
          "$ref": "#/components/schemas/backendv3DeviceRoleDto"
        serverVersion:
          type: string
        sharingScore:
          type: integer
          format: int32
    backendv3BusinessDto:
      type: object
      properties:
        active:
          type: boolean
        addTransactionRestricted:
          type: boolean
        advancedStockManagement:
          type: boolean
        alphabeticOrder:
          type: boolean
        cancelReceiptRestricted:
          type: boolean
        centsRestricted:
          type: boolean
        costPriceTaxIncluded:
          type: boolean
        createdOn:
          type: string
          format: date-time
        currencyCode:
          type: string
        currencyRestricted:
          type: boolean
        editForeignCurrencyRestricted:
          type: boolean
        editReceiptRestricted:
          type: boolean
        finalBillRestricted:
          type: boolean
        fiscalNoCancel:
          type: boolean
        fiscalNoDuplicate:
          type: boolean
        fiscalNoNegative:
          type: boolean
        fiscalNote:
          type: boolean
        fiscalPrintingRestriction:
          type: boolean
        fiscalReceipt:
          type: boolean
        giftCardMaxAmount:
          type: number
        id:
          type: integer
          format: int64
        locale:
          type: string
        managedBilling:
          type: boolean
        multiSite:
          type: boolean
        name:
          type: string
        onDemandGiftCardEnabled:
          type: boolean
        priceListEnabled:
          type: boolean
        productModifiersEnabled:
          type: boolean
        referenceDate:
          type: string
          format: date-time
        reseller:
          "$ref": "#/components/schemas/backendv3ResellerDto"
        salesforceId:
          type: string
        settleDebtorsInvoiceRestricted:
          type: boolean
        status:
          "$ref": "#/components/schemas/backendv3BusinessStatus"
        taxIncluded:
          type: boolean
        tipsRestricted:
          type: boolean
        unlinkedDebtorsTransactionsRestricted:
          type: boolean
    backendv3BusinessLocationDto:
      type: object
      properties:
        accountOwner:
          type: string
        accountType:
          type: string
        accountingEnabled:
          type: boolean
        accountingReference:
          type: string
          maxLength: 128
          minLength: 0
        active:
          type: boolean
        addressLine1:
          type: string
          maxLength: 64
          minLength: 0
        addressLine2:
          type: string
          maxLength: 64
          minLength: 0
        airPrintCSS:
          type: string
          maxLength: 4096
          minLength: 0
        businessActive:
          type: boolean
        businessCostPriceTaxIncluded:
          type: boolean
        businessCreatedOn:
          type: string
          format: date-time
        businessCurrency:
          type: string
          minLength: 1
        businessId:
          type: integer
          format: int64
        businessLocale:
          type: string
          maxLength: 16
          minLength: 0
        businessName:
          type: string
          maxLength: 128
          minLength: 0
        businessReferenceDate:
          type: string
          format: date-time
        businessStatus:
          "$ref": "#/components/schemas/backendv3BusinessStatus"
        businessTaxIncluded:
          type: boolean
        city:
          type: string
          maxLength: 64
          minLength: 0
        clearingAccount:
          type: string
          maxLength: 20
          minLength: 0
        consumerMessage:
          type: string
        contractStartDate:
          type: string
          format: date-time
        country:
          type: string
          maxLength: 8
          minLength: 0
        createdOn:
          type: string
          format: date-time
        crmAccountId:
          type: string
        defaultStockId:
          type: integer
          format: int64
        errors: {}
        externalProvisioningId:
          type: string
        fiscalCsvFormat:
          type: boolean
        fiscalIdentifier:
          type: string
          maxLength: 32
          minLength: 0
        halfServiceHour:
          type: integer
          format: int32
        hideCustomerBilling:
          type: boolean
        id:
          type: integer
          format: int64
        languageCode:
          type: string
        localOrdersKey:
          type: string
        majorVersionUpgradeAllowed:
          type: boolean
        managedBilling:
          type: boolean
        managedInvoicing:
          type: boolean
        maxCovers:
          type: integer
          format: int32
        maxReports:
          type: integer
          format: int32
        migratedProvisioning:
          type: boolean
        moveToProdDate:
          type: string
          format: date-time
        name:
          type: string
          maxLength: 512
          minLength: 0
        period:
          type: integer
          format: int32
        phone:
          type: string
          maxLength: 32
          minLength: 0
        preV3:
          type: boolean
        provisioningMigrationDate:
          type: string
          format: date-time
        receiptFooterLastLine:
          type: string
        requiredPosMajorVersion:
          type: integer
          format: int32
        resellerName:
          type: string
        salesforceId:
          type: string
        shifts:
          type: string
        startOfTheDay:
          type: integer
          format: int32
        startOfTheWeek:
          type: integer
          format: int32
        state:
          type: string
          maxLength: 64
          minLength: 0
        status:
          "$ref": "#/components/schemas/backendv3BusinessStatus"
        template:
          type: boolean
        timeTrackingEnabled:
          type: boolean
        timezone:
          type: string
          maxLength: 64
          minLength: 0
        tipsAccount:
          type: string
          maxLength: 20
          minLength: 0
        unitSystem:
          "$ref": "#/components/schemas/backendv3UnitSystemDto"
        version3:
          type: boolean
        versionDates:
          type: object
          additionalProperties:
            type: string
            format: date-time
        zipCode:
          type: string
          maxLength: 64
          minLength: 0
      required:
      - businessCurrency
      - businessLocale
      - businessName
      - city
      - country
      - name
      - timezone
      - zipCode
    backendv3BusinessLocationWebExtensionInfoDto:
      type: object
      properties:
        active:
          type: boolean
        errors: {}
        id:
          type: integer
          format: int64
        name:
          type: string
        webExtensions:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3WebExtensionDto"
    backendv3BusinessStatus:
      type: string
      enum:
      - SIGNUP
      - EMPTY
      - TRIAL
      - PENDING_PRODUCTION
      - PRODUCTION
    backendv3ButtonType:
      type: string
      enum:
      - ITEM
      - ITEM_GROUP
      - ITEM_SEQUENCE
      - MODIFIER
      - TAG
      - GROUP
      - MODIFIER_VALUE
      - EMPTY
      - DISCOUNT
      - TRANSFER
      - WEB_EXTENSION
      - MODIFIER_GROUP
      - MODIFIER_GROUP_OPTION
    backendv3CardBatchDto:
      type: object
      properties:
        business:
          "$ref": "#/components/schemas/backendv3BusinessDto"
        description:
          type: string
        errors: {}
        id:
          type: integer
          format: int64
        importSource:
          type: string
        loyaltyProgram:
          "$ref": "#/components/schemas/backendv3LoyaltyProgramDto"
        name:
          type: string
          minLength: 1
        offline:
          type: boolean
        onDemand:
          type: boolean
        punchLines:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3PunchLineDto"
        size:
          type: integer
          format: int32
          minimum: 1
        type:
          "$ref": "#/components/schemas/backendv3CardType"
        unusedCardsCount:
          type: integer
          format: int64
      required:
      - name
    backendv3CardDto:
      type: object
      properties:
        account:
          "$ref": "#/components/schemas/backendv3ConsumerAccountDto"
        cardBatch:
          "$ref": "#/components/schemas/backendv3CardBatchDto"
        errors: {}
        id:
          type: integer
          format: int64
        importedCardId:
          type: string
        lastUsed:
          type: string
          format: date-time
        offline:
          type: boolean
        qrCodeImageData:
          type: string
        qrCodeString:
          type: string
        revocationTime:
          type: string
          format: date-time
        revoked:
          type: boolean
        serial:
          type: string
          format: uuid
        type:
          "$ref": "#/components/schemas/backendv3CardType"
      required:
      - serial
      - type
    backendv3CardEventType:
      type: string
      enum:
      - LOAD
      - LINK
      - UNLINK
      - REVOKE
      - UNREVOKE
      - NOTIFICATION
    backendv3CardSort:
      type: object
      properties:
        field:
          "$ref": "#/components/schemas/backendv3PropertyExpression"
        order:
          "$ref": "#/components/schemas/backendv3SortOrder"
    backendv3CardType:
      type: string
      enum:
      - VIP
      - POINTS
      - GIFT
      - PUNCH
      - ID
    backendv3Category:
      type: string
      enum:
      - NOT_TAXED
      - AVERAGED_REDUCED
      - AVERAGED_REGULAR
      - REDUCED
      - REGULAR
      - HIGH
      - MID
      - LOW
      - ZERO_RATE
      - PROVINCIAL
      - FEDERAL
    backendv3CompletionMode:
      type: string
      enum:
      - IMMEDIATE
      - ON_DELIVERY
      - ON_DELIVERED
      - MANUALLY
    backendv3ComponentDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        itemId:
          type: integer
          format: int64
        percentLoss:
          type: number
        product:
          "$ref": "#/components/schemas/backendv3ProductRefDto"
        productContent:
          "$ref": "#/components/schemas/backendv3QuantityDto"
        quantity:
          "$ref": "#/components/schemas/backendv3QuantityDto"
        stock:
          "$ref": "#/components/schemas/backendv3StockRefDto"
    backendv3ConsumerAccountDto:
      type: object
      properties:
        businessLocation:
          "$ref": "#/components/schemas/backendv3BusinessLocationDto"
        consumer:
          "$ref": "#/components/schemas/backendv3ConsumerDto"
        id:
          type: integer
          format: int64
    backendv3ConsumerContactDto:
      type: object
      properties:
        addressLine1:
          type: string
          maxLength: 255
          minLength: 0
        addressLine2:
          type: string
          maxLength: 255
          minLength: 0
        city:
          type: string
          maxLength: 128
          minLength: 0
        companyName:
          type: string
          maxLength: 128
          minLength: 0
        country:
          type: string
          maxLength: 8
          minLength: 0
        creationDate:
          type: string
          format: date-time
        destinationCode:
          type: string
          maxLength: 64
          minLength: 0
        emailReceipts:
          type: boolean
        errors: {}
        firstName:
          type: string
          maxLength: 128
          minLength: 0
        fiscalCode:
          type: string
          maxLength: 128
          minLength: 0
        fullName:
          type: string
        id:
          type: integer
          format: int64
        lastName:
          type: string
          maxLength: 128
          minLength: 0
        phoneNumber1:
          type: string
          maxLength: 64
          minLength: 0
        phoneNumber2:
          type: string
          maxLength: 64
          minLength: 0
        readonlyFields:
          type: array
          items:
            type: string
          uniqueItems: true
        salutation:
          type: string
          maxLength: 64
          minLength: 0
        state:
          type: string
          maxLength: 32
          minLength: 0
        taxIdentifier:
          type: string
          maxLength: 64
          minLength: 0
        zipCode:
          type: string
          maxLength: 64
          minLength: 0
      required:
      - firstName
      - lastName
    backendv3ConsumerDto:
      type: object
      properties:
        consumerNotes:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3ConsumerNoteDto"
        contactInformation:
          "$ref": "#/components/schemas/backendv3ConsumerContactDto"
        creationDate:
          type: string
          format: date-time
        discountId:
          type: integer
          format: int64
        emailAddress:
          type: string
          format: email
        errors: {}
        firstSeenByBusinessId:
          type: integer
          format: int64
        gratuityAmount:
          type: number
          format: double
        id:
          type: integer
          format: int64
        language:
          type: string
          minLength: 1
        modificationDate:
          type: string
          format: date-time
        paymentAmounts:
          type: object
          additionalProperties:
            type: number
            format: double
        recordId:
          type: integer
          format: int64
        recordUuid:
          type: string
        tagId:
          type: integer
          format: int64
        ticketCount:
          type: number
          format: double
        totalAmount:
          type: number
          format: double
      required:
      - creationDate
      - language
    backendv3ConsumerNoteDto:
      type: object
      properties:
        keyName:
          type: string
        value:
          type: string
    backendv3CountrySettingsDto:
      type: object
      properties:
        countryCode:
          type: string
        currencyCode:
          type: string
        defaultLanguageCode:
          type: string
        languageCodes:
          type: array
          items:
            type: string
          uniqueItems: true
        stateCodes:
          type: array
          items:
            type: string
          uniqueItems: true
    backendv3CsvSettings:
      type: object
      properties:
        businessId:
          type: integer
          format: int64
        businessLocationId:
          type: integer
          format: int64
        columnsMapping:
          type: object
          additionalProperties:
            type: integer
            format: int32
        delimiter:
          type: string
        dictionary:
          type: object
          additionalProperties:
            type: string
        dryRun:
          type: boolean
        encoding:
          type: string
        errors: {}
        fileToken:
          type: string
        filename:
          type: string
        firstLineContainsColumnNames:
          type: boolean
        lineDelimiter:
          type: string
        localBooleanValues:
          type: object
          additionalProperties:
            type: string
    backendv3DayOfWeek:
      type: string
      enum:
      - MONDAY
      - TUESDAY
      - WEDNESDAY
      - THURSDAY
      - FRIDAY
      - SATURDAY
      - SUNDAY
    backendv3DebtSettlementDto:
      type: object
      properties:
        settler:
          "$ref": "#/components/schemas/backendv3AccountDetailDto"
    backendv3DefaultScreenAfterLogin:
      type: string
      enum:
      - REGISTER
      - TABLE
      - ORDERS
    backendv3Delimiter:
      type: string
      enum:
      - COMMA
      - SEMICOLON
    backendv3DeliveryMode:
      type: string
      enum:
      - NONE
      - COLLECTION
      - REMOTE
    backendv3DeviceEventDto:
      type: object
      properties:
        amount:
          type: number
          format: double
        clientId:
          type: integer
          format: int64
        deviceId:
          type: integer
          format: int64
        deviceName:
          type: string
        eventId:
          type: integer
          format: int32
        eventType:
          type: string
        eventTypeCode:
          type: string
        id:
          type: integer
          format: int64
        originUser:
          type: string
        period:
          type: integer
          format: int32
        text:
          type: string
        timestamp:
          type: string
          format: date-time
        uuid:
          type: string
    backendv3DeviceRoleDto:
      type: string
      enum:
      - POS
      - BackOffice
      - CustomerDisplay
      - TimeClock
      - KitchenDisplay
      - Ghost
    backendv3DimensionDto:
      type: string
      enum:
      - DIMENSION_LESS
      - VOLUME
      - MASS
    backendv3DiscountDto:
      type: object
      properties:
        code:
          type: string
          maxLength: 32
          minLength: 0
        description:
          type: string
          maxLength: 512
          minLength: 0
        discountAmount:
          type: number
        discountByAmount:
          type: boolean
        discountType:
          type: string
          minLength: 1
        errors: {}
        excludedAccountingGroups:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3AccountingGroupDto"
          uniqueItems: true
        groupName:
          type: string
        id:
          type: integer
          format: int64
        lossDiscount:
          type: boolean
        manualDiscount:
          type: boolean
        percentageDiscount:
          type: number
          format: double
        qrToken:
          type: string
        qrTokenEnabled:
          type: boolean
        rate:
          type: number
          format: double
        showOnOrderTicket:
          type: boolean
        systemDiscount:
          type: boolean
        taxFree:
          type: boolean
      required:
      - code
      - description
      - discountType
    backendv3EFTDeviceMode:
      type: string
      enum:
      - OPI_MODE
      - PS_MODE
      - TIM_MODE
      - CONCERT_MODE
      - LSPAY_GENIUS_MODE
      - CAYAN_GENIUS_MODE
      - LSPAY_ADYEN_MODE
      - ECR17_MODE
    backendv3EntityType:
      type: string
      enum:
      - TAG
      - STAFF
      - DISCOUNT
      - PAY_METHOD
      - WEB_EXTENSION
    backendv3ExportFormat:
      type: string
      enum:
      - CSV
    backendv3Fdm2InvalidSsnUserDto:
      type: object
      properties:
        displayName:
          type: string
        id:
          type: integer
          format: int64
    backendv3FloatCountMode:
      type: string
      enum:
      - NO_COUNT
      - OPTIONAL_COUNT
      - MANDATORY_COUNT
    backendv3GiftAccountDto:
      type: object
      properties:
        amount:
          type: number
        autoPay:
          type: boolean
        businessLocation:
          "$ref": "#/components/schemas/backendv3BusinessLocationDto"
        consumer:
          "$ref": "#/components/schemas/backendv3ConsumerDto"
        id:
          type: integer
          format: int64
        maxAmount:
          type: number
        maxOverdraftAmount:
          type: number
    backendv3GiftCardDto:
      type: object
      properties:
        account:
          "$ref": "#/components/schemas/backendv3GiftAccountDto"
        cardBatch:
          "$ref": "#/components/schemas/backendv3CardBatchDto"
        errors: {}
        id:
          type: integer
          format: int64
        importedCardId:
          type: string
        lastUsed:
          type: string
          format: date-time
        offline:
          type: boolean
        qrCodeImageData:
          type: string
        qrCodeString:
          type: string
        revocationTime:
          type: string
          format: date-time
        revoked:
          type: boolean
        serial:
          type: string
          format: uuid
        type:
          "$ref": "#/components/schemas/backendv3CardType"
      required:
      - serial
      - type
    backendv3GiftCardImportDto:
      type: object
      properties:
        balance:
          type: number
        importedCardId:
          type: string
          minLength: 1
      required:
      - balance
      - importedCardId
    backendv3GiftOperationLineDto:
      type: object
      properties:
        amount:
          type: number
        balance:
          type: number
        cancelTime:
          type: string
          format: date-time
        confirmationAccountFiscalId:
          type: string
        confirmationAccountId:
          type: integer
          format: int64
        confirmationCancelationDate:
          type: string
          format: date-time
        confirmationDate:
          type: string
          format: date-time
        confirmed:
          type: boolean
        date:
          type: string
          format: date-time
        id:
          type: integer
          format: int64
        paymentMethodCode:
          type: string
        paymentMethodId:
          type: integer
          format: int64
        paymentMethodName:
          type: string
        remark:
          type: string
        staffFullName:
          type: string
        staffId:
          type: integer
          format: int64
        status:
          "$ref": "#/components/schemas/backendv3GiftOperationLineStatus"
        token:
          type: string
        type:
          "$ref": "#/components/schemas/backendv3GiftOperationLineType"
    backendv3GiftOperationLineStatus:
      type: string
      enum:
      - NOT_CONFIRMED
      - CONFIRMED
      - CANCELLED
    backendv3GiftOperationLineType:
      type: string
      enum:
      - REFILL
      - WITHDRAW
    backendv3GratuityChangeDto:
      type: object
      properties:
        gratuityAmount:
          type: number
          format: double
        paymentLineFiscId:
          type: string
    backendv3HeaderKey:
      type: string
      enum:
      - username
      - firstName
      - lastName
      - emailAddress
      - group
      - active
      - pinCode
      - businessLocation
      - localOrderId
      - socialSecurityNumber
    backendv3IdCard:
      type: object
      description: A reference to a newly created ID card.
      properties:
        consumerId:
          type: integer
          format: int64
          description: The ID of the associated consumer.
        consumerRecordId:
          type: integer
          format: int64
          description: The ID of the associated consumer record.
        id:
          type: integer
          format: int64
          description: The unique identifier for the ID card.
        url:
          type: string
          description: The URL for the QR code associated with the card.
    backendv3IdNameDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
    backendv3ImportItemDto:
      type: object
      properties:
        barCode:
          type: string
          maxLength: 64
          minLength: 0
        buttonColor:
          type: string
          maxLength: 32
          minLength: 0
        buttonName:
          type: string
          maxLength: 128
          minLength: 0
        costPrice:
          type: number
        costPriceStr:
          type: string
        defaultAccountingGroup:
          type: string
        defaultAccountingGroupId:
          type: integer
          format: int64
        defaultPrice:
          type: number
          format: double
        defaultPriceStr:
          type: string
        errors: {}
        menuName:
          type: string
          maxLength: 128
          minLength: 0
        name:
          type: string
          maxLength: 180
          minLength: 0
        screenName:
          type: string
        sku:
          type: string
          maxLength: 32
          minLength: 0
        statisticGroup:
          type: string
          maxLength: 500
          minLength: 0
        stockQuantity:
          type: number
          format: double
      required:
      - defaultAccountingGroupId
      - name
    backendv3IncompatiblePOSButtonReasonDto:
      type: string
      enum:
      - LOCAL_ENTITY
      - MISSING_ENTITY
      - DUPLICATE_ENTITY_NAME
    backendv3IntegratorDto:
      type: string
      enum:
      - API
      - GIFT_API
      - PAYMENT_API
      - RESERVATION
      - TRANSFER
    backendv3InventorySourceDto:
      type: string
      enum:
      - PURCHASED
      - PRODUCED
    backendv3ItemProductionCenterDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        primary:
          type: boolean
    backendv3ItemSharingType:
      type: string
      enum:
      - GLOBAL_NO_BL
      - GLOBAL
      - LOCAL
      - SHARED
    backendv3ItemStatus:
      type: string
      enum:
      - DISABLED
      - UNLINKED
      - NORMAL
    backendv3ItemType:
      type: string
      enum:
      - ITEM
      - ITEM_GROUP
      - ITEM_SEQUENCE
      - MODIFIER
      - MODIFIER_GROUP
    backendv3JsonNullableLong:
      type: object
      properties:
        present:
          type: boolean
        undefined:
          type: boolean
    backendv3JsonNullableSetRichItemDescriptionDto:
      type: object
      properties:
        present:
          type: boolean
        undefined:
          type: boolean
    backendv3JsonNullableSetString:
      type: object
      properties:
        present:
          type: boolean
        undefined:
          type: boolean
    backendv3JsonNullableString:
      type: object
      properties:
        present:
          type: boolean
        undefined:
          type: boolean
    backendv3LicenseModelDto:
      type: string
      enum:
      - DEVICE_COUNT
      - TRANSACTION_COUNT
      - FEATURES
      - UNLIMITED
    backendv3LineSeparator:
      type: string
      enum:
      - LF
      - CRLF
    backendv3LocalizationLanguage: {}
    backendv3LoyaltyProgramDto:
      type: object
      properties:
        businessId:
          type: integer
          format: int64
        name:
          type: string
    backendv3MailRecipientDto:
      type: object
      properties:
        businessLocationId:
          type: integer
          format: int64
        emailAddress:
          type: string
          format: email
          maxLength: 128
          minLength: 0
        errors: {}
        id:
          type: integer
          format: int64
        mailDistributionListId:
          type: integer
          format: int64
        name:
          type: string
          maxLength: 128
          minLength: 0
      required:
      - emailAddress
      - mailDistributionListId
      - name
    backendv3MainGroupStatus:
      type: string
      enum:
      - NOT_A_GROUP
      - EMPTY
      - OK
      - CROWDED
      - NEARLY_FULL
      - FULL
      - TOOMANY
    backendv3NegativeItemDto:
      type: object
      properties:
        businessLocationId:
          type: integer
          format: int64
        id:
          type: integer
          format: int64
        name:
          type: string
        sku:
          type: string
    backendv3OnlineCustomerDto:
      type: object
      properties:
        address1:
          type: string
        address2:
          type: string
        business_id:
          type: integer
          format: int64
          writeOnly: true
        city:
          type: string
        company_name:
          type: string
        country:
          type: string
        dob:
          type: string
          format: date-time
        email:
          type: string
        email_receipts:
          type: boolean
        external_reference:
          type: string
        first_name:
          type: string
        id:
          type: integer
          format: int64
        last_name:
          type: string
        phone_number1:
          type: string
        phone_number2:
          type: string
        salutation:
          type: string
        sex:
          type: integer
          format: int32
        state:
          type: string
        tax_identifier:
          type: string
        update_email_receipts:
          type: boolean
        vendor:
          type: string
          maxLength: 180
          minLength: 0
        zip:
          type: string
    backendv3OnlineMenuButtonDtoNew:
      type: object
      properties:
        color:
          type: string
        fieldToCopiedObject:
          "$ref": "#/components/schemas/backendv3BaseButtonDtoObject"
          writeOnly: true
        id:
          type: integer
          format: int64
        item:
          "$ref": "#/components/schemas/backendv3OnlineMenuProductDto"
        name:
          type: string
    backendv3OnlineMenuProductDto:
      type: object
      properties:
        active:
          type: boolean
        can_override_name:
          type: boolean
        conditional_tax_rules:
          type: boolean
        item_id:
          type: integer
          format: int64
        item_sku:
          type: string
        modifier_categories:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3OnlineOrderModifierCategoryDto"
        name:
          type: string
        price:
          type: number
        price_mode:
          "$ref": "#/components/schemas/backendv3PriceMode"
        sequences:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3OnlineOrderProductSequenceDto"
        sub_item:
          type: boolean
        tax_amount:
          type: number
        tax_included:
          type: boolean
        tax_percentage:
          type: number
        taxes:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3OnlineMenuTaxDto"
    backendv3OnlineMenuTaxDto:
      type: object
      properties:
        amount:
          type: number
        description:
          type: string
        percentage:
          type: number
    backendv3OnlineOrderDeliveryMode:
      type: string
      enum:
      - LOCAL
      - PICKUP
      - DELIVERY
    backendv3OnlineOrderItemDto:
      type: object
      properties:
        course:
          type: integer
          format: int32
        discount_code:
          type: string
        id:
          type: string
        item_id:
          type: string
        item_modifiers:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3OnlineOrderItemModifierDto"
        item_name:
          type: string
        item_price:
          type: number
        item_sku:
          type: string
        quantity:
          type: number
        sub_items:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3OnlineOrderSubItemDto"
      required:
      - item_modifiers
      - quantity
      - sub_items
    backendv3OnlineOrderItemModifierDto:
      type: object
      properties:
        mod_id:
          type: string
        modifier_desc:
          type: string
        price:
          type: number
    backendv3OnlineOrderModifierCategoryDto:
      type: object
      properties:
        category_desc:
          type: string
        id:
          type: integer
          format: int64
        mandatory_select:
          type: boolean
        multi_select:
          type: boolean
        override_price:
          type: boolean
        product_modifiers:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3OnlineOrderProductModifierDto"
    backendv3OnlineOrderOriginDto:
      type: string
      enum:
      - ONLINE_ORDER
      - RESERVATION
    backendv3OnlineOrderProductModifierDto:
      type: object
      properties:
        mod_id:
          type: string
        modifier_desc:
          type: string
        modifier_price:
          type: number
    backendv3OnlineOrderProductSequenceDto:
      type: object
      properties:
        description:
          type: string
        items:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3OnlineOrderSequenceItemDto"
        mandatory_select:
          type: boolean
        maximum_selection:
          type: integer
          format: int32
        minimum_selection:
          type: integer
          format: int32
        multi_select:
          type: boolean
        override_price:
          type: boolean
        sku:
          type: string
    backendv3OnlineOrderSequenceItemDto:
      type: object
      properties:
        description:
          type: string
        extra_price:
          type: number
        item_id:
          type: string
        item_sku:
          type: string
        modifier_categories:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3OnlineOrderModifierCategoryDto"
        price:
          type: number
    backendv3OnlineOrderStatusDto:
      type: string
      enum:
      - NEW
      - ACCEPTED
      - IN_PRODUCTION
      - READY_FOR_PICKUP
      - IN_DELIVERY
      - DELIVERED
      - REJECTED
      - ABANDONNED
      - FAILED
      - CLOSED
    backendv3OnlineOrderSubItemDto:
      type: object
      properties:
        id:
          type: string
        item_id:
          type: string
        item_modifiers:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3OnlineOrderItemModifierDto"
        item_name:
          type: string
        item_price:
          type: number
        item_sku:
          type: string
        quantity:
          type: number
      required:
      - item_modifiers
    backendv3PMSConnectivityTestResultTypeDto:
      type: string
      enum:
      - UNKNOWN
      - FAILURE
      - SUCCESS
    backendv3PMSParameterCategoryDto:
      type: string
      enum:
      - POS_CONFIGURATION
      - PAYMENT_METHOD
      - ACCOUNTING_GROUP
      - TAX
      - DEVICE
      - AUTHENTICATION
    backendv3PMSParameterDefinitionDto:
      type: object
      properties:
        category:
          "$ref": "#/components/schemas/backendv3PMSParameterCategoryDto"
        errors: {}
        mandatory:
          type: boolean
        name:
          type: string
        provider:
          type: string
        type:
          "$ref": "#/components/schemas/backendv3PMSParameterTypeDto"
    backendv3PMSParameterOptionDto:
      type: object
      properties:
        active:
          type: boolean
        errors: {}
        key:
          type: string
        value:
          type: string
    backendv3PMSParameterTypeDto:
      type: string
      enum:
      - SELECT
      - STRING
      - LONG
    backendv3POSButtonDto:
      type: object
      properties:
        buttonsCount:
          type: integer
          format: int32
        color:
          type: string
          maxLength: 32
          minLength: 0
        columnsCount:
          type: integer
          format: int32
        containsEmptyOrGroup:
          type: boolean
        displayName:
          type: string
          maxLength: 128
          minLength: 0
        errors: {}
        highlighted:
          type: boolean
        id:
          type: integer
          format: int64
        manyOf:
          type: boolean
        masterButtonId:
          type: integer
          format: int64
        referenceCount:
          type: integer
          format: int32
        restrictToManager:
          type: boolean
        slaveGroup:
          type: boolean
        status:
          "$ref": "#/components/schemas/backendv3MainGroupStatus"
        target:
          type: integer
          format: int64
        targetName:
          type: string
        targetPrice:
          type: number
          format: double
        targetPriceMode:
          type: string
        targetSku:
          type: string
        type:
          "$ref": "#/components/schemas/backendv3ButtonType"
      required:
      - displayName
    backendv3POSMenuDto:
      type: object
      properties:
        businessLocationId:
          type: integer
          format: int64
        businessLocationName:
          type: string
        buttons:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3POSButtonDto"
        errors: {}
        id:
          type: integer
          format: int64
        inSync:
          type: boolean
        inSyncSlaveCount:
          type: integer
          format: int32
        master:
          type: boolean
        masterMenu:
          "$ref": "#/components/schemas/backendv3POSMenuDto"
        name:
          type: string
          maxLength: 128
          minLength: 0
        outOfSyncSlaveCount:
          type: integer
          format: int32
        slave:
          type: boolean
        slaveCount:
          type: integer
          format: int32
        slaves:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3POSMenuDto"
      required:
      - name
    backendv3PaymentDto:
      type: object
      properties:
        amount:
          type: number
          format: double
        authorizationId:
          type: string
        gratuity:
          type: number
          format: double
        paymentMethodId:
          type: integer
          format: int64
    backendv3PaymentLineDto:
      type: object
      properties:
        accountId:
          type: integer
          format: int64
        active:
          type: boolean
        amountPaid:
          type: number
          format: double
        changeAmount:
          type: number
          format: double
        createDate:
          type: string
          format: date-time
        dateOfPayment:
          type: string
          format: date-time
        debt:
          type: boolean
        deviceDescription:
          type: string
        deviceId:
          type: integer
          format: int64
        foreignCurrencyAmount:
          type: number
          format: double
        foreignCurrencyCode:
          type: string
        gratuityAmount:
          type: number
          format: double
        id:
          type: integer
          format: int64
        modificationDate:
          type: string
          format: date-time
        paymentMethodCode:
          type: string
        paymentMethodDescription:
          type: string
        paymentMethodId:
          type: integer
          format: int64
        staffDescription:
          type: string
        staffId:
          type: integer
          format: int64
    backendv3PaymentMethodChangeDto:
      type: object
      properties:
        paymentLineFiscId:
          type: string
        paymentMethodId:
          type: integer
          format: int64
    backendv3PaymentMethodDto:
      type: object
      properties:
        accountingReference:
          type: string
          maxLength: 128
          minLength: 0
        barTabsActive:
          type: boolean
        cashMgmt:
          type: boolean
        clientSideHidden:
          type: boolean
        code:
          type: string
          maxLength: 36
          minLength: 0
        config:
          type: object
          additionalProperties:
            type: string
        defaultAdvanceAmount:
          type: number
          minimum: 1.0
        deprecated:
          type: boolean
        description:
          type: string
          maxLength: 100
          minLength: 0
        editable:
          type: boolean
        enablePayAtTablePrintCheck:
          type: boolean
        errors: {}
        foreignCurrencyCode:
          type: string
          maxLength: 3
          minLength: 0
        giveChange:
          type: boolean
        gratuityCutPct:
          type: integer
          format: int32
        gratuityCutPercent:
          type: number
          format: double
        gratuityEnabled:
          type: boolean
        id:
          type: integer
          format: int64
        includeInFloatCount:
          type: boolean
        managerOnly:
          type: boolean
        nativeAPIKey:
          type: string
          maxLength: 128
          minLength: 0
        nativeAPIPassword:
          type: string
          maxLength: 128
          minLength: 0
        nativeAPIUsername:
          type: string
          maxLength: 128
          minLength: 0
        nativeMethod:
          type: boolean
        noPrint:
          type: boolean
        openCashDrawer:
          type: boolean
        printFooter:
          type: boolean
        printHeader:
          type: boolean
        qrToken:
          type: string
        qrTokenEnabled:
          type: boolean
        type:
          "$ref": "#/components/schemas/backendv3PaymentMethodType"
        virtualMerchantReceipt:
          type: boolean
      required:
      - code
      - description
      - type
    backendv3PaymentMethodType:
      type: string
      enum:
      - PM_TYPE_CASH
      - PM_TYPE_CARD
      - PM_TYPE_OTHER
      - PM_TYPE_CASH_FC
      - PM_TYPE_PMS
      - PM_TYPE_CASH_DROP
      - PM_TYPE_CASH_LIFT
      - PM_TYPE_LEFT_WITHOUT_PAYING
    backendv3PaymentProviderConfigurationDto:
      type: object
      discriminator:
        propertyName: type
      properties:
        businessLocationId:
          type: integer
          format: int64
        errors: {}
        id:
          type: integer
          format: int64
        paymentMethodIds:
          type: array
          items:
            type: integer
            format: int64
        type:
          type: string
      required:
      - businessLocationId
    backendv3PmsProviderFeatureDto:
      type: string
      enum:
      - SEARCH_BY_NAME
      - MIRRORING
      - PARTIAL_PAYMENTS
      - MULTI_PAYMENTS
      - SERVICE_CHARGE
      - ENRICHED_PAYLOAD
    backendv3PredefinedTipAmountDto:
      type: object
      properties:
        amount:
          type: integer
          format: int32
          minimum: 0
        errors: {}
        id:
          type: integer
          format: int64
    backendv3PredefinedTipPercentageDto:
      type: object
      properties:
        errors: {}
        id:
          type: integer
          format: int64
        percentage:
          type: integer
          format: int32
          maximum: 10000
          minimum: 0
    backendv3PredefinedTipsOption:
      type: string
      enum:
      - AMOUNTS
      - PERCENTAGES
      - THRESHOLD
    backendv3PriceListDto:
      type: object
      properties:
        active:
          type: boolean
        businessId:
          type: integer
          format: int64
        id:
          type: integer
          format: int64
        inSync:
          type: boolean
        name:
          type: string
        referenced:
          type: boolean
    backendv3PriceMode:
      type: string
      enum:
      - AMOUNT
      - PERCENT
      - POSITIVE_OPEN_PRICE
      - NEGATIVE_OPEN_PRICE
    backendv3PriceModeDto:
      type: string
      enum:
      - AMOUNT
      - PERCENT
      - POSITIVE_OPEN_PRICE
      - NEGATIVE_OPEN_PRICE
    backendv3PrintableDocumentAction:
      type: string
      enum:
      - ARCHIVE
      - ASSIGN
      - UNASSIGN
      - COPY
      - DUPLICATE
    backendv3PrintableDocumentActionRequest:
      type: object
      discriminator:
        propertyName: action
      properties:
        action:
          "$ref": "#/components/schemas/backendv3PrintableDocumentAction"
    backendv3PrintableDocumentAssignTarget:
      type: string
      enum:
      - PRODUCTION_CENTER
    backendv3PrintableDocumentDisplaySection:
      type: string
      enum:
      - RECEIPT
      - DRAFT
      - DOCKET
      - FIRE_COURSE
      - TRANSFER
    backendv3PrintableDocumentDto:
      type: object
      properties:
        createdOn:
          type: string
          format: date-time
        customLocalizations:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/backendv3LocalizationLanguage"
        default:
          type: boolean
        defaultLocale:
          type: string
        id:
          type: integer
          format: int64
        markup:
          type: string
        name:
          type: string
        sections:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3PrintableDocumentSection"
        subType:
          "$ref": "#/components/schemas/backendv3PrintableDocumentSubtype"
        type:
          "$ref": "#/components/schemas/backendv3PrintableDocumentType"
        updatedOn:
          type: string
          format: date-time
    backendv3PrintableDocumentSection:
      type: object
      properties:
        display:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3PrintableDocumentDisplaySection"
        markup:
          type: string
      required:
      - display
    backendv3PrintableDocumentSubtype:
      type: string
      enum:
      - DOCKET
      - FIRE_COURSE
      - TRANSFER
    backendv3PrintableDocumentType:
      type: string
      enum:
      - PRODUCTION
    backendv3PrinterDriver:
      type: string
      enum:
      - EPSON
      - BLUEBAMBOO
      - EPSON_WIDTH_33
      - EPSON_WIDTH_48
      - BIXOLON_R300
      - EPSON_FP90
      - STAR_TSP_BT
      - STAR_TSP100_USB
      - STAR_TSP100_LAN
      - STAR_SM_2I
      - STAR_SM_3I
      - EPSON_M30
      - EPSON_M30_NET
      - EPSON_M30_USB
      - SEIKO_NET
      - SEIKO_RPD10_BT
      - SEIKO_MPB20_BT
      - EPSON_M10
      - EPSON_M10_NET
      - EPSON_L90
      - STAR_MC_PRINT_3_LAN
      - STAR_MC_PRINT_3_USB
      - STAR_TSP143IV_LAN
      - STAR_TSP650II_BT
      - STAR_SP700_LAN
    backendv3PrinterProfileDto:
      type: object
      properties:
        businessLocationName:
          type: string
        copies:
          type: integer
          format: int32
          maximum: 5
          minimum: 1
        errors: {}
        fallbackHeader:
          type: boolean
        fiscal:
          type: boolean
        id:
          type: integer
          format: int64
        name:
          type: string
          maxLength: 64
          minLength: 0
        printers:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3PrintersDto"
      required:
      - name
    backendv3PrintersDto:
      type: object
      properties:
        businessLocationName:
          type: string
        disableStatusCheck:
          type: boolean
        driver:
          "$ref": "#/components/schemas/backendv3PrinterDriver"
        enableSecurePrinting:
          type: boolean
        errors: {}
        fiscal:
          type: boolean
        hardwareAddress:
          type: string
        hwaddressUsed:
          type: boolean
        id:
          type: integer
          format: int64
        ipAddress:
          type: string
        ipaddressUsed:
          type: boolean
        name:
          type: string
          maxLength: 64
          minLength: 0
        ownQRCodeEncoder:
          type: boolean
      required:
      - driver
      - name
    backendv3ProductCriteriaDto:
      type: object
      properties:
        any:
          type: boolean
        errors: {}
        productId:
          type: integer
          format: int64
        productName:
          type: string
    backendv3ProductDto:
      type: object
      properties:
        defaultAccountingGroup:
          "$ref": "#/components/schemas/backendv3AccountingGroupDto"
        id:
          type: integer
          format: int64
        name:
          type: string
    backendv3ProductFilterDto:
      type: object
      properties:
        errors: {}
        items:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3ProductFilterItemDto"
        type:
          "$ref": "#/components/schemas/backendv3ProductFilterType"
      required:
      - type
    backendv3ProductFilterItemDto:
      type: object
      properties:
        accountingGroupId:
          type: integer
          format: int64
        accountingGroupName:
          type: string
        errors: {}
        id:
          type: integer
          format: int64
        maxCount:
          type: integer
          format: int32
        productId:
          type: integer
          format: int64
        productName:
          type: string
      required:
      - accountingGroupId
      - maxCount
    backendv3ProductFilterType:
      type: string
      enum:
      - INCLUDE
      - EXCLUDE
    backendv3ProductPriceDto:
      type: object
      properties:
        amount:
          type: number
          format: double
        tag:
          "$ref": "#/components/schemas/backendv3TagDto"
    backendv3ProductRefDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        priceMode:
          "$ref": "#/components/schemas/backendv3PriceModeDto"
        sku:
          type: string
    backendv3ProductionCenterSelection:
      type: string
      enum:
      - ALL
      - SOME
      - NONE
      - LEGACY
    backendv3ProductionDocketFontSize:
      type: string
      enum:
      - SMALL
      - MEDIUM
      - LARGE
    backendv3ProductionModifierCategoryEnumDto:
      type: string
      enum:
      - COMMENT
      - ADD_ON
      - REMOVAL
      - WARNING
    backendv3PropertyExpression:
      type: object
      properties:
        child:
          "$ref": "#/components/schemas/backendv3PropertyExpression"
        id:
          type: string
        leaf:
          "$ref": "#/components/schemas/backendv3PropertyExpression"
        name:
          type: string
        parent:
          "$ref": "#/components/schemas/backendv3PropertyExpression"
        parentName:
          type: string
        parentPath:
          type: string
        propertyName:
          type: string
        propertyPath:
          type: string
        rootProperty:
          "$ref": "#/components/schemas/backendv3PropertyExpression"
    backendv3PunchCompletionDto:
      type: object
      properties:
        complete:
          type: boolean
        current:
          type: integer
          format: int32
        name:
          type: string
        percent:
          type: integer
          format: int32
        remaining:
          type: integer
          format: int32
        target:
          type: integer
          format: int32
    backendv3PunchConfigurationItemDto:
      type: object
      properties:
        cumulative:
          type: boolean
        errors: {}
        fromDate:
          type: string
          format: date-time
        id:
          type: integer
          format: int64
        name:
          type: string
          maxLength: 128
          minLength: 0
        rewardProductFilter:
          "$ref": "#/components/schemas/backendv3ProductFilterDto"
        targetProductFilter:
          "$ref": "#/components/schemas/backendv3ProductFilterDto"
        targetQuantity:
          type: integer
          format: int32
        toDate:
          type: string
          format: date-time
      required:
      - fromDate
      - name
      - toDate
    backendv3PunchLineDto:
      type: object
      properties:
        completion:
          "$ref": "#/components/schemas/backendv3PunchCompletionDto"
        id:
          type: integer
          format: int64
        punchConfigurationItem:
          "$ref": "#/components/schemas/backendv3PunchConfigurationItemDto"
    backendv3QuantityDto:
      type: object
      properties:
        dimension:
          "$ref": "#/components/schemas/backendv3DimensionDto"
        errors: {}
        uom:
          type: string
        value:
          type: number
    backendv3ReceiptHeaderCaseDto:
      type: string
      enum:
      - DEFAULT
      - UPPER
      - LOWER
    backendv3ReceiptHeaderDto:
      type: object
      properties:
        font:
          type: string
        fullLineCode:
          type: string
        justification:
          type: string
        text:
          type: string
        textCase:
          "$ref": "#/components/schemas/backendv3ReceiptHeaderCaseDto"
        type:
          "$ref": "#/components/schemas/backendv3ReceiptHeaderTypeDto"
    backendv3ReceiptHeaderTypeDto:
      type: string
      enum:
      - DEFAULT
      - FISCAL_IDENTIFIER
      - FISCAL_IDENTIFIER2
      - FISCAL_IDENTIFIER3
      - TRADE_NAME
      - COMPANY_NAME
      - LOCATION
      - COUNTRY
    backendv3ReceiptTemplateDto:
      type: object
      properties:
        archived:
          type: boolean
        assigned:
          type: boolean
        createdOn:
          type: string
          format: date-time
        customLocalizations:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/backendv3LocalizationLanguage"
        default:
          type: boolean
        defaultLocale:
          type: string
        id:
          type: integer
          format: int64
        name:
          type: string
        sections:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3PrintableDocumentSection"
        updatedOn:
          type: string
          format: date-time
    backendv3RemoteAPICredentialType:
      type: string
      enum:
      - CREDENTIAL_TYPE_GOOGLE_API
    backendv3ReportCustomizationDto:
      type: object
      properties:
        businessId:
          type: integer
          format: int64
        businessLocationId:
          type: integer
          format: int64
        effectiveFooterHeight:
          type: string
        effectiveHeaderHeight:
          type: string
        errors: {}
        footerHeight:
          type: string
        headerHeight:
          type: string
        id:
          type: integer
          format: int64
        messages:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3ReportCustomizationMessageDto"
        reportName:
          type: string
        sharedReportCustomization:
          "$ref": "#/components/schemas/backendv3ReportCustomizationDto"
    backendv3ReportCustomizationMessageDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        key:
          type: string
        languageCode:
          type: string
        message:
          type: string
        reportCustomizationId:
          type: integer
          format: int64
    backendv3ReportDelayDto:
      type: string
      enum:
      - NEXT_24H
      - MONDAY
      - TUESDAY
      - WEDNESDAY
      - THURSDAY
      - FRIDAY
      - SATURDAY
      - SUNDAY
      - END_OF_MONTH
    backendv3ReportDetailType:
      type: string
      enum:
      - NONE
      - ACCOUNTING_GROUPS
      - ACCOUNTING_GROUPS_AND_ITEMS
    backendv3ReportFormat:
      type: string
      enum:
      - PDF
      - XLS
      - CSV
      - TSV
    backendv3ReportItemDtoConsumerDto:
      type: object
      properties:
        e:
          type: object
          properties:
            cause:
              type: object
              properties:
                localizedMessage:
                  type: string
                message:
                  type: string
                stackTrace:
                  type: array
                  items:
                    type: object
                    properties:
                      classLoaderName:
                        type: string
                      className:
                        type: string
                      fileName:
                        type: string
                      lineNumber:
                        type: integer
                        format: int32
                      methodName:
                        type: string
                      moduleName:
                        type: string
                      moduleVersion:
                        type: string
                      nativeMethod:
                        type: boolean
                suppressed:
                  type: array
                  items:
                    type: object
                    properties:
                      localizedMessage:
                        type: string
                      message:
                        type: string
                      stackTrace:
                        type: array
                        items:
                          type: object
                          properties:
                            classLoaderName:
                              type: string
                            className:
                              type: string
                            fileName:
                              type: string
                            lineNumber:
                              type: integer
                              format: int32
                            methodName:
                              type: string
                            moduleName:
                              type: string
                            moduleVersion:
                              type: string
                            nativeMethod:
                              type: boolean
            localizedMessage:
              type: string
            message:
              type: string
            stackTrace:
              type: array
              items:
                type: object
                properties:
                  classLoaderName:
                    type: string
                  className:
                    type: string
                  fileName:
                    type: string
                  lineNumber:
                    type: integer
                    format: int32
                  methodName:
                    type: string
                  moduleName:
                    type: string
                  moduleVersion:
                    type: string
                  nativeMethod:
                    type: boolean
            suppressed:
              type: array
              items:
                type: object
                properties:
                  localizedMessage:
                    type: string
                  message:
                    type: string
                  stackTrace:
                    type: array
                    items:
                      type: object
                      properties:
                        classLoaderName:
                          type: string
                        className:
                          type: string
                        fileName:
                          type: string
                        lineNumber:
                          type: integer
                          format: int32
                        methodName:
                          type: string
                        moduleName:
                          type: string
                        moduleVersion:
                          type: string
                        nativeMethod:
                          type: boolean
        subject:
          "$ref": "#/components/schemas/backendv3ConsumerDto"
    backendv3ReportItemDtoImportItemDto:
      type: object
      properties:
        e:
          type: object
          properties:
            cause:
              type: object
              properties:
                localizedMessage:
                  type: string
                message:
                  type: string
                stackTrace:
                  type: array
                  items:
                    type: object
                    properties:
                      classLoaderName:
                        type: string
                      className:
                        type: string
                      fileName:
                        type: string
                      lineNumber:
                        type: integer
                        format: int32
                      methodName:
                        type: string
                      moduleName:
                        type: string
                      moduleVersion:
                        type: string
                      nativeMethod:
                        type: boolean
                suppressed:
                  type: array
                  items:
                    type: object
                    properties:
                      localizedMessage:
                        type: string
                      message:
                        type: string
                      stackTrace:
                        type: array
                        items:
                          type: object
                          properties:
                            classLoaderName:
                              type: string
                            className:
                              type: string
                            fileName:
                              type: string
                            lineNumber:
                              type: integer
                              format: int32
                            methodName:
                              type: string
                            moduleName:
                              type: string
                            moduleVersion:
                              type: string
                            nativeMethod:
                              type: boolean
            localizedMessage:
              type: string
            message:
              type: string
            stackTrace:
              type: array
              items:
                type: object
                properties:
                  classLoaderName:
                    type: string
                  className:
                    type: string
                  fileName:
                    type: string
                  lineNumber:
                    type: integer
                    format: int32
                  methodName:
                    type: string
                  moduleName:
                    type: string
                  moduleVersion:
                    type: string
                  nativeMethod:
                    type: boolean
            suppressed:
              type: array
              items:
                type: object
                properties:
                  localizedMessage:
                    type: string
                  message:
                    type: string
                  stackTrace:
                    type: array
                    items:
                      type: object
                      properties:
                        classLoaderName:
                          type: string
                        className:
                          type: string
                        fileName:
                          type: string
                        lineNumber:
                          type: integer
                          format: int32
                        methodName:
                          type: string
                        moduleName:
                          type: string
                        moduleVersion:
                          type: string
                        nativeMethod:
                          type: boolean
        subject:
          "$ref": "#/components/schemas/backendv3ImportItemDto"
    backendv3ReportScope:
      type: string
      enum:
      - DAY
      - WEEK
      - MONTH
      - YEAR
    backendv3ReportType:
      type: string
      enum:
      - FR_FINANCIAL_REPORT_WINBIZ
      - FR_SHIFT_REPORT
      - FR_CANCELLATIONS_PRINT
      - FR_CANCELLATIONS
      - FR_ACCOUNTING_PRODUCT_BREAKDOWN
      - FR_STATISTIC_PRODUCT_BREAKDOWN
      - FR_ACCPROFILE_PRODUCT_BREAKDOWN
      - FR_DISCOUNT_BREAKDOWN
      - FR_DISCOUNT_DETAILS
      - FR_MONTHLY_DISCOUNT
      - FR_TEXT_MESSAGES
      - HR_MONTHLY_HOURS
      - HR_MONTHLY_HOURS_PAYCHEX
      - HR_MONTHLY_HOURS_MIRUS
      - CO_CONSUMERS
      - ST_LOW_STOCK_POSITIONS
      - ST_STOCK_POSITIONS
      - CF_POS_LIST
      - LS_PAY_DAILY_CONSOLIDATED
      - LS_PAY_DAILY_SETTLEMENTS_CONSOLIDATED
      - LS_PAY_DAILY_SETTLED_PAYMENTS_CONSOLIDATED
      - INSIGHTS_DAILY_DIGEST
      - TX_RECEIPTS
      - TX_TRANSACTIONS
      - TX_PAYMENTS
      - FR_MONTHLY_TURNOVER
      - FR_FINANCIAL_REPORT_PARTIAL
      - FR_FINANCIAL_REPORT_FULL
      - FR_FINANCIAL_REPORT_MIRUS
      - FR_FINANCIAL_REPORT_GENERIC
      - FR_FINANCIAL_REPORT_ACCOUNTING
      - FR_FINANCIAL_REPORT_STATISTIC
      - FR_FINANCIAL_REPORT_ACCPROFILE
      - FR_FINANCIAL_REPORT_SAGE
      - FR_FINANCIAL_EXPORT_ACCOUNTING
      - FR_FINANCIAL_EXPORT_STATISTIC
      - FR_FINANCIAL_EXPORT_ACCPROFILE
      - FR_STAFF_REPORT
      - FR_STAFF_REPORT_ACCOUNTING
      - FR_STAFF_REPORT_STATISTIC
      - FR_STAFF_REPORT_ACCPROFILE
      - FR_DEVICE_REPORT
      - FR_DEVICE_REPORT_ACCOUNTING
      - FR_DEVICE_REPORT_STATISTIC
      - FR_DEVICE_REPORT_ACCPROFILE
      - FR_CASH_REPORT_PRINT
      - FR_CASH_REPORT
      - FI_RECEIPTS
      - FI_TRANSACTIONS
      - FI_PAYMENTS
      - FI_INVOICES
      - FI_FISCAL_REPORT
      - FI_FLOAT_REPORT_PRINT
      - FI_FLOAT_REPORT
      - BR_MONTHLY_TURNOVER
      - BR_BUSINESS_REPORT_PARTIAL
      - BR_BUSINESS_REPORT_FULL
      - BR_BUSINESS_REPORT_MIRUS
      - BR_BUSINESS_REPORT_GENERIC
      - BR_BUSINESS_REPORT_ACCOUNTING
      - BR_BUSINESS_REPORT_STATISTIC
      - BR_BUSINESS_REPORT_ACCPROFILE
      - BR_BUSINESS_REPORT_SAGE
      - BR_BUSINESS_EXPORT_ACCOUNTING
      - BR_BUSINESS_EXPORT_STATISTIC
      - BR_BUSINESS_EXPORT_ACCPROFILE
      - BR_STAFF_REPORT
      - BR_STAFF_REPORT_ACCOUNTING
      - BR_STAFF_REPORT_STATISTIC
      - BR_STAFF_REPORT_ACCPROFILE
      - BR_DEVICE_REPORT
      - BR_DEVICE_REPORT_ACCOUNTING
      - BR_DEVICE_REPORT_STATISTIC
      - BR_DEVICE_REPORT_ACCPROFILE
    backendv3ResellerDto:
      type: object
      properties:
        active:
          type: boolean
        addressLine1:
          type: string
          maxLength: 256
          minLength: 0
        addressLine2:
          type: string
          maxLength: 6256
          minLength: 0
        billingEmail:
          type: string
        boUserCreationByCustomerAllowed:
          type: boolean
        city:
          type: string
          maxLength: 256
          minLength: 0
        country:
          type: string
          maxLength: 8
          minLength: 0
        creationDate:
          type: string
          format: date-time
        currencyCode:
          type: string
        errors: {}
        fiscalIdentifier:
          type: string
        hideCustomerBilling:
          type: boolean
        id:
          type: integer
          format: int64
        locale:
          type: string
        managedBilling:
          type: boolean
        managedInvoicing:
          type: boolean
        name:
          type: string
          maxLength: 128
          minLength: 0
        newAccountDiscount:
          type: integer
          format: int32
        newAccountSetupFees:
          type: number
        owner:
          "$ref": "#/components/schemas/backendv3StaffDto"
        salesforceResellerId:
          type: string
          maxLength: 64
          minLength: 0
        supportEmail:
          type: string
          maxLength: 128
          minLength: 0
        supportPhone:
          type: string
          maxLength: 64
          minLength: 0
        supportUrl:
          type: string
          maxLength: 128
          minLength: 0
        timeZone:
          type: string
          maxLength: 64
          minLength: 0
        zipCode:
          type: string
        zopimApiKey:
          type: string
      required:
      - name
    backendv3RichItemDescriptionDto:
      type: object
      properties:
        description:
          type: string
          maxLength: 4000
          minLength: 0
        displayName:
          type: string
        localeCode:
          type: string
          maxLength: 7
          minLength: 2
    backendv3SaleableItemDto:
      type: object
      properties:
        active:
          type: boolean
          default: true
        aggregationType:
          "$ref": "#/components/schemas/backendv3AggregationType"
        alcoholPercentage:
          type: number
        automaticCostPrice:
          type: boolean
          default: false
        barCode:
          type: string
          deprecated: true
        barCodes:
          type: array
          items:
            type: string
        barcodeQuantityDecimals:
          type: integer
          format: int32
          default: 2
        businessLocationId:
          type: integer
          format: int64
        businessLocationName:
          type: string
        chargesAllowed:
          type: boolean
          default: true
        components:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3ComponentDto"
        containsAlcohol:
          type: boolean
        content:
          "$ref": "#/components/schemas/backendv3QuantityDto"
        cookTime:
          type: integer
          format: int32
        costPrice:
          type: number
        courseCount:
          type: integer
          format: int32
          default: 1
        defaultAccountingGroupId:
          type: integer
          format: int64
        defaultOption:
          type: boolean
          default: false
        defaultPrice:
          type: number
          format: double
        discountsAllowed:
          type: boolean
          default: true
        docketName:
          type: string
          maxLength: 64
          minLength: 0
        enableSalesRestriction:
          type: boolean
          default: true
        errors: {}
        externalPrice:
          type: boolean
          default: false
        externalQuantity:
          type: boolean
          default: false
        externalQuantityDivider:
          type: integer
          format: int32
          default: 0
        externalQuantityTare:
          type: integer
          format: int32
          default: 0
        externalQuantityTareEnabled:
          type: boolean
          default: false
        extraPrice:
          type: integer
          format: int32
        freeAllowed:
          type: boolean
          default: true
        generateVoucher:
          type: boolean
          default: false
        id:
          type: integer
          format: int64
        insertionPhase:
          type: integer
          format: int32
          default: -1
        instructionsGroupingAllowed:
          type: boolean
          default: false
        inventorySource:
          "$ref": "#/components/schemas/backendv3InventorySourceDto"
          default: PURCHASED
        items:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3SaleableItemDto"
        linkedToCovers:
          type: boolean
          default: false
        manuallyPriced:
          type: boolean
        matchable:
          type: boolean
          default: false
        maxAggregation:
          type: integer
          format: int32
          minimum: 1
        mergeSublines:
          type: boolean
          default: false
        minAggregation:
          type: integer
          format: int32
          minimum: 0
        name:
          type: string
          maxLength: 180
          minLength: 0
        nameOverride:
          type: boolean
          default: false
        negativePrice:
          type: boolean
        openSequence:
          type: boolean
          default: false
        parentItems:
          type: array
          items:
            type: integer
            format: int64
          uniqueItems: true
        priceAsPercent:
          type: boolean
        priceMode:
          "$ref": "#/components/schemas/backendv3PriceModeDto"
        prices:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3ProductPriceDto"
        producible:
          type: boolean
          default: false
        productId:
          type: integer
          format: int64
        productionCenter:
          type: string
          maxLength: 180
          minLength: 0
        productionCenterSelection:
          "$ref": "#/components/schemas/backendv3ProductionCenterSelection"
          default: LEGACY
        productionCenters:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3ItemProductionCenterDto"
          uniqueItems: true
        productionModifiers:
          type: array
          items:
            type: integer
            format: int64
        referenceCount:
          type: integer
          format: int32
        secondaryProductionCenter:
          type: string
          maxLength: 180
          minLength: 0
        secondaryProductionCenterSelection:
          "$ref": "#/components/schemas/backendv3ProductionCenterSelection"
          default: LEGACY
        separateOnReceipt:
          type: boolean
          default: false
        sharingType:
          "$ref": "#/components/schemas/backendv3ItemSharingType"
        sku:
          type: string
          maxLength: 32
          minLength: 0
        splitAllowed:
          type: boolean
          default: false
        statisticGroup:
          type: string
          maxLength: 500
          minLength: 0
        status:
          "$ref": "#/components/schemas/backendv3ItemStatus"
        stockDisabled:
          type: boolean
          default: false
        stockId:
          type: integer
          format: int64
        subItem:
          type: boolean
          default: false
        tags:
          type: string
          maxLength: 500
          minLength: 0
        taxProfileId:
          type: integer
          format: int64
        type:
          "$ref": "#/components/schemas/backendv3ItemType"
        uiButton:
          "$ref": "#/components/schemas/backendv3POSButtonDto"
        voucherValue:
          type: integer
          format: int32
          default: 0
        voucherValueDouble:
          type: number
          format: double
      required:
      - name
    backendv3ScreenButtonDto:
      type: object
      properties:
        buttons:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3ScreenButtonDto"
          uniqueItems: true
        color:
          type: string
        fieldToCopiedObject:
          "$ref": "#/components/schemas/backendv3BaseButtonDtoObject"
          writeOnly: true
        id:
          type: integer
          format: int64
        name:
          type: string
    backendv3SortDirection:
      type: string
      enum:
      - ASC
      - DESC
    backendv3SortOrder:
      type: string
      enum:
      - ascending
      - descending
    backendv3StaffAccess:
      type: string
      enum:
      - Manager
      - User
      - Login button
      - No access
      - Training
      - Pay button
      - API
    backendv3StaffDto:
      type: object
      properties:
        acceptedGdprTc:
          type: string
          format: date-time
        acceptedTC:
          type: string
          format: date-time
          deprecated: true
        active:
          type: boolean
        apiKey:
          type: string
        apiUser:
          type: boolean
        availableDiscounts:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3DiscountDto"
          uniqueItems: true
        boUser:
          type: boolean
        createdOn:
          type: string
          format: date-time
        displayName:
          type: string
        drawerToUse:
          type: integer
          format: int32
        emailAddress:
          type: string
          format: email
          maxLength: 128
          minLength: 0
        errors: {}
        firstName:
          type: string
          maxLength: 128
          minLength: 0
        fiscalIdentifierList:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3StaffFiscalIdentifierDto"
        fullName:
          type: string
        getiButton:
          type: string
          maxLength: 64
          minLength: 0
        group:
          "$ref": "#/components/schemas/backendv3StaffGroupDto"
        id:
          type: integer
          format: int64
        implicitRoles:
          type: array
          items:
            type: string
        lastName:
          type: string
          maxLength: 128
          minLength: 0
        localOrderId:
          type: integer
          format: int32
        locale:
          type: string
        payAtTableId:
          type: string
        pinCode:
          type: string
          maxLength: 6
          minLength: 0
        posUser:
          type: boolean
        qrToken:
          type: string
        qrTokenEnabled:
          type: boolean
        reportAccess:
          "$ref": "#/components/schemas/backendv3StaffReportAccess"
        roles:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3StaffRoleDto"
        staffType:
          "$ref": "#/components/schemas/backendv3StaffAccess"
        userIdentifier:
          type: string
        username:
          type: string
          maxLength: 128
          minLength: 0
        viewedRN:
          type: string
          format: date-time
          deprecated: true
        visible:
          type: boolean
      required:
      - pinCode
    backendv3StaffFiscalIdentifierDto:
      type: object
      properties:
        fiscalId:
          type: string
        fiscalRegion:
          type: string
        staffId:
          type: integer
          format: int64
    backendv3StaffGroupDto:
      type: object
      properties:
        authorizedCashDrawersIds:
          type: array
          items:
            type: integer
            format: int64
          uniqueItems: true
        availableDiscounts:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3DiscountDto"
          uniqueItems: true
        businessId:
          type: integer
          format: int64
        declareTips:
          type: boolean
        empty:
          type: boolean
        enforceDrawerForCash:
          type: boolean
        errors: {}
        floatCountMode:
          "$ref": "#/components/schemas/backendv3FloatCountMode"
        gratuityCutPct:
          type: integer
          format: int32
        gratuityCutPercent:
          type: number
          format: double
        gratuityInCash:
          type: boolean
        id:
          type: integer
          format: int64
        initialLevelAmount:
          type: number
          format: double
        initialLevelCents:
          type: integer
          format: int32
        manageDiscounts:
          type: boolean
        name:
          type: string
          maxLength: 128
          minLength: 0
        posAccessForbidden:
          type: boolean
        reportAccess:
          "$ref": "#/components/schemas/backendv3StaffReportAccess"
        roles:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3StaffRoleDto"
          uniqueItems: true
      required:
      - businessId
      - name
    backendv3StaffReportAccess:
      type: string
      enum:
      - STAFF_REPORT_MGR_ACCESS
      - STAFF_REPORT_MGR_BLIND_ACCESS
      - STAFF_REPORT_OWN_ACCESS
      - STAFF_REPORT_OWN_BLIND_ACCESS
      - STAFF_REPORT_NO_ACCESS
    backendv3StaffRoleDto:
      type: object
      properties:
        boRole:
          type: boolean
        hidden:
          type: boolean
        id:
          type: integer
          format: int32
        manageableBy:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3StaffRoleLiteDto"
          uniqueItems: true
        name:
          type: string
    backendv3StaffRoleLiteDto:
      type: object
      properties:
        boRole:
          type: boolean
        hidden:
          type: boolean
        id:
          type: integer
          format: int32
        name:
          type: string
    backendv3StatsResultInfoDto:
      type: object
      properties:
        amount:
          type: number
          format: double
        count:
          type: number
          format: double
    backendv3StatsResultInfoExDto:
      type: object
      properties:
        amount:
          type: number
          format: double
        amountBis:
          type: number
          format: double
        count:
          type: number
          format: double
        rounding:
          type: number
          format: double
    backendv3Status:
      type: string
      enum:
      - ACTIVE
      - GRACE_PERIOD
      - PAID
      - UNPAID
      - REVOKED
      - EXPIRED
      - NO_LICENSE
    backendv3StockCriteriaDto:
      type: object
      properties:
        any:
          type: boolean
        errors: {}
        stockId:
          type: integer
          format: int64
        stockName:
          type: string
    backendv3StockMovementReasonDto:
      type: string
      enum:
      - STOCK_TRANSFER
      - ARRIVAL
      - CANCELLED_SALE
      - CANCELLED_DAMAGE
      - INVENTORY
      - SALE
      - DAMAGE
      - PRODUCTION
    backendv3StockMovementTypeDto:
      type: string
      enum:
      - INPUT
      - OUTPUT
    backendv3StockPositionActionDto:
      type: object
      discriminator:
        propertyName: type
      properties:
        businessLocationId:
          type: integer
          format: int64
        errors: {}
        id:
          type: integer
          format: int64
        name:
          type: string
        stockPositionActionTriggerId:
          type: integer
          format: int64
        type:
          type: string
      required:
      - type
    backendv3StockPositionActionEmailDto:
      allOf:
      - "$ref": "#/components/schemas/backendv3StockPositionActionDto"
      - type: object
        properties:
          mailDistributionListId:
            type: integer
            format: int64
          mailDistributionListName:
            type: string
      required:
      - mailDistributionListId
    backendv3StockPositionActionEmailReportDto:
      allOf:
      - "$ref": "#/components/schemas/backendv3StockPositionActionDto"
      - type: object
        properties:
          mailDistributionListId:
            type: integer
            format: int64
          mailDistributionListName:
            type: string
          reportDelay:
            "$ref": "#/components/schemas/backendv3ReportDelayDto"
          reportHour:
            type: integer
            format: int32
            maximum: 23
            minimum: 0
          reportMinute:
            type: integer
            format: int32
            maximum: 59
            minimum: 0
      required:
      - mailDistributionListId
      - reportDelay
    backendv3StockPositionActionTriggerDto:
      type: object
      discriminator:
        propertyName: type
      properties:
        actions:
          type: array
          items:
            oneOf:
            - "$ref": "#/components/schemas/backendv3StockPositionActionEmailDto"
            - "$ref": "#/components/schemas/backendv3StockPositionActionEmailReportDto"
            - "$ref": "#/components/schemas/backendv3StockPositionActionWebhookDto"
        businessLocationId:
          type: integer
          format: int64
        errors: {}
        id:
          type: integer
          format: int64
        productCriteria:
          "$ref": "#/components/schemas/backendv3ProductCriteriaDto"
        stockCriteria:
          "$ref": "#/components/schemas/backendv3StockCriteriaDto"
        type:
          type: string
      required:
      - type
    backendv3StockPositionActionWebhookDto:
      allOf:
      - "$ref": "#/components/schemas/backendv3StockPositionActionDto"
      - type: object
        properties:
          stockWebhookEndpointId:
            type: integer
            format: int64
          stockWebhookEndpointName:
            type: string
    backendv3StockRedirectionDto:
      type: object
      properties:
        errors: {}
        redirectedStockId:
          type: integer
          format: int64
        targetStockId:
          type: integer
          format: int64
    backendv3StockRefDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
    backendv3TagDto:
      type: object
      properties:
        autoGratuityOnQuickPaymentShortcut:
          type: boolean
        available:
          type: boolean
        changeTaxOnExistingItems:
          type: boolean
        code:
          type: string
          maxLength: 32
          minLength: 0
        commitScriptUrl:
          type: string
          maxLength: 255
          minLength: 0
        completionMode:
          "$ref": "#/components/schemas/backendv3CompletionMode"
        consumerRequired:
          type: boolean
        defaultTag:
          type: boolean
        deliveryMode:
          "$ref": "#/components/schemas/backendv3DeliveryMode"
        deliverySlipOnReceipt:
          type: boolean
        errors: {}
        forceNoPrintOnlineOrders:
          type: boolean
        hiddenOnPos:
          type: boolean
        id:
          type: integer
          format: int64
        minDeliveryDelay:
          type: integer
          format: int32
        name:
          type: string
          maxLength: 64
          minLength: 0
        playSoundOnOnlineOrders:
          type: boolean
        printNoteOnCreation:
          type: boolean
        printNoteOnReady:
          type: boolean
        qrToken:
          type: string
        qrTokenEnabled:
          type: boolean
        schedules:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3TagScheduleDto"
        serviceChargeItemId:
          type: integer
          format: int64
          deprecated: true
        serviceChargePercent:
          type: integer
          format: int32
          maximum: 50
          minimum: 0
        serviceChargeProductId:
          type: integer
          format: int64
        signageDeviceIpAddress:
          type: string
        sticky:
          type: boolean
      required:
      - code
      - completionMode
      - deliveryMode
      - name
    backendv3TagScheduleDto:
      type: object
      properties:
        active:
          type: boolean
        days:
          type: string
          maxLength: 128
          minLength: 0
        endTime:
          type: integer
          format: int32
        errors: {}
        startTime:
          type: integer
          format: int32
        useWhenAccount:
          type: boolean
        useWhenDirect:
          type: boolean
      required:
      - days
    backendv3TakingsReportValueDto:
      type: object
      properties:
        count:
          type: integer
          format: int32
        errors: {}
        id:
          type: integer
          format: int64
        paymentMethod:
          "$ref": "#/components/schemas/backendv3PaymentMethodDto"
        posValue:
          type: integer
          format: int32
        realValue:
          type: integer
          format: int32
        storedValue:
          type: integer
          format: int32
    backendv3TaxDto:
      type: object
      properties:
        accountingReference:
          type: string
          maxLength: 128
          minLength: 0
        category:
          "$ref": "#/components/schemas/backendv3Category"
        code:
          type: string
          maxLength: 32
          minLength: 0
        description:
          type: string
          maxLength: 128
          minLength: 0
        errors: {}
        id:
          type: integer
          format: int64
        rate:
          type: number
          format: double
          maximum: 100
          minimum: 0
        taxIncluded:
          type: boolean
      required:
      - code
      - description
      - rate
    backendv3TaxLineDto:
      type: object
      properties:
        errors: {}
        id:
          type: integer
          format: int64
        maxGroupQuantity:
          type: number
          format: double
        maxLinePrice:
          type: number
          format: double
        maxPrice:
          type: number
          format: double
        maxTaxTotalPrice:
          type: number
          format: double
        maxTotalPrice:
          type: number
          format: double
        minGroupQuantity:
          type: number
          format: double
        minLinePrice:
          type: number
          format: double
        minPrice:
          type: number
          format: double
        minTaxTotalPrice:
          type: number
          format: double
        minTotalPrice:
          type: number
          format: double
        multiTax:
          type: boolean
        notValidAfter:
          type: string
          format: date-time
        notValidBefore:
          type: string
          format: date-time
        tagCode:
          type: string
        tagId:
          type: integer
          format: int64
        tagName:
          type: string
        taxCode:
          type: string
        taxDescription:
          type: string
        taxId:
          type: integer
          format: int64
        taxOnNegativePrice:
          type: boolean
    backendv3TaxSummaryDto:
      type: object
      properties:
        amount:
          type: number
        amountLessTax:
          type: number
        amountWithTax:
          type: number
        code:
          type: string
        description:
          type: string
        rate:
          type: number
    backendv3TipCalculationMode:
      type: string
      enum:
      - BEFORE
      - AFTER
    backendv3TransactionLineDto:
      type: object
      properties:
        accountId:
          type: integer
          format: int64
        active:
          type: boolean
        activeAccountingGroupId:
          type: integer
          format: int64
        activeTaxDescription:
          type: string
        activeTaxId:
          type: integer
          format: int64
        amount:
          type: number
          format: double
        coverIndex:
          type: integer
          format: int32
        createDate:
          type: string
          format: date-time
        deviceDescription:
          type: string
        deviceId:
          type: integer
          format: int64
        discountIds:
          type: array
          items:
            type: integer
            format: int64
        grossAmount:
          type: number
          format: double
        grossUnitAmount:
          type: number
          format: double
        id:
          type: integer
          format: int64
        itemDescription:
          type: string
        itemId:
          type: integer
          format: int64
        manualAmount:
          type: number
          format: double
        manualDiscount:
          type: number
          format: double
        manualPrice:
          type: boolean
        modificationDate:
          type: string
          format: date-time
        nameOverride:
          type: string
        parentLineId:
          type: integer
          format: int64
        phase:
          type: integer
          format: int32
        quantity:
          type: number
          format: double
        staffDescription:
          type: string
        staffId:
          type: integer
          format: int64
        subLines:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3TransactionLineDto"
        totalAmount:
          type: number
          format: double
        unitAmount:
          type: number
          format: double
    backendv3UnitSystemDto:
      type: string
      enum:
      - METRIC
      - IMPERIAL
      - MIX_METRIC_IMPERIAL
      - US_CUSTOMARY
      - ALL
    backendv3UpdateAllergenItem:
      type: object
      description: An allergen item in an update request. If id is null, a new allergen
        is created.
      properties:
        id:
          "$ref": "#/components/schemas/backendv3JsonNullableLong"
        name:
          type: string
          description: The name of the allergen.
          maxLength: 128
          minLength: 1
      required:
      - name
    backendv3UpdateNoteItem:
      type: object
      description: A note item in an update request. If id is null, a new note is
        created.
      properties:
        content:
          type: string
          description: The content of the note.
          maxLength: 128
          minLength: 1
        displayedOnOrderTickets:
          type: boolean
          description: Whether the note should be displayed on order tickets.
        id:
          "$ref": "#/components/schemas/backendv3JsonNullableLong"
      required:
      - content
      - displayedOnOrderTickets
    backendv3UserExportHeaderDto:
      type: object
      properties:
        errors: {}
        headerKey:
          "$ref": "#/components/schemas/backendv3HeaderKey"
        headerTitle:
          type: string
          minLength: 1
      required:
      - headerKey
      - headerTitle
    backendv3UserType:
      type: string
      enum:
      - POS
      - BACK_OFFICE
      - API
      - STAFF_USER
    backendv3VIPProgramDto:
      type: object
      properties:
        businessId:
          type: integer
          format: int64
        discount:
          "$ref": "#/components/schemas/backendv3DiscountDto"
        errors: {}
        filter:
          "$ref": "#/components/schemas/backendv3ProductFilterDto"
        fromDate:
          type: string
          format: date-time
        id:
          type: integer
          format: int64
        name:
          type: string
          maxLength: 128
          minLength: 0
        toDate:
          type: string
          format: date-time
      required:
      - businessId
      - discount
      - fromDate
      - name
      - toDate
    backendv3VirtualProductionCenterType:
      type: string
      enum:
      - IKENTOO
      - QSR
      - QSRPLUS
      - DIRMEIER
      - ANNONCER
    backendv3VoidReasonPrintOrderTicketDto:
      type: string
      enum:
      - 'YES'
      - 'NO'
    backendv3VoidReasonTypeDto:
      type: string
      enum:
      - VOID
      - WASTE
    backendv3WebExtensionDomainDto:
      type: object
      properties:
        errors: {}
        id:
          type: integer
          format: int64
        mask:
          type: string
          maxLength: 128
          minLength: 0
      required:
      - mask
    backendv3WebExtensionDto:
      type: object
      properties:
        authPassword:
          type: string
          maxLength: 128
          minLength: 0
        authUserName:
          type: string
          maxLength: 128
          minLength: 0
        domains:
          type: array
          items:
            "$ref": "#/components/schemas/backendv3WebExtensionDomainDto"
          uniqueItems: true
        errors: {}
        experimentalFeaturesEnabled:
          type: boolean
        id:
          type: integer
          format: int64
        jsContext:
          type: boolean
        name:
          type: string
          maxLength: 64
          minLength: 0
        qrToken:
          type: string
        qrTokenEnabled:
          type: boolean
        url:
          type: string
          maxLength: 65535
          minLength: 0
        useLegacyEngine:
          type: boolean
      required:
      - name
      - url
    backendv3WebhookHeaderDto:
      type: object
      properties:
        errors: {}
        key:
          type: string
        value:
          type: string
        webhookEndpointId:
          type: integer
          format: int64
      required:
      - key
    backendv3WebhookMethodDto:
      type: string
      enum:
      - GET
      - PUT
      - POST
      - PATCH
      - DELETE
    backendv3WebhookParameterDto:
      type: object
      properties:
        errors: {}
        key:
          type: string
        value:
          type: string
        webhookEndpointId:
          type: integer
          format: int64
      required:
      - key
    be-tax-apiTaxRule:
      properties:
        id:
          example: 12345
          type: integer
          format: int64
        taxId:
          example: 12345
          type: integer
          format: int64
        tagId:
          example: 1241
          type: integer
          format: int64
        validForNegativePrice:
          example: true
          type: boolean
        conditions:
          items:
            "$ref": "#/components/schemas/be-tax-apiTaxRuleCondition"
          type: array
        multiTax:
          example: true
          type: boolean
      type: object
    be-tax-apiTaxRuleCondition:
      properties:
        type:
          "$ref": "#/components/schemas/be-tax-apiTaxConditionType"
        range:
          "$ref": "#/components/schemas/be-tax-apiRange"
      type: object
    be-tax-apiTax:
      properties:
        id:
          example: 1245
          type: integer
          format: int64
        code:
          example: TAX
          type: string
        description:
          example: Regular tax
          type: string
        rate:
          example: 0.1
          type: number
        isTaxIncluded:
          example: true
          type: boolean
        accountingReference:
          example: ref
          type: string
        taxCategory:
          "$ref": "#/components/schemas/be-tax-apiTaxCategory"
      type: object
    be-tax-apiTaxConditionType:
      enum:
      - ITEM_UNIT_PRICE
      - TRANSACTION_LINE_PRICE
      - SUM_OF_ITEMS_WITH_THE_SAME_TAX_PROFILE
      - SUM_OF_ALL_THE_ITEMS_ON_THE_SAME_RECEIPT
      - VALIDITY_RANGE
      - ACCOUNT_GROUP_QUANTITY
      type: string
    be-tax-apiTaxCategory:
      enum:
      - NOT_TAXED
      - AVERAGED_REDUCED
      - AVERAGED_REGULAR
      - REDUCED
      - REGULAR
      - HIGH
      - MID
      - LOW
      - ZERO_RATE
      - PROVINCIAL
      - FEDERAL
      type: string
    be-tax-apiTaxRuleFull:
      properties:
        id:
          example: 12345
          type: integer
          format: int64
        tax:
          "$ref": "#/components/schemas/be-tax-apiTax"
        tagId:
          example: 1241
          type: integer
          format: int64
        validForNegativePrice:
          example: true
          type: boolean
        conditions:
          items:
            "$ref": "#/components/schemas/be-tax-apiTaxRuleCondition"
          type: array
        multiTax:
          example: true
          type: boolean
      type: object
    be-tax-apiDateRange:
      allOf:
      - "$ref": "#/components/schemas/be-tax-apiRange"
      - properties:
          rangeEnd:
            format: date-time
            type: string
          rangeStart:
            format: date-time
            type: string
        type: object
      type: object
    be-tax-apiNumberRange:
      allOf:
      - "$ref": "#/components/schemas/be-tax-apiRange"
      - properties:
          rangeEnd:
            type: number
          rangeStart:
            type: number
        type: object
      type: object
    be-tax-apiRange:
      discriminator:
        propertyName: rangeType
      oneOf:
      - "$ref": "#/components/schemas/be-tax-apiDateRange"
      - "$ref": "#/components/schemas/be-tax-apiNumberRange"
      properties:
        rangeType:
          type: string
      required:
      - rangeType
    business-config-apiUserRoleDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
    business-config-apiPrinterDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        driver:
          type: string
    business-config-apiPrintingProfileDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier of the printer profile.
        name:
          type: string
          maxLength: 64
          description: The name of the printer profile.
        copies:
          type: integer
          format: int32
          minimum: 1
          maximum: 5
          description: The number of copies to print.
        printers:
          type: array
          items:
            "$ref": "#/components/schemas/business-config-apiFullPrintersDtoResponse"
          description: A list of printers associated with the profile.
        businessLocationName:
          type: string
          description: The name of the business location.
        fiscal:
          type: boolean
          description: Indicates if the profile is fiscal.
        fallbackHeader:
          type: boolean
          description: Indicates if the profile uses a fallback header.
      required:
      - name
      - copies
    business-config-apiFullPrintersDtoResponse:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier of the printer.
        name:
          type: string
          maxLength: 64
          description: The name of the printer.
        ipAddress:
          type: string
          description: The IP address of the printer.
        hardwareAddress:
          type: string
          description: The hardware (MAC) address of the printer.
        driver:
          "$ref": "#/components/schemas/business-config-apiFullPrinterDriverDto"
        disableStatusCheck:
          type: boolean
          description: Indicates if the status check is disabled.
        ownQRCodeEncoder:
          type: boolean
          description: Indicates if the printer has its own QR code encoder.
        businessLocationName:
          type: string
          description: The name of the business location.
      required:
      - name
      - driver
    business-config-apiFullPrinterDriverDto:
      type: object
      properties:
        name:
          type: string
          description: The name of the driver.
        fiscal:
          type: boolean
          description: Indicates if the printer is fiscal
          example: false
        hwAddress:
          type: boolean
          description: Indicates if the printer requires a hardware address
          example: true
        ipAddress:
          type: boolean
          description: Indicates if the printer supports an IP address
          example: true
        statusCheckSupported:
          type: boolean
          description: Indicates if the printer supports status checks
          example: true
    business-config-apiAccountProfileDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        code:
          type: string
        sticky:
          type: boolean
          default: false
        available:
          type: boolean
          default: true
        deliveryMode:
          "$ref": "#/components/schemas/business-config-apiDeliveryMode"
        isDefault:
          type: boolean
          default: false
    business-config-apiCompletionMode:
      type: string
      enum:
      - IMMEDIATE
      - ON_DELIVERY
      - ON_DELIVERED
      - MANUALLY
      default: IMMEDIATE
    business-config-apiDeliveryMode:
      type: string
      enum:
      - NONE
      - COLLECTION
      - REMOTE
      default: NONE
    business-config-apiAccountProfileScheduleDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        active:
          type: boolean
        startTime:
          type: integer
          format: int64
        endTime:
          type: integer
          format: int64
        days:
          type: string
        useWhenDirect:
          type: boolean
          default: true
        useWhenAccount:
          type: boolean
          default: true
    business-config-apiAccountingGroupDto:
      type: object
      properties:
        available:
          type: boolean
        countForCovers:
          type: boolean
        id:
          type: integer
          format: int64
        itemCount:
          type: integer
          format: int64
        locationSpecific:
          "$ref": "#/components/schemas/business-config-apiAccountingGroupLocationSpecificDto"
        name:
          type: string
          maxLength: 25
          minLength: 0
        productionCenter:
          type: string
          maxLength: 1023
          minLength: 0
        reference:
          type: string
          maxLength: 128
          minLength: 0
        secondaryProductionCenter:
          type: string
          maxLength: 1023
          minLength: 0
        siCount:
          type: integer
          format: int64
          description: Number of saleable items in this accounting group
        statisticGroup:
          type: string
          maxLength: 500
          minLength: 0
        taxProfileCode:
          type: string
        taxProfileDescription:
          type: string
        taxProfileId:
          type: integer
          format: int64
        unlinkedCount:
          type: integer
          format: int64
      required:
      - name
    business-config-apiAccountingGroupLocationSpecificDto:
      type: object
      properties:
        exemptFromMandatoryBilling:
          type: boolean
    business-config-apiPmsParamsValue:
      type: object
      properties:
        label:
          type: string
        value:
          type: string
        disabled:
          type: boolean
    business-config-apiPmsParamDefinition:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
        type:
          type: string
        options:
          type: array
          items:
            "$ref": "#/components/schemas/business-config-apiPmsParamsValue"
    business-config-apiPmsDto:
      type: object
      required:
      - values
      properties:
        providerName:
          type: string
        nativeApiKey:
          type: string
        nativeApiUsername:
          type: string
        nativeApiPassword:
          type: string
        values:
          type: object
          additionalProperties:
            type: string
        config:
          type: object
          additionalProperties:
            type: string
    business-config-apiCreateAccountProfileScheduleDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        active:
          type: boolean
        startTime:
          type: integer
          format: int64
        endTime:
          type: integer
          format: int64
        days:
          type: string
        useWhenDirect:
          type: boolean
          default: true
        useWhenAccount:
          type: boolean
          default: true
    business-config-apiFdm2InvalidSsnUserDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        displayName:
          type: string
    business-config-apiNegativeItemDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        sku:
          type: string
        businessLocationId:
          type: integer
          format: int64
    business-config-apiVoidReasonPrintOrderTicket:
      type: string
      default: 'YES'
      enum:
      - 'YES'
      - 'NO'
    business-config-apiVoidReasonType:
      type: string
      enum:
      - VOID
      - WASTE
      default: VOID
    businessinfo-apiApiValidationErrorsDto:
      type: object
      properties:
        field:
          type: string
        rejectedValue:
          type: object
        message:
          type: string
    businessinfo-apiBusinessDetailsDtoV2:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        status:
          type: string
        locale:
          type: string
        priceListEnabled:
          type: boolean
        currency:
          type: string
      required:
      - id
      - name
      - status
      - locale
      - priceListEnabled
      - currency
    businessinfo-apiBusinessLocationLiteDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
    businessinfo-apiAddressDto:
      type: object
      properties:
        addressLine1:
          type: string
        addressLine2:
          type: string
        zipCode:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          type: string
        phone:
          type: string
    businessinfo-apiAddressDtoV2:
      type: object
      properties:
        addressLine1:
          type: string
        addressLine2:
          type: string
        zipCode:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          type: string
        phone:
          type: string
    businessinfo-apiBusinessLocationDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        businessId:
          type: integer
          format: int64
        name:
          type: string
        tradeName:
          type: string
        city:
          type: string
        country:
          type: string
        status:
          type: string
        timezone:
          type: string
        creationDate:
          type: string
          format: date-time
        version3:
          type: boolean
        timeTrackingEnabled:
          type: boolean
        license:
          "$ref": "#/components/schemas/businessinfo-apiLicenseDto"
        defaultStockId:
          type: integer
          format: int64
        startOfDay:
          type: integer
          format: int32
          default: 0
        startOfWeek:
          type: string
        moveToProdDate:
          type: string
        address:
          "$ref": "#/components/schemas/businessinfo-apiAddressDto"
        salesforceId:
          type: string
        active:
          type: boolean
        isMigratedProvisioning:
          type: boolean
        isTemplate:
          type: boolean
        localOrdersKey:
          type: string
        overrideCode:
          type: integer
          format: int32
          default: 0
        contractStartDate:
          type: string
          format: date-time
        billingState:
          type: string
        maxCovers:
          type: integer
          format: int32
          default: 0
    businessinfo-apiLocationDetailsDtoV2:
      type: object
      properties:
        id:
          type: integer
          format: int64
        businessId:
          type: integer
          format: int64
        name:
          type: string
        tradeName:
          type: string
        city:
          type: string
        country:
          type: string
        status:
          type: string
        timezone:
          type: string
        creationDate:
          type: string
          format: date-time
        version3:
          type: boolean
        timeTrackingEnabled:
          type: boolean
        defaultStockId:
          type: integer
          format: int64
        startOfDay:
          type: integer
          format: int32
          default: 0
        startOfWeek:
          type: string
        moveToProdDate:
          type: string
        address:
          "$ref": "#/components/schemas/businessinfo-apiAddressDtoV2"
        salesforceId:
          type: string
        active:
          type: boolean
        isMigratedProvisioning:
          type: boolean
        isTemplate:
          type: boolean
        localOrdersKey:
          type: string
        overrideCode:
          type: integer
          format: int32
          default: 0
        contractStartDate:
          type: string
          format: date-time
        billingState:
          type: string
        maxCovers:
          type: integer
          format: int32
          default: 0
        license:
          "$ref": "#/components/schemas/businessinfo-apiLicenseDtoV2"
        fdmEnabled:
          type: boolean
          description: |
            Indicates whether a Fiscal Data Module (FDM / "blackbox") is enabled for this
            business location. Always `false` for non-Belgian locations. `true` for Belgian
            (BE) locations when at least one record exists in FISCAL_DATA_MODULE or
            FISCAL_DATA_MODULE_2 with `unblackboxed = false`.
      required:
      - id
      - businessId
      - name
      - city
      - country
      - status
      - timezone
      - version3
      - active
      - isMigratedProvisioning
      - isTemplate
      - license
    businessinfo-apiLicenseDevicesDtoV2:
      type: object
      properties:
        businessLocationId:
          type: integer
          format: int64
        type:
          type: string
        grantedDevices:
          type: integer
          format: int32
        consumedDevices:
          type: integer
          format: int32
      required:
      - businessLocationId
      - type
      - grantedDevices
      - consumedDevices
    businessinfo-apiLicenseDevicesDto:
      type: object
      properties:
        businessLocationId:
          type: integer
          format: int64
        type:
          type: string
        grantedDevices:
          type: integer
          format: int32
        consumedDevices:
          type: integer
          format: int32
    businessinfo-apiLicenseDtoV2:
      type: object
      properties:
        expirationDate:
          type: string
          format: date
        model:
          type: string
        status:
          type: string
        devices:
          uniqueItems: true
          type: array
          items:
            "$ref": "#/components/schemas/businessinfo-apiLicenseDevicesDtoV2"
      required:
      - model
      - status
      - devices
    businessinfo-apiLicenseDto:
      type: object
      properties:
        expirationDate:
          type: string
          format: date
        model:
          type: string
        status:
          type: string
        devices:
          uniqueItems: true
          type: array
          items:
            "$ref": "#/components/schemas/businessinfo-apiLicenseDevicesDto"
    businessinfo-apiBusinessDtoV2:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        currency:
          type: string
        priceListEnabled:
          type: boolean
          default: false
        managedBilling:
          type: boolean
          default: false
        status:
          type: string
        inventoryEnabled:
          type: boolean
          default: false
        productModifiersEnabled:
          type: boolean
        locale:
          type: string
        creationDate:
          type: string
          format: date-time
        activeLocationsCount:
          type: integer
          format: int32
        locations:
          type: array
          items:
            "$ref": "#/components/schemas/businessinfo-apiLocationDetailsDtoV2"
      required:
      - id
      - name
      - currency
      - priceListEnabled
      - managedBilling
      - status
      - inventoryEnabled
      - productModifiersEnabled
      - locale
      - activeLocationsCount
      - locations
    businessinfo-apiLicenseStatusEnumDto:
      type: string
      enum:
      - ACTIVE
      - GRACE_PERIOD
      - PAID
      - UNPAID
      - REVOKED
      - EXPIRED
      - NO_LICENSE
    businessinfo-apiPageMetadata:
      type: object
      properties:
        total:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int32
        current:
          type: object
          properties:
            page:
              type: integer
              format: int32
            pageSize:
              type: integer
              format: int32
    categorization-serviceClassifiedItem:
      properties:
        accounting_group:
          title: Accounting Group
          type: string
          example: drinks
        business_location_id:
          title: Business Location Id
          type: string
          example: '2212'
        item_id:
          title: Item Id
          type: string
          example: '11111'
        item_name:
          title: Item Name
          type: string
          example: Amarone della valpolicella  2
        l1_category:
          "$ref": "#/components/schemas/categorization-serviceL1Category"
        l2_category:
          "$ref": "#/components/schemas/categorization-serviceL2Category"
      required:
      - item_name
      - accounting_group
      - business_location_id
      - item_id
      - l1_category
      title: ClassifiedItem
      type: object
    categorization-serviceClassifiedItemV2:
      properties:
        accounting_group:
          title: Accounting Group
          type: string
          example: drinks
        business_location_id:
          title: Business Location Id
          type: string
          example: '2212'
        item_id:
          title: Item Id
          type: string
          example: '11111'
        item_name:
          title: Item Name
          type: string
          example: Grilled Beef Burger
        hierarchy_version:
          title: Hierarchy version
          type: string
          nullable: true
          example: '2025-06-26'
        l1_category:
          "$ref": "#/components/schemas/categorization-serviceCategoryScore"
        l2_category:
          allOf:
          - "$ref": "#/components/schemas/categorization-serviceCategoryScore"
          nullable: true
        l3_primary_category:
          allOf:
          - "$ref": "#/components/schemas/categorization-serviceCategoryScore"
          nullable: true
          description: Primary L3 facet. The underlying dimension depends on the item's
            L1/L2 path and may change (currently the type of protein for savory food
            and the beverage type)
        l3_secondary_category:
          allOf:
          - "$ref": "#/components/schemas/categorization-serviceCategoryScore"
          nullable: true
          description: Secondary L3 facet. The underlying dimension depends on the
            item's L1/L2 path and may change (currently the dish type for savory food).
            Only present for some categories.
      required:
      - item_name
      - accounting_group
      - business_location_id
      - item_id
      - l1_category
      title: ClassifiedItemV2
      type: object
    categorization-serviceCategoryScore:
      title: CategoryScore
      type: object
      description: A classification value with its confidence score
      properties:
        value:
          type: string
          nullable: true
          example: FOOD
        score:
          type: number
          format: float
          nullable: true
          example: 0.99
    categorization-serviceItemRequest:
      properties:
        accounting_group:
          title: Accounting Group
          type: string
          example: drinks
        business_location_id:
          title: Business Location Id
          type: string
          example: '2212'
        item_id:
          title: Item Id
          type: string
          example: '11111'
        item_name:
          title: Item Name
          type: string
          example: Amarone della valpolicella (2)
      required:
      - item_name
      - accounting_group
      - business_location_id
      - item_id
      title: ItemRequest
      type: object
    categorization-servicePosSeriesPrefix:
      enum:
      - lsk
      - lsu
      title: PosSeriesPrefix
      type: string
    categorization-serviceL1Category:
      enum:
      - FOOD
      - BEVERAGE
      - MERCHANDISE
      - UNKNOWN
      - UNCLASSIFIABLE
      title: L1Category
      type: string
      description: |
        Top-level category classification for items.
        - FOOD: Food items
        - BEVERAGE: Drink items
        - MERCHANDISE: Non-food, non-drink products
        - UNKNOWN: Item has been processed but we could not determine a category with a high amount of confidence
        - UNCLASSIFIABLE: Legacy local classification; should not be returned in normal API responses
    categorization-serviceL2Category:
      enum:
      - ALCOHOLIC
      - NON-ALCOHOLIC
      title: L2Category
      type: string
      description: Second level category for beverages (Food L2 is empty for now).
        It can be null as we initially only classified L1.
      nullable: true
    categorization-serviceL3Categories:
      type: object
      title: L3Categories
      required:
      - l3_primaries
      - l3_secondaries
      properties:
        l3_primaries:
          type: array
          items:
            type: string
          description: Canonical L3 primary category names under this L2
        l3_secondaries:
          type: array
          items:
            type: string
          description: 'Canonical L3 secondary category names. Empty for L2s without
            a secondary facet (today: only food/savory has them)

            '
    categorization-serviceL2Categories:
      type: object
      title: L2Categories
      description: Map of L2 category names to their L3 contents
      additionalProperties:
        "$ref": "#/components/schemas/categorization-serviceL3Categories"
    consumer-gatewayBillStatementTaxLineDto:
      properties:
        description:
          type: string
        itemId:
          type: string
        postTaxAmountCents:
          format: int64
          type: integer
        preTaxAmountCents:
          format: int64
          type: integer
        rateDescription:
          type: string
        taxAmountCents:
          format: int64
          type: integer
        taxCode:
          type: string
        taxIncluded:
          type: boolean
        taxName:
          type: string
        taxRate:
          format: double
          type: number
      type: object
    consumer-gatewayOrderStatementLineDto:
      properties:
        id:
          type: string
        grossUnitAmountCents:
          format: int64
          type: integer
        modifiers:
          items:
            type: string
          type: array
        name:
          type: string
        quantity:
          format: int32
          type: integer
        totalAmountCents:
          format: int64
          type: integer
        sku:
          type: string
        unitAmountCents:
          format: int64
          type: integer
        discountedAmountCents:
          format: int64
          type: integer
        discountPercentage:
          format: int32
          type: integer
        subItems:
          items:
            "$ref": "#/components/schemas/consumer-gatewayOrderStatementLineDto"
          type: array
      type: object
    consumer-gatewayAccountActivityDto:
      properties:
        activityType:
          enum:
          - ITEM_ADDED
          - ITEM_REMOVED
          - PAYMENT_ADDED
          - PAYMENT_REMOVED
          - ACCOUNT_OPENED
          - ACCOUNT_CLOSED
          type: string
        amount:
          format: int64
          type: integer
        description:
          type: string
        paymentMethod:
          type: string
        productName:
          type: string
        quantity:
          format: int32
          type: integer
        reportedAt:
          format: date-time
          type: string
        totalAmount:
          format: int64
          type: integer
      type: object
    consumer-gatewayNotificationDto:
      discriminator:
        propertyName: type
      properties:
        businessLocationId:
          description: The business location id related to this notification
          format: int64
          type: integer
        ikentooAccountId:
          deprecated: true
          format: int64
          type: integer
        ikentooAccountIdentifier:
          type: string
        reason:
          description: Reason for failure if there is one
          type: string
        thirdPartyReference:
          description: Third-party reference you provided when the order or payment
            was placed.
          type: string
        type:
          description: The type of notification
          type: string
      type: object
    consumer-gatewayAccountSnapshot:
      description: Related account (if the webhook is configured to provide it)
      properties:
        clientCount:
          description: The number of guests at the table
          format: int32
          type: integer
        closeDate:
          description: Date this account was closed in UTC
          format: date-time
          type: string
        currentAmount:
          description: The current total amount on the check
          type: number
        deviceId:
          format: int64
          type: integer
        id:
          type: string
          writeOnly: true
        identifier:
          type: string
          writeOnly: true
        ikaccountId:
          type: string
        name:
          description: The check name
          type: string
        number:
          format: int32
          type: integer
          writeOnly: true
        openDate:
          description: Date this account was opened in UTC
          format: date-time
          type: string
        paidAmount:
          description: The total of all payments on the check
          type: number
        paymentEntries:
          description: Collection of check items
          items:
            "$ref": "#/components/schemas/consumer-gatewayAccountPaymentLine"
          type: array
        posId:
          format: int64
          type: integer
        salesEntries:
          description: Collection of check items
          items:
            "$ref": "#/components/schemas/consumer-gatewayAccountLineItem"
          type: array
        serviceCharge:
          description: The service charge of the check
          type: number
        staffId:
          description: The unique ID of the staff member assigned to the check
          format: int64
          type: integer
        staffName:
          description: The name of the staff member assigned to the check
          type: string
        tableNumber:
          format: int32
          type: integer
        uuid:
          description: Account uuid
          type: string
      type: object
    consumer-gatewayAccountLineItem:
      description: Collection of check items
      properties:
        active:
          deprecated: true
          type: boolean
        amountLessTax:
          description: The total price of the item without tax
          type: number
        amountWithTax:
          description: The total price of the item including tax
          type: number
        discountedAmount:
          description: The amount the item was discounted
          type: number
        id:
          description: The unique ID assigned to the sale line
          format: int64
          type: integer
        itemName:
          description: The name given to the item
          type: string
        itemSku:
          description: The SKU assigned to the item
          type: string
        modifiers:
          description: The modifiers of the item for this sale line
          items:
            "$ref": "#/components/schemas/consumer-gatewayModifier"
          type: array
        parentId:
          format: int64
          type: integer
          writeOnly: true
        quantity:
          description: The quantity of the item for this sale line
          format: double
          type: number
        subLineItems:
          description: Collection of sub-lines
          items:
            "$ref": "#/components/schemas/consumer-gatewayAccountLineItem"
          type: array
        taxIncluded:
          type: boolean
        timeOfTransactionUtc:
          description: Date/Time in UTC of this transaction
          format: date-time
          type: string
        unitAmount:
          description: The unit amount for a single item
          type: number
        uuid:
          description: The unique UUID assigned to the sale line
          type: string
      type: object
    consumer-gatewayModifier:
      properties:
        sid:
          format: int32
          type: integer
        identifier:
          type: string
        modifierGroupId:
          format: int32
          type: integer
        name:
          type: string
        unitPriceCents:
          format: int64
          type: integer
      type: object
    consumer-gatewayAccountPaymentLine:
      description: Collection of check items
      properties:
        accountCancelled:
          type: boolean
          writeOnly: true
        active:
          description: whether this payment line is active or not (i.e. has been cancelled)
          type: boolean
        amountPaid:
          description: Amount paid for this payment line
          type: number
        externalReference:
          description: Payment external reference
          type: string
        gratuityAmount:
          description: Tip payment amount
          type: number
        paymentDate:
          description: Date/Time in UTC of this payment
          format: date-time
          type: string
        paymentMethodCode:
          description: Payment method code for this payment line
          type: string
        paymentMethodDescription:
          description: Payment method for this payment line
          type: string
      type: object
    consumer-gatewayOrderErrorsDto:
      description: Order errors
      properties:
        salesRestrictions:
          "$ref": "#/components/schemas/consumer-gatewaySalesRestrictionsErrorDto"
      type: object
    consumer-gatewaySalesRestrictionsErrorDto:
      properties:
        skus:
          items:
            type: string
          type: array
          uniqueItems: true
      type: object
    consumer-gatewayPaymentMetadata:
      properties:
        pspReference:
          type: string
      type: object
    consumer-gatewayPaymentStatus:
      type: string
      enum:
      - PENDING
      - AUTHORIZED
      - CONFIRMED
      - CAPTURED
      - FAILED
      - ABORTED
      - REFUNDED
      - CANCELLED
      description: Payment status enum
    consumer-gatewayPaymentCheckoutDataRequest:
      properties:
        shopperIp:
          type: string
        shopperEmail:
          type: string
        amount:
          "$ref": "#/components/schemas/consumer-gatewayAmount"
        browserInfo:
          "$ref": "#/components/schemas/consumer-gatewayBrowserInfo"
        clientStateDataIndicator:
          type: boolean
        merchantAccount:
          type: string
          minLength: 1
        origin:
          type: string
        paymentMethod:
          "$ref": "#/components/schemas/consumer-gatewayPaymentMethod"
        providerName:
          enum:
          - ADYEN
          - DEV
          type: string
        reference:
          type: string
          minLength: 1
        returnUrl:
          type: string
          minLength: 1
        riskData:
          "$ref": "#/components/schemas/consumer-gatewayRiskData"
        shopperInteraction:
          type: string
          minLength: 1
        store:
          type: string
          minLength: 1
      required:
      - amount
      - merchantAccount
      - paymentMethod
      - providerName
      - reference
      - returnUrl
      - shopperInteraction
      - store
      type: object
    consumer-gatewayPaymentData:
      properties:
        amountCents:
          format: int32
          type: integer
        currency:
          type: string
        customerName:
          type: string
        paymentRef:
          type: string
          minLength: 1
        tipCents:
          format: int64
          type: integer
        paidSaleLines:
          type: array
          items:
            type: string
      required:
      - paymentRef
      type: object
    consumer-gatewayAmount:
      properties:
        currency:
          type: string
        value:
          format: int64
          type: integer
      type: object
    consumer-gatewayBrowserInfo:
      properties:
        acceptHeader:
          type: string
        colorDepth:
          format: int32
          type: integer
        javaEnabled:
          type: boolean
        language:
          type: string
        screenHeight:
          format: int32
          type: integer
        screenWidth:
          format: int32
          type: integer
        timeZoneOffset:
          format: int32
          type: integer
        userAgent:
          type: string
      type: object
    consumer-gatewayPaymentMethod:
      properties:
        applePayToken:
          type: string
        brand:
          type: string
        encryptedCardNumber:
          type: string
        encryptedExpiryMonth:
          type: string
        encryptedExpiryYear:
          type: string
        encryptedSecurityCode:
          type: string
        googlePayToken:
          type: string
        holderName:
          type: string
        issuer:
          type: string
        type:
          type: string
      required:
      - type
      type: object
    consumer-gatewayRiskData:
      properties:
        clientData:
          type: string
      type: object
    customers-apiCustomer:
      type: object
      properties:
        id:
          type: integer
          format: int64
        uuid:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        company:
          "$ref": "#/components/schemas/customers-apiCompany"
        creationDate:
          type: string
          format: date-time
        modificationDate:
          type: string
          format: date-time
        contactInfo:
          "$ref": "#/components/schemas/customers-apiContactInfo"
        address:
          "$ref": "#/components/schemas/customers-apiAddress"
        emailNotifications:
          type: boolean
        statistics:
          "$ref": "#/components/schemas/customers-apiStatistics"
        notes:
          type: string
        accountProfile:
          "$ref": "#/components/schemas/customers-apiAccountProfile"
        discount:
          "$ref": "#/components/schemas/customers-apiDiscount"
        isDeletable:
          type: boolean
    customers-apiCompany:
      type: object
      properties:
        name:
          type: string
    customers-apiContactInfo:
      type: object
      properties:
        phoneNumber1:
          type: string
        phoneNumber2:
          type: string
        emailAddress:
          type: string
        language:
          type: string
        taxIdentifier:
          type: string
        fiscalCode:
          type: string
        destinationCode:
          type: string
        readOnlyFields:
          type: array
          items:
            type: string
    customers-apiAddress:
      type: object
      properties:
        addressLine1:
          type: string
        addressLine2:
          type: string
        zipCode:
          type: string
        city:
          type: string
        state:
          type: string
    customers-apiStatistics:
      type: object
      properties:
        receiptsCount:
          type: integer
          format: int64
        totalAmount:
          type: integer
          format: int64
        amountPerReceipt:
          type: integer
          format: int64
        gratuityAmount:
          type: integer
          format: int64
        gratuityAmountPerReceipt:
          type: integer
          format: int64
    customers-apiAccountProfile:
      type: object
      properties:
        id:
          type: integer
          format: int64
        code:
          type: string
        name:
          type: string
        isDefault:
          type: boolean
        takeawayMode:
          type: string
          enum:
          - DELIVERY
          - PICK_UP
          - NONE
        available:
          type: boolean
    customers-apiDiscount:
      type: object
      properties:
        id:
          type: integer
          format: int64
        code:
          type: string
        description:
          type: string
        percentageDiscount:
          type: number
          format: float
    customers-apiPagination:
      type: object
      required:
      - currentPage
      - perPage
      - totalPages
      - totalCount
      properties:
        currentPage:
          type: integer
          format: int64
        perPage:
          type: integer
          format: int64
        totalPages:
          type: integer
          format: int64
        totalCount:
          type: integer
          format: int64
    customers-apiExportFormat:
      type: object
      required:
      - option
      properties:
        option:
          type: string
          enum:
          - CSV_MAC
          - CSV_PC
          - CUSTOM
        cellDelimiter:
          type: string
          enum:
          - COMMA
          - SEMICOLON
        lineFeed:
          type: string
          enum:
          - LF
          - CRLF
        encoding:
          type: string
          enum:
          - UTF_8
          - LATIN_1
          - LATIN_1_WINDOWS_CP1252
    customers-apiExportCustomersFields:
      type: object
      properties:
        firstName:
          type: boolean
        lastName:
          type: boolean
        creationDate:
          type: boolean
        modificationDate:
          type: boolean
        emailNotifications:
          type: boolean
        contactInfo:
          "$ref": "#/components/schemas/customers-apiExportCustomersContactInfoFields"
        address:
          "$ref": "#/components/schemas/customers-apiExportCustomersAddressFields"
        statistics:
          "$ref": "#/components/schemas/customers-apiExportCustomersStatisticsFields"
    customers-apiExportCustomersContactInfoFields:
      type: object
      properties:
        language:
          type: boolean
        emailAddress:
          type: boolean
        phoneNumber1:
          type: boolean
        phoneNumber2:
          type: boolean
        taxIdentifier:
          type: boolean
        fiscalCode:
          type: boolean
        destinationCode:
          type: boolean
        company:
          "$ref": "#/components/schemas/customers-apiExportCustomersCompanyFields"
    customers-apiExportCustomersCompanyFields:
      type: object
      properties:
        name:
          type: boolean
    customers-apiExportCustomersAddressFields:
      type: object
      properties:
        addressLine1:
          type: boolean
        addressLine2:
          type: boolean
        zipCode:
          type: boolean
        city:
          type: boolean
        state:
          type: boolean
    customers-apiExportCustomersStatisticsFields:
      type: object
      properties:
        receiptsCount:
          type: boolean
        totalAmount:
          type: boolean
        amountPerReceipt:
          type: boolean
        gratuityAmount:
          type: boolean
        gratuityAmountPerReceipt:
          type: boolean
        invoicesAmount:
          type: boolean
        giftCardsAmount:
          type: boolean
    developer-portal-serviceOauthScope:
      description: Oauth scope to access a Lightspeed resource. The examples list
        is not comprehensive.
      type: string
      examples:
        orders-api:
          value: orders-api
          summary: The `orders-api` scope is used to place online orders and payments.
        financial-api:
          value: financial-api
          summary: The `financial-api` scope is used to access financial data.
        reservations-api:
          value: reservations-api
          summary: The `reservations-api` scope is used to place reservations and
            access reservation data.
        items:
          value: items
          summary: The `items` scope is used to manage menu and item data.
        propertymanagement:
          value: propertymanagement
          summary: The `propertymanagement` scope is used to configure PMS integrations.
    developer-portal-serviceInternalIntegrationInfoDto:
      properties:
        techSummary:
          anyOf:
          - type: string
          - type: 'null'
          title: Technical details
        onboardingSteps:
          items:
            type: string
          type: array
          title: Onboarding steps
        knownIssues:
          items:
            type: string
          type: array
          title: Known issues about the integration
        sku:
          anyOf:
          - type: string
          - type: 'null'
          title: Sku
      type: object
      title: InternalIntegrationInfoDto
    developer-portal-serviceOtherKeyInfoDto:
      properties:
        links:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceKeyValueDto"
          type: array
          title: Links
        faqs:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceFaqDto"
          type: array
          title: FAQs
      type: object
      title: Other Key Information Details
    developer-portal-serviceInternalPartnerInfoDto:
      properties:
        notes:
          anyOf:
          - type: string
          - type: 'null'
          title: Notes
        pricingNotes:
          anyOf:
          - type: string
          - type: 'null'
          title: Pricing Notes
        contactDetails:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceKeyValueDto"
          type: array
          title: Contact Details
      type: object
      title: InternalPartnerInfoDto
    developer-portal-serviceKeyValueDto:
      properties:
        key:
          type: string
          title: Key
        value:
          type: string
          title: Value
      type: object
      required:
      - key
      - value
      title: Key Value Object
    developer-portal-serviceFaqDto:
      properties:
        question:
          type: string
          title: Question
        answer:
          type: string
          title: Answer
      type: object
      required:
      - question
      - answer
      title: FAQ Object
    developer-portal-servicePartnerInfoDto-Output:
      properties:
        notes:
          anyOf:
          - type: string
          - type: 'null'
          title: Notes
        pricingNotes:
          anyOf:
          - type: string
          - type: 'null'
          title: Pricing Notes
        contactDetails:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceKeyValueDto"
          type: array
          title: Contact Details
      type: object
      title: PartnerInfoDto
    developer-portal-serviceIntegrationInfoDto-Output:
      properties:
        techSummary:
          anyOf:
          - type: string
          - type: 'null'
          title: Tech Summary
        onboardingSteps:
          items:
            type: string
          type: array
          title: Onboarding Steps
        knownIssues:
          items:
            type: string
          type: array
          title: Known Issues
        sku:
          anyOf:
          - type: string
          - type: 'null'
          title: Sku
      type: object
      title: Integration Information
    developer-portal-serviceWebExtensionDto:
      properties:
        id:
          type: integer
          title: Id
        name:
          type: string
          title: Name
        url:
          type: string
          title: Url
      type: object
      required:
      - id
      - name
      - url
      title: WebExtensionDto
    developer-portal-serviceBusinessLocationWithWebExDto:
      properties:
        id:
          type: integer
          title: Id
        name:
          type: string
          title: Name
        active:
          type: boolean
          title: Active
        webExtensions:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceWebExtensionDto"
          type: array
          title: Webextensions
      type: object
      required:
      - id
      - name
      - active
      - webExtensions
      title: BusinessLocationWithWebExDto
    developer-portal-serviceThirdPartyClientSummary:
      type: object
      description: Details of a 3rd party oauth client
      additionalProperties: true
      required:
      - display_name
      - client_id
      - scopes
      - redirect_uris
      - grant_types
      - access_token_validity
      - refresh_token_validity
      - managed
      - request_id
      - owner_email
      - organization
      - creator_email
      - created_at
      properties:
        display_name:
          type: string
          description: A human readable name for the client
        client_id:
          type: string
          description: The oauth client ID
        scopes:
          type: array
          description: The scopes this client is allowed to request
          items:
            "$ref": "#/components/schemas/developer-portal-serviceOauthScope"
        redirect_uris:
          type: array
          description: List of authorized redirect URIs for the authentication code
            exchange. Can be either http or https.
          items:
            type: string
            format: uri
            minLength: 1
        owner_email:
          anyOf:
          - type: string
            format: email
          - type: 'null'
          description: |
            Contact email for the partner (integrator) that will use this client.
            It can be null if this client is not managed by the developer portal.
        managed:
          type: boolean
          description: Whether the oauth client is managed by Developer Portal API
          readOnly: true
        request_id:
          anyOf:
          - type: string
          - type: 'null'
          description: |
            The request ID that created this client.
            It can be null if this client is not managed by the developer portal.
        organization:
          anyOf:
          - type: string
          - type: 'null'
          readOnly: true
        creator_email:
          anyOf:
          - type: string
            format: email
          - type: 'null'
          description: |
            Email of support user who created this client.
            It can be null if this client is not managed by the developer portal.
          readOnly: true
        created_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          description: |
            Time this client was created, or had its secret rotated.
            It can be null if this client is not managed by the developer portal.
          readOnly: true
        grant_types:
          anyOf:
          - items:
              "$ref": "#/components/schemas/developer-portal-serviceGrantTypes"
            type: array
          - type: 'null'
          title: Grant Types
        access_token_validity:
          anyOf:
          - type: integer
          - type: 'null'
          title: Access Token Validity
        refresh_token_validity:
          anyOf:
          - type: integer
          - type: 'null'
          title: Refresh Token Validity
    developer-portal-serviceAuditLogOut:
      properties:
        action:
          type: string
          title: Action
        by:
          type: string
          title: By
        data:
          type: object
          title: Data
          additionalProperties: true
        timestamp:
          type: string
          format: date-time
          title: Timestamp
      type: object
      required:
      - action
      - by
      - data
      - timestamp
      title: AuditLogOut
    developer-portal-serviceBusinessInfo:
      properties:
        request_type:
          type: string
          const: Business
          title: Request Type
          default: Business
        address:
          type: string
          title: Address
        zip_code:
          type: string
          title: Zip Code
        city:
          type: string
          title: City
        state:
          type: string
          title: State
        country:
          type: string
          title: Country
        business_name:
          type: string
          title: Business Name
        business_location_name:
          type: string
          title: Business Location Name
          default: ''
        business_location_language:
          type: string
          title: Business Location Language
        business_location_timezone:
          type: string
          title: Business Location Timezone
      type: object
      required:
      - address
      - zip_code
      - city
      - state
      - country
      - business_name
      - business_location_name
      - business_location_timezone
      - business_location_language
      title: BusinessInfo
    developer-portal-serviceClientInfo:
      properties:
        request_type:
          type: string
          const: Client
          title: Request Type
          default: Client
        display_name:
          type: string
          title: Display Name
        scopes:
          items:
            type: string
          type: array
          title: Scopes
        redirect_uris:
          items:
            format: uri
            type: string
            minLength: 1
          type: array
          title: Redirect Uris
        grant_types:
          anyOf:
          - items:
              "$ref": "#/components/schemas/developer-portal-serviceGrantTypes"
            type: array
          - type: 'null'
          title: Grant Types
        access_token_validity:
          anyOf:
          - minimum: 1.0
            maximum: 2592000.0
            type: integer
          - type: 'null'
          title: Access Token Validity
        refresh_token_validity:
          anyOf:
          - minimum: 1.0
            maximum: 2592000.0
            type: integer
          - type: 'null'
          title: Refresh Token Validity
      type: object
      required:
      - display_name
      - scopes
      - redirect_uris
      title: ClientInfo
    developer-portal-serviceAccess:
      type: object
      properties:
        request_type:
          type: string
          const: Access
          title: Request Type
          default: Access
      title: Access
    developer-portal-serviceGrantTypes:
      enum:
      - authorization_code
      - client_credentials
      - refresh_token
      - password
      - implicit
      title: GrantTypes
      type: string
    developer-portal-serviceLinks:
      properties:
        self:
          type: string
          minLength: 1
          format: uri
          title: Self
        prev:
          anyOf:
          - type: string
            minLength: 1
            format: uri
            title: Previous Page
          - type: 'null'
        next:
          anyOf:
          - type: string
            minLength: 1
            format: uri
            title: Next Page
          - type: 'null'
      type: object
      required:
      - self
      title: Links
    developer-portal-servicePlatformIntegrationDetails:
      properties:
        platformRestaurantId:
          anyOf:
          - type: string
          - type: 'null'
          description: Platform restaurant id used by the platform to map the location
            id
        locationId:
          type: integer
          description: Business location id integrated with the platform
        activatedCount:
          type: integer
          description: Count of activations for the location
        activatedAt:
          type: string
          format: date-time
          description: Date time when the location was activated
        deactivatedAt:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          description: Date time when the location was deactivated
      type: object
      required:
      - locationId
      - activatedCount
      - activatedAt
      description: Platform Integration Details
    developer-portal-serviceRequestAction:
      type: string
      enum:
      - CREATE
      - SUBMIT
      - APPROVE
      - REJECT
      - CANCEL
      - MANUAL_PROVISION
      - AUTO_PROVISION
      - AUTO_PROVISION_REQUEST_CHANGE
      - DEPROVISION
      - UPDATE
      - REQUEST_CHANGE
      - APPROVE_REQUEST_CHANGE
      - REJECT_REQUEST_CHANGE
      - MANUAL_PROVISION_REQUEST_CHANGE
      - AUTO_DEPROVISION
      title: RequestAction
    developer-portal-serviceRequestChangeIn:
      properties:
        name:
          type: string
          title: Name
          minLength: 1
        data:
          oneOf:
          - "$ref": "#/components/schemas/developer-portal-serviceBusinessInfo"
          - "$ref": "#/components/schemas/developer-portal-serviceClientInfo"
          title: Data
          discriminator:
            propertyName: request_type
            mapping:
              Business: "#/components/schemas/developer-portal-serviceBusinessInfo"
              Client: "#/components/schemas/developer-portal-serviceClientInfo"
      type: object
      required:
      - name
      - data
      title: RequestChangeIn
    developer-portal-serviceRequestChangeStatus:
      type: string
      enum:
      - Pending
      - Approved
      title: RequestChangeStatus
    developer-portal-serviceRequestIn:
      properties:
        name:
          type: string
          title: Name
          minLength: 1
        data:
          oneOf:
          - "$ref": "#/components/schemas/developer-portal-serviceBusinessInfo"
          - "$ref": "#/components/schemas/developer-portal-serviceClientInfo"
          title: Data
          discriminator:
            propertyName: request_type
            mapping:
              Business: "#/components/schemas/developer-portal-serviceBusinessInfo"
              Client: "#/components/schemas/developer-portal-serviceClientInfo"
      type: object
      required:
      - name
      - data
      title: RequestIn
    developer-portal-serviceRequestOut:
      properties:
        name:
          type: string
          title: Name
          minLength: 1
        data:
          oneOf:
          - "$ref": "#/components/schemas/developer-portal-serviceBusinessInfo"
          - "$ref": "#/components/schemas/developer-portal-serviceClientInfo"
          - "$ref": "#/components/schemas/developer-portal-serviceAccess"
          title: Data
          discriminator:
            propertyName: request_type
            mapping:
              Business: "#/components/schemas/developer-portal-serviceBusinessInfo"
              Client: "#/components/schemas/developer-portal-serviceClientInfo"
              Access: "#/components/schemas/developer-portal-serviceAccess"
        id:
          type: string
          title: Id
        provisioned_id:
          anyOf:
          - type: string
            title: Provisioned Id
          - type: 'null'
        owner_email:
          type: string
          format: email
          title: Owner Email
        owner_full_name:
          type: string
          title: Owner Full Name
        owner_organization_name:
          type: string
          title: Owner Organization Name
        status:
          "$ref": "#/components/schemas/developer-portal-serviceRequestStatus"
        required_action:
          description: Action required to be taken by the user
          anyOf:
          - "$ref": "#/components/schemas/developer-portal-serviceRequestAction"
          - type: 'null'
        last_action:
          "$ref": "#/components/schemas/developer-portal-serviceRequestAction"
        last_action_timestamp:
          type: string
          format: date-time
          title: Last Action Timestamp
        created_timestamp:
          type: string
          format: date-time
          title: Created Timestamp
      type: object
      required:
      - name
      - data
      - id
      - provisioned_id
      - owner_email
      - owner_full_name
      - owner_organization_name
      - status
      - last_action
      - last_action_timestamp
      - required_action
      - created_timestamp
      title: RequestOut
    developer-portal-serviceRequestStatus:
      type: string
      enum:
      - Draft
      - Cancelled
      - PendingReview
      - Rejected
      - Approved
      - Provisioned
      - Deprovisioned
      - Deprovisioning
      title: RequestStatus
    developer-portal-servicePlatformsDetails:
      properties:
        platformCode:
          type: string
          description: Unique code of the platform
        displayName:
          anyOf:
          - type: string
          - type: 'null'
          description: Display name of the platform
        createdAt:
          type: string
          format: date-time
          description: Date of creation of the platform
        depositSupported:
          type: boolean
          description: Whether or not the platform supports deposits
        ownNotificationsOnly:
          type: boolean
          description: When true, notifications will only be sent for orders linked
            to the reservation platform
        baseUrl:
          anyOf:
          - type: string
          - type: 'null'
          description: Base URL of the external platform
        orderWebhookUrl:
          anyOf:
          - type: string
          - type: 'null'
          description: URL where order notifications will be sent
        onboardingWebhookUrl:
          anyOf:
          - type: string
          - type: 'null'
          description: URL where onboarding notifications will be sent
        integrationWebhookUrl:
          anyOf:
          - type: string
          - type: 'null'
          description: URL where notifications for activation or deactivation of the
            customer's integration will be sent
        errorsWebhookUrl:
          anyOf:
          - type: string
          - type: 'null'
          description: URL where error notifications will be sent
        notificationTypes:
          anyOf:
          - items:
              "$ref": "#/components/schemas/developer-portal-serviceNotificationType"
            type: array
          - type: 'null'
          description: The events that trigger a notification
        webhookAuthType:
          description: Type of authentication used by the webhook.
          anyOf:
          - "$ref": "#/components/schemas/developer-portal-serviceWebhookAuthType"
          - type: 'null'
        allowedPosStatuses:
          anyOf:
          - items:
              type: string
              enum:
              - ON_HOLD
              - SCHEDULED
              - PARTIALLY_ARRIVED
              - ARRIVED
              - PARTIALLY_SEATED
              - SEATED
              - DEPARTED
              - CANCELLED
              - NO_SHOW
              - ERROR
            type: array
          - type: 'null'
          description: List of allowed POS statuses for the platform
        posReservationUpdateWebhookUrl:
          anyOf:
          - type: string
          - type: 'null'
          description: URL where POS reservation update notifications will be sent
      type: object
      required:
      - platformCode
      - createdAt
      - depositSupported
      - ownNotificationsOnly
      description: Platforms details used for reservations
    developer-portal-servicePageReservationIntegrationDetail:
      properties:
        platformRestaurantId:
          type: string
          title: Id of the restaurant on the third party platform
        locationId:
          type: integer
          title: Business Location Id of the restaurant in K-Series
        activatedCount:
          type: integer
          title: Number of times the integration has been activated
        createdAt:
          type: string
          format: date-time
          title: Date of creation of the integration
        activatedAt:
          type: string
          format: date-time
          title: Date of activation of the integration
        deactivatedAt:
          type: string
          format: date-time
          title: Date of deactivation of the integration
      type: object
      title: Reservation Integration Details
    developer-portal-serviceViewExistingIntegrationDetailsDto:
      properties:
        displayName:
          type: string
          description: Display name of the integration
        integrationCode:
          type: string
          description: Unique code of the integration
        developerType:
          anyOf:
          - "$ref": "#/components/schemas/developer-portal-serviceDeveloperType"
          - type: 'null'
          description: Type of the developer
        developerAlias:
          anyOf:
          - type: string
          - type: 'null'
          description: Type of the developer and alias if applicable
        createdAt:
          type: string
          format: date-time
          description: Date of creation of the integration
        lastUpdatedAt:
          type: string
          format: date-time
          description: Date of the last update of the integration
        listingStatus:
          "$ref": "#/components/schemas/developer-portal-serviceContentListingStatus"
        createdBy:
          anyOf:
          - type: string
            format: email
          - type: 'null'
          description: Email address of the user who created the integration
        lastUpdatedBy:
          anyOf:
          - type: string
            format: email
          - type: 'null'
          description: Email address of the user who last updated the integration
      type: object
      required:
      - displayName
      - integrationCode
      - createdAt
      - lastUpdatedAt
      - listingStatus
      title: ViewExistingIntegrationDetailsDto
    developer-portal-serviceMarketplaceIntegrationFeatureDto:
      properties:
        summary:
          anyOf:
          - type: string
          - type: 'null'
          description: Summary of the feature
        description:
          anyOf:
          - type: string
          - type: 'null'
          description: Detailed description of the feature
      type: object
      title: IntegrationFeatureDto
    developer-portal-serviceMarketplaceIntegrationPricingDto:
      properties:
        type:
          description: Type of pricing for the integration
          anyOf:
          - "$ref": "#/components/schemas/developer-portal-servicePricingType"
          - type: 'null'
        billedBy:
          description: Who is billing for the integration
          anyOf:
          - type: string
          - type: 'null'
        billingPeriod:
          description: Billing period for the integration
          anyOf:
          - "$ref": "#/components/schemas/developer-portal-serviceBillingPeriod"
          - type: 'null'
        amountCents:
          description: Amount in cents for the integration
          anyOf:
          - type: integer
          - type: 'null'
        currencyCode:
          description: Currency code for the integration
          anyOf:
          - type: string
          - type: 'null'
      type: object
      description: Pricing information for the integration
    developer-portal-serviceMarketplaceIntegrationPartnerDto:
      properties:
        websiteUrl:
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
          description: URL of the partner's website
        referralLink:
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
          description: URL of the partner's referral link
        contactEmail:
          anyOf:
          - type: string
          - type: 'null'
          description: Contact email of the partner
        shortDescription:
          anyOf:
          - type: string
          - type: 'null'
          description: Short description of the partner
        longDescription:
          anyOf:
          - type: string
          - type: 'null'
          description: Long description of the partner
        supportLanguages:
          items:
            type: string
          type: array
          description: Languages supported by the partner
        sellingPoints:
          items:
            type: string
          type: array
          description: Selling points of the integration
      type: object
      description: Partner information for the integration
    developer-portal-serviceMarketplaceIntegrationSupportDto:
      properties:
        partnerSupportWebsite:
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
          description: URL of the partner's support website
        lightspeedSupportWebsite:
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
          description: URL of the Lightspeed support website
      type: object
      description: Support information for the integration
    developer-portal-serviceIntegrationCategoryConstants:
      description: The category of the integration. Used to group integrations by
        their functionality.
      type: string
      enum:
      - ACCOUNTING
      - BUSINESS_INTELLIGENCE
      - ONLINE_ORDERING_AND_DELIVERY
      - DIGITAL_RECEIPT
      - DRINK_MANAGEMENT
      - LOYALTY_AND_GIFT_CARDS
      - INVENTORY
      - KIOSK
      - KDS
      - MARKETING
      - PAYMENT_METHODS
      - PMS
      - RESERVATION
      - RMS
      - SUSTAINABILITY_AND_SOCIAL_RESPONSIBILITY
      - WORKFORCE_MANAGEMENT_AND_PAYROLL
    developer-portal-serviceIntegrationCategory:
      description: The category of the integration. Used to group integrations by
        their functionality.
      type: string
      enum:
      - Accounting
      - Business intelligence
      - Online ordering & delivery
      - Digital receipt
      - Drink management
      - Loyalty & gift cards
      - Inventory
      - Kiosk
      - KDS
      - Marketing
      - Payment methods
      - PMS
      - Reservation
      - RMS
      - Workforce management & payroll
      - Sustainability and social responsibility
      title: IntegrationCategory
    developer-portal-serviceContentListingStatus:
      type: string
      enum:
      - EMPTY
      - DRAFT
      - PUBLISHED
      - DELISTED
      description: The status of the content listing
    developer-portal-serviceLanguageCode:
      type: string
      enum:
      - en
      - de
      - fr_FR
      - fr_CA
      - es
      - it
      - nl
      description: The language codes available in content
    developer-portal-serviceOutboundLeadDto:
      properties:
        businessLocationName:
          type: string
          title: Businesslocationname
        businessLocationId:
          type: integer
          title: Businesslocationid
        country:
          type: string
          title: Country
        userEmail:
          type: string
          title: Useremail
        lastClickedAt:
          type: string
          format: date-time
          title: Lastclickedat
        count:
          type: integer
          title: Count
      type: object
      required:
      - businessLocationName
      - businessLocationId
      - country
      - userEmail
      - lastClickedAt
      - count
      title: OutboundLeadDto
    developer-portal-serviceNotValidatedFileDto:
      properties:
        key:
          description: The key of the file in the storage
          anyOf:
          - type: string
          - type: 'null'
          title: Key
        publicUrl:
          description: The public URL of the file
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
          title: Publicurl
      type: object
      description: Not validated file DTO that contains the key and public URL of
        the file. This is used for statuses that are not being validated yet.
    developer-portal-serviceNotValidatedPricingInfoDto-Output:
      properties:
        billedBy:
          description: Who is billing for the integration
          anyOf:
          - type: string
          - type: 'null'
        integrationFees:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceNotValidatedIntegrationFeeDto"
          type: array
          description: List of integration fees
          default: []
        isFree:
          type: boolean
          description: Whether the integration is free or not
          default: false
      type: object
      description: Not validated output pricing info DTO that contains the billed
        by, integration fees, and whether the integration is free or not. This is
        used for statuses that are not being validated yet.
    developer-portal-serviceNotValidatedFeatureDto:
      properties:
        summary:
          description: Summary of the feature
          anyOf:
          - type: string
          - type: 'null'
          title: Summary
        details:
          description: Detailed description of the feature
          anyOf:
          - type: string
          - type: 'null'
          title: Details
      type: object
      description: Not validated feature DTO that contains the summary and details
        of the feature. This is used for statuses that are not being validated yet.
    developer-portal-serviceNotValidatedDescriptionDto:
      properties:
        languageCode:
          description: Language code of the description
          anyOf:
          - type: string
          - type: 'null'
        shortDescription:
          description: Short description of the integration
          anyOf:
          - type: string
          - type: 'null'
        longDescription:
          description: Long description of the integration
          anyOf:
          - type: string
          - type: 'null'
      type: object
      description: Not validated description DTO that contains the language code,
        short description, and long description of the integration. This is used for
        statuses that are not being validated yet.
    developer-portal-serviceNotValidatedSellingPointDto:
      properties:
        languageCode:
          description: Language code of the selling point
          anyOf:
          - type: string
          - type: 'null'
        items:
          description: List of selling point items
          type: array
          items:
            type: string
          default: []
      type: object
      description: Not validated selling point DTO that contains the language code
        and description of a selling point. This is used for statuses that are not
        being validated yet.
    developer-portal-serviceNotValidatedPartnerInfoDto:
      properties:
        logo:
          description: Logo of the partner
          anyOf:
          - "$ref": "#/components/schemas/developer-portal-serviceNotValidatedFileDto"
          - type: 'null'
        countries:
          description: List of countries where the partner operates
          items:
            type: string
          type: array
        secondaryCategory:
          anyOf:
          - "$ref": "#/components/schemas/developer-portal-serviceIntegrationCategory"
          - type: 'null'
        descriptions:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceNotValidatedDescriptionDto"
          type: array
        partnerSupportLanguages:
          description: Languages supported by the partner for customer support
          items:
            "$ref": "#/components/schemas/developer-portal-serviceLanguageCode"
          type: array
          default: []
        sellingPoints:
          description: Key selling points of the integration
          items:
            "$ref": "#/components/schemas/developer-portal-serviceNotValidatedSellingPointDto"
          type: array
          default: []
      type: object
      description: Not validated partner info DTO that contains the logo, countries,
        secondary category, and descriptions of the partner. This is used for statuses
        that are not being validated yet.
    developer-portal-serviceNotValidatedPricingInfoDto-Input:
      properties:
        billedBy:
          anyOf:
          - type: string
          - "$ref": "#/components/schemas/developer-portal-serviceDeveloperType"
          - type: 'null'
          description: Who is billing for the integration
        integrationFees:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceNotValidatedIntegrationFeeDto"
          type: array
          description: List of integration fees
          default: []
        isFree:
          type: boolean
          description: Whether the integration is free or not
          default: false
      type: object
      description: Not validated input pricing info DTO that contains the billed by,
        integration fees, and whether the integration is free or not. This is used
        for statuses that are not being validated yet.
    developer-portal-serviceNotValidatedIntegrationInfoDto-Input:
      properties:
        builtBy:
          description: Name of the company/user that built the integration
          anyOf:
          - type: string
          - type: 'null'
        dataAccess:
          description: Data access (scopes) used by the integration to access the
            K-Series data
          items:
            "$ref": "#/components/schemas/developer-portal-serviceDataAccess"
          type: array
        onboardingInfoList:
          description: List of onboarding information for the integration
          items:
            "$ref": "#/components/schemas/developer-portal-serviceNotValidatedOnboardingInfoDto"
          type: array
      type: object
      description: Not validated input integration info DTO that contains the built
        by, data access, and onboarding information for the integration. This is used
        for statuses that are not being validated yet.
    developer-portal-serviceNotValidatedIntegrationInfoDto-Output:
      description: Not validated output integration info DTO that contains the built
        by, data access, and onboarding information for the integration. This is used
        for statuses that are not being validated yet.
      properties:
        builtBy:
          description: Name of the company/user that built the integration
          anyOf:
          - type: string
          - type: 'null'
        dataAccess:
          description: Data access (scopes) used by the integration to access the
            K-Series data
          items:
            "$ref": "#/components/schemas/developer-portal-serviceDataAccess"
          type: array
        onboardingInfoList:
          description: List of onboarding information for the integration
          items:
            "$ref": "#/components/schemas/developer-portal-serviceNotValidatedOnboardingInfoDto"
          type: array
      type: object
    developer-portal-serviceNotValidatedOnboardingInfoDto:
      properties:
        languageCode:
          description: Language code of the onboarding information
          anyOf:
          - type: string
          - type: 'null'
        tagLine:
          description: Tag line of the integration
          anyOf:
          - type: string
          - type: 'null'
        summary:
          description: Summary of the integration
          anyOf:
          - type: string
          - type: 'null'
        videoLink:
          description: Video link of the integration. Should be a valid YouTube link.
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
        integrationImages:
          description: List of images related to the integration
          items:
            "$ref": "#/components/schemas/developer-portal-serviceNotValidatedFileDto"
          type: array
        features:
          description: List of features of the integration
          items:
            "$ref": "#/components/schemas/developer-portal-serviceNotValidatedFeatureDto"
          type: array
        onboardingSteps:
          description: Steps to onboard the integration
          items:
            type: string
          type: array
        prerequisites:
          description: Prerequisites for the integration
          items:
            type: string
          type: array
      type: object
      description: Not validated onboarding information DTO that contains the language
        code, tag line, summary, video link, integration images, features, onboarding
        steps, and prerequisites for the integration. This is used for statuses that
        are not being validated yet.
    developer-portal-servicePartnerInfoDto:
      properties:
        logo:
          "$ref": "#/components/schemas/developer-portal-serviceFileDto"
        countries:
          description: List of countries where the partner operates
          items:
            type: string
          type: array
        secondaryCategory:
          description: Secondary category of the partner
          anyOf:
          - "$ref": "#/components/schemas/developer-portal-serviceIntegrationCategory"
          - type: 'null'
        descriptions:
          description: List of descriptions for the partner in different languages
          items:
            "$ref": "#/components/schemas/developer-portal-serviceDescriptionDto"
          type: array
        partnerSupportLanguages:
          description: Languages supported by the partner for customer support
          items:
            "$ref": "#/components/schemas/developer-portal-serviceLanguageCode"
          type: array
        sellingPoints:
          description: Key selling points of the integration
          items:
            "$ref": "#/components/schemas/developer-portal-serviceSellingPointDto"
          type: array
      type: object
      required:
      - logo
      - countries
      - descriptions
      description: Details of the partner of the integration. This is used to show
        in the developer portal and in the integration management system.
    developer-portal-serviceIntegrationInfoDto:
      properties:
        developerType:
          "$ref": "#/components/schemas/developer-portal-serviceDeveloperType"
        developerAlias:
          anyOf:
          - type: string
          - type: 'null'
          description: Type of the developer and alias if applicable
        dataAccess:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceDataAccess"
          type: array
          title: Dataaccess
        onboardingInfoList:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceOnboardingInfoDto"
          type: array
          title: Onboardinginfolist
      type: object
      required:
      - dataAccess
      - builtBy
      - developerType
      title: IntegrationInfoDto
    developer-portal-serviceOnboardingInfoDto:
      properties:
        languageCode:
          type: string
          title: Languagecode
        tagLine:
          type: string
          title: Tagline
        summary:
          type: string
          title: Summary
        videoLink:
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
          title: Videolink
        integrationImages:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceFileDto"
          type: array
          title: Integrationimages
        features:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceFeatureDto"
          type: array
          title: Features
        onboardingSteps:
          items:
            type: string
          type: array
          title: Onboardingsteps
        prerequisites:
          items:
            type: string
          type: array
          title: Prerequisites
      type: object
      required:
      - languageCode
      - tagLine
      - summary
      - integrationImages
      - features
      - onboardingSteps
      title: OnboardingInfoDto
      description: Details of content of an integration in the system. This is used
        to show in the developer portal and in the integration management system.
    developer-portal-serviceContactInfoDto:
      properties:
        partnerWebsite:
          type: string
          minLength: 1
          format: uri
          title: Partnerwebsite
        salesEmail:
          anyOf:
          - type: string
            format: email
          - type: 'null'
          title: Salesemail
        referralLinks:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceReferralLinkDto"
          type: array
          title: Referrallinks
      required:
      - partnerWebsite
      type: object
      title: ContactInfoDto
    developer-portal-serviceNotValidatedContactInfoDto:
      properties:
        partnerWebsite:
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
          title: Partnerwebsite
        salesEmail:
          anyOf:
          - type: string
            format: email
          - type: 'null'
          title: Salesemail
        referralLinks:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceReferralLinkDto"
          type: array
          title: Referrallinks
      type: object
      title: ContactInfoDto
    developer-portal-serviceReferralLinkDto:
      properties:
        url:
          type: string
          minLength: 1
          format: uri
          title: Url
        countries:
          items:
            type: string
          type: array
          title: Countries
      type: object
      required:
      - url
      title: ReferralLinkDto
    developer-portal-serviceDescriptionDto:
      properties:
        languageCode:
          type: string
          title: Languagecode
        shortDescription:
          type: string
          title: Shortdescription
        longDescription:
          anyOf:
          - type: string
          - type: 'null'
          title: Longdescription
      type: object
      required:
      - languageCode
      - shortDescription
      title: DescriptionDto
    developer-portal-serviceSellingPointDto:
      properties:
        languageCode:
          type: string
          title: Languagecode
        items:
          type: array
          items:
            type: string
          title: Items
      type: object
      required:
      - languageCode
      - items
      title: SellingPointDto
    developer-portal-serviceSupportInfoDto:
      properties:
        lightspeedHelpCenterArticle:
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
          title: Lightspeedhelpcenterarticle
        partnerHelpSite:
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
          title: Partnerhelpsite
      type: object
      title: SupportInfoDto
    developer-portal-serviceMarketplaceSettingsDto:
      properties:
        partnerOnboardingUrl:
          anyOf:
          - type: string
            minLength: 1
            format: uri
          - type: 'null'
          title: Partneronboardingurl
        isFeatured:
          type: boolean
          title: Isfeatured
          default: false
      type: object
      title: MarketplaceSettingsDto
    developer-portal-servicePricingInfoDto:
      properties:
        billedBy:
          anyOf:
          - type: string
          - "$ref": "#/components/schemas/developer-portal-serviceDeveloperType"
          - type: 'null'
          title: Billedby
        integrationFees:
          items:
            "$ref": "#/components/schemas/developer-portal-serviceIntegrationFeeDto"
          type: array
          title: Integrationfees
        isFree:
          type: boolean
          title: Isfree
          default: false
      type: object
      title: PricingInfoDto
    developer-portal-serviceFeatureDto:
      properties:
        summary:
          type: string
          title: Summary
        details:
          type: string
          title: Details
      type: object
      required:
      - summary
      - details
      title: FeatureDto
    developer-portal-serviceFileDto:
      properties:
        key:
          type: string
          title: Key
        publicUrl:
          type: string
          minLength: 1
          format: uri
          title: Publicurl
      type: object
      required:
      - key
      - publicUrl
      title: FileDto
    developer-portal-serviceNotValidatedIntegrationFeeDto:
      properties:
        billingPeriod:
          anyOf:
          - "$ref": "#/components/schemas/developer-portal-serviceBillingPeriod"
          - type: 'null'
        amountCents:
          anyOf:
          - type: integer
          - type: 'null'
          description: Amount in cents for the integration fee
        countries:
          items:
            type: string
          type: array
          description: List of countries for the integration fee
      type: object
      description: Not validated integration fee DTO that contains the billing period,
        amount in cents, and countries for the integration fee. This is used for statuses
        that are not being validated yet.
    developer-portal-serviceIntegrationFeeDto:
      properties:
        billingPeriod:
          "$ref": "#/components/schemas/developer-portal-serviceBillingPeriod"
        amountCents:
          type: integer
          description: Amount in cents for the integration fee
        countries:
          items:
            type: string
          type: array
          description: List of countries for the integration fee
      type: object
      required:
      - billingPeriod
      - amountCents
      - countries
      description: Integration fee DTO that contains the billing period, amount in
        cents, and countries for the integration fee.
    developer-portal-serviceBillingPeriod:
      type: string
      enum:
      - ONE_TIME
      - MONTHLY
      - YEARLY
      description: The billing period for the integration fee. Used to determine how
        often the fee is charged.
    developer-portal-serviceDeveloperType:
      type: string
      enum:
      - LIGHTSPEED
      - PARTNER
      - THIRD_PARTY
      description: The type of developer. Used to differentiate between Lightspeed,
        partner, and third-party developers.
    developer-portal-serviceCountrySettingsItem:
      type: object
      properties:
        country_code:
          type: string
          title: Country Code
        currency_code:
          type: string
          title: Currency code of the country
        country_name:
          type: string
          readOnly: true
          title: Country Name
        languages:
          type: array
          items:
            "$ref": "#/components/schemas/developer-portal-serviceCountrySettingsLanguageItem"
        state_codes:
          type: array
          items:
            type: string
      required:
      - country_code
      - currency_code
      - country_name
      - languages
      - state_codes
    developer-portal-serviceCountrySettingsLanguageItem:
      type: object
      properties:
        code:
          type: string
          title: Language Code
        name:
          title: Name
          type: string
      required:
      - code
      - name
    developer-portal-serviceDataAccess:
      type: string
      enum:
      - financial-api
      - orders-api
      - items
      - propertymanagement
      - reservations-api
      - tax-configuration
      - staff-api
      - richitem
      - transaction-data
      - payments-api
      - webextension
      - virtual-production-center
      - pre-commit-script
    developer-portal-serviceNotificationType:
      type: string
      title: NotificationType
    developer-portal-serviceRequestType:
      type: string
      enum:
      - Client
      - Business
      - Access
      title: RequestType
    developer-portal-serviceWebhookAuthType:
      type: string
      title: WebhookAuthType
    developer-portal-serviceSortBy:
      type: string
      enum:
      - name
      - "-name"
      - owner_email
      - "-owner_email"
      - owner_organization_name
      - "-owner_organization_name"
      - last_action_timestamp
      - "-last_action_timestamp"
      title: SortBy
    developer-portal-servicePricingType:
      type: string
      enum:
      - FREE
      - PAID
      description: The type of pricing for the integration. Used to indicate whether
        the integration is free or paid.
    developer-portal-serviceValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    financial-apiSalesExportDto:
      type: object
      properties:
        sales:
          type: array
          items:
            "$ref": "#/components/schemas/financial-apiSale"
          description: Array of sale objects.
          nullable: false
        nextPageToken:
          type: string
          description: Token to use to get the next page of results, if applicable.
    financial-apiSalesDailyExportDto:
      type: object
      properties:
        sales:
          type: array
          items:
            "$ref": "#/components/schemas/financial-apiSale"
          description: Array of sale objects.
          nullable: false
        nextStartOfDayAsIso8601:
          type: string
          format: date-time
          description: Start of next business day, in the merchant's local time.
          example: '2023-07-28T05:30:00-05:00'
        dataComplete:
          type: boolean
          description: Whether or not the data is complete for the requested day.
          example: false
    financial-apiAbortedOrderDto:
      type: object
      description: Represents an unpaid, non-committed order that has been fully aborted.
      properties:
        staffName:
          type: string
          description: The name of the staff member who aborted the order.
          example: Employee 1
        timeOfAbortedOrder:
          type: string
          format: date-time
          description: The timestamp when the order was aborted and all line items
            fully cleared.
          example: '2023-03-14T19:58:48.224Z'
        totalAmountAborted:
          type: string
          description: The total value of the aborted order.
          example: '33.32'
        abortedLineItems:
          type: array
          description: A list of all line items that were removed from the aborted
            order.
          items:
            "$ref": "#/components/schemas/financial-apiAbortedOrderLineItemDto"
    financial-apiAbortedOrderLineItemDto:
      type: object
      properties:
        itemName:
          type: string
          description: The name of the item that was removed from the order.
          example: Soda
        itemSku:
          type: string
          description: The SKU of the item that was removed from the order.
          example: '9'
        itemQuantity:
          type: string
          description: The quantity of the item removed from the order.
          example: '4.000'
        itemAmount:
          type: string
          description: The total price for this item (itemPrice * itemQuantity).
          example: '33.32'
        itemPrice:
          type: string
          description: The unit price of the item removed from the order.
          example: '8.33'
    financial-apiErrorResponse:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        path:
          type: string
        status:
          type: integer
          format: int32
        error:
          type: string
        requestId:
          type: string
      required:
      - timestamp
      - path
      - status
      - error
      - requestId
    financial-apiSale:
      type: object
      properties:
        accountReference:
          type: string
          description: Unique reference id of the account.
          example: 57X0j3hzTZ2oo9sdVWiUog==
        accountFiscId:
          type: string
          description: The account identifier.
          example: A65315.17
        receiptId:
          type: string
          description: The unique identifier for the receipt associated with this
            account.
          example: R65315.13
        source:
          "$ref": "#/components/schemas/financial-apiAccountLink"
        salesLines:
          type: array
          items:
            "$ref": "#/components/schemas/financial-apiLine"
        payments:
          type: array
          items:
            "$ref": "#/components/schemas/financial-apiPayment"
        timeOfOpening:
          type: string
          format: date-time
          description: The account creation timestamp.
          example: '2023-02-14T19:58:48.224Z'
        timeClosed:
          type: string
          format: date-time
          description: The account close timestamp.
          example: '2023-02-14T20:04:08.734Z'
        cancelled:
          type: boolean
          description: Whether the account was cancelled.
          example: false
        externalFiscalNumber:
          type: string
          description: The external reference id of the account.
          example: IntegratorReferenceId
        tableNumber:
          type: string
          description: The table number.
          example: '1'
        tableName:
          type: string
          description: The name of the table.
          example: Dining Room, Table 1
        accountProfileCode:
          type: string
          description: The account profile associated with the account.
          example: AAP
        ownerName:
          type: string
          description: The name of the user associated with the account.
          example: Manager
        ownerId:
          type: integer
          format: int64
          description: The unique identifier for the user associated with the account.
          example: 14670
        type:
          type: string
          description: The type of sale.
          example: SALE
          enum:
          - SALE
          - VOID
          - RECALL
          - REFUND
          - SPLIT
          - UPDATE
          - TRANSFER
          - FLOAT
          - TRANSITORY
          - CROSS_BL
          - CANCEL
        externalReferences:
          items:
            type: string
            description: List of external references for online orders. Includes the
              TASK prefix, `businessLocationId`, and the unique reference code provided
              in the [`thirdPartyReference`](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-thirdpartyreference)
              field of an online order.
            example: '"TASK:OO-{businessLocationId}-{unique-reference-code}", "TASK:OO-{businessLocationId}-(another-unique-reference-code)"'
          type: array
        nbCovers:
          type: number
          format: double
          description: The number of covers.
          example: 2.0
        dineIn:
          type: boolean
          description: Whether the order is dine-in.
          example: true
        deviceId:
          type: integer
          format: int64
          description: The unique identifier for the device where the account was
            created.
          example: 75125
        deviceName:
          type: string
          description: The name of the device where the account was created.
          example: ipad9
        voidReason:
          type: string
          description: The void reason, if applicable.
          example: Unhappy Client
    financial-apiLine:
      type: object
      properties:
        id:
          type: string
          description: The sale line identifier.
          example: S65315.33
        parentLineId:
          type: string
          description: The sale line this item is associated with, if applicable.
          example: S65315.32
        totalNetAmountWithTax:
          type: string
          description: |-
            Total amount of sale line, including tax. **Important Note:** This field is for use with tax inclusive businesses.
            For tax exclusive businesses, see `taxAmount` and `taxLines` for tax calculations.
            The value is precise up to six decimal places.
          example: '11.00'
        totalNetAmountWithoutTax:
          type: string
          description: The total amount of the sale line, before tax. The value is
            precise up to six decimal places.
          example: '8.33'
        menuListPrice:
          type: string
          description: The price listed on the menu.
          example: '10.00'
        unitCostPrice:
          type: string
          description: The unit cost price.
          example: '5.00'
        serviceCharge:
          type: string
          description: The service charge.
          example: '1.00'
        serviceChargeType:
          "$ref": "#/components/schemas/financial-apiServiceChargeType"
        serviceChargeRate:
          type: string
          description: The service charge rate, as a percentage. The value is precise
            up to two decimal places.
          example: '10.00'
        discountAmount:
          type: string
          description: The discount amount. The value is precise up to six decimal
            places.
          example: '0.00'
        taxCode:
          type: string
          description: The system code for the tax rate.
          example: VAT20
        taxAmount:
          type: string
          description: The tax total.
          example: '1.6667'
        taxRatePercentage:
          type: string
          description: The tax rate, as a percentage. The value is precise up to two
            decimal places.
          example: '20.00'
        taxLines:
          type: array
          items:
            "$ref": "#/components/schemas/financial-apiTaxLine"
        discountType:
          type: string
          description: The type of discount.
          example: DISCOUNT
        discountCode:
          type: string
          description: The discount code.
          example: 10PCT
        discountName:
          type: string
          description: The name of the discount.
          example: 10% Discount
        accountDiscountAmount:
          type: string
          description: The account discount amount. The value is precise up to two
            decimal places.
          example: '1.00'
        accountDiscountType:
          type: string
          description: The account discount type (if any).
          example: DISCOUNT
        accountDiscountCode:
          type: string
          description: The account discount code (if any).
          example: Staff 20%
        accountDiscountName:
          type: string
          description: The account discount name (if any).
          example: Staff Discount
        totalDiscountAmount:
          type: string
          description: The total discount amount. The value is precise up to two decimal
            places.
          example: '1.00'
        sku:
          type: string
          description: The item SKU.
          example: '52'
        name:
          type: string
          description: The item name.
          example: Burger
        nameOverride:
          type: string
          description: Item name entered manually by the POS user upon item selection.
          example: Burger Double Cheese
        statisticGroup:
          type: string
          description: The item's statistic group.
          example: Food
        quantity:
          type: string
          description: |-
            The quantity of the item sold, which can potentially be a fractional value,
            especially in cases where the item is sold by weight. The value is precise up to three
            decimal places.
          example: '1.000'
        accountingGroup:
          "$ref": "#/components/schemas/financial-apiAccountingGroup"
        currency:
          type: string
          description: The currency for the sale line.
          example: GBP
        tags:
          items:
            type: string
          type: array
          description: The tags attached to the line item.
        revenueCenter:
          type: string
          description: The name of the revenue center where the sale line was created.
          example: Fixed POS
        revenueCenterId:
          format: int64
          type: integer
          description: The unique identifier for the revenue center where the sale
            line was created.
          example: 141948669132822
        categories:
          type: array
          items:
            "$ref": "#/components/schemas/financial-apiCategory"
        timeOfSale:
          type: string
          format: date-time
          description: The timestamp of when the line item was created.
          example: '2023-07-27T19:58:22.474Z'
        staffId:
          type: integer
          format: int64
          description: The unique identifier for the user who created the line item.
          example: 14670
        staffName:
          type: string
          description: The name of the user who created the line item.
          example: Manager
        deviceId:
          type: integer
          format: int64
          description: The unique identifier for the device where the sale line was
            created.
          example: 75125
        deviceName:
          type: string
          description: The name of the device where the sale line was created.
          example: iPad9
        voidReason:
          type: string
          description: The void reason, if applicable.
          example: Unhappy Client
        accountProfileCode:
          type: string
          description: The code of the account profile used.
          example: AAP
    financial-apiTaxLine:
      type: object
      properties:
        taxId:
          type: string
          description: The unique identifier for the tax rate.
          example: '41910290874374'
        taxCode:
          type: string
          description: The system code for the tax rate.
          example: VAT20
        taxRate:
          type: string
          description: The tax rate, as a multiplier.
          example: '1.2'
        taxAmount:
          type: string
          description: The tax total.
          example: '1.666667'
        taxIncluded:
          type: boolean
          description: Whether or not the business is tax inclusive.
          example: true
    financial-apiCategory:
      type: object
      properties:
        category:
          type: string
          description: The line item's category.
          example: default
        value:
          type: string
          description: The category value.
          example: Food
    financial-apiAccountLink:
      type: object
      properties:
        initialAccountId:
          type: string
          description: |-
            The `accountFiscId` of the initial transaction associated with the current account, if applicable. For example, in the case of a refund.

            This will match the `accountFiscId` of the sale if there is no associated account.
          example: A65315.13
        previousAccountId:
          type: string
          description: |-
            The `accountFiscId` of the previous transaction associated with the current account, if applicable. For example, in the case of a refund.

            This may be different from `initialAccountId` if there is more than one associated account.

            It will not be displayed if there is no associated account.
          example: A65315.15
    financial-apiAccountingGroup:
      type: object
      properties:
        accountingGroupId:
          type: integer
          format: int64
          description: The unique identifier for the item's accounting group.
          example: 141948669132845
        name:
          type: string
          description: The name of the accounting group.
          example: Food
        statisticGroup:
          type: string
          description: The accounting group's statistic group.
          example: Food
        code:
          type: string
          description: The code assigned to the accounting group.
          example: '123'
    financial-apiPayment:
      type: object
      properties:
        code:
          type: string
          description: The code of the payment method.
          example: CASH
        description:
          type: string
          description: The name of the payment method.
          example: Cash
        paymentMethodId:
          type: integer
          format: int64
          description: The unique identifier for the payment method.
          example: 141948669132824
        netAmountWithTax:
          type: string
          description: The net payment amount, including tax. The value is precise
            up to two decimal places, and if necessary, it is rounded using the "half-even"
            rounding mode.
          example: '11.00'
        currency:
          type: string
          description: The payment currency.
          example: GBP
        tip:
          type: string
          description: The tip amount. The value is precise up to two decimal places,
            and if necessary, it is rounded using the "half-even" rounding mode.
          example: '0.00'
        consumer:
          "$ref": "#/components/schemas/financial-apiConsumer"
        type:
          example: NORMAL
          description: The type of payment
          enum:
          - NORMAL
          - ACCOUNTS_RECEIVABLE
          type: string
        deviceId:
          type: string
          description: The unique identifier for the device where the payment was
            processed.
          example: '72676'
        deviceName:
          type: string
          description: The name of the device where the payment was processed.
          example: ipad9
        staffId:
          type: number
          description: The unique identifier for the user who processed the payment.
          example: 180480
        staffName:
          type: string
          description: The name of the user who processed the payment.
          example: Manager
        authorization:
          type: string
          description: The authorization code for the payment.
          example: '001'
        externalReference:
          type: string
          description: The external reference code for the payment.
          example: '1000'
        revenueCenter:
          type: string
          description: The name of the revenue center where the payment was processed.
          example: Fixed POS
        revenueCenterId:
          type: number
          description: The unique identifier for the revenue center where the payment
            was processed.
          example: 141948669132822
        fiscId:
          type: string
          description: The unique identifier for the payment.
          example: T72691.8
        uuid:
          type: string
          description: The base64url encoded UUID of the payment.
          example: bc7i2X_CTkeg8qlec66wmg==
        fiscDate:
          type: string
          format: date-time
          description: The time stamp of the payment.
          example: '2023-02-14T20:04:08.665Z'
        surcharge:
          type: string
          description: The surcharge amount. The value is precise up to two decimal
            places, and if necessary, it is rounded using the "half-even" rounding
            mode.
          example: '0.00'
    financial-apiConsumer:
      type: object
      properties:
        id:
          type: string
          description: The UUID of the customer associated with the payment, if applicable.
          example: ec021fb0-4c12-425e-b30f-320ab720448b
        customerId:
          type: integer
          format: int64
          description: The unique identifier for the customer.
          example: 120913
        title:
          type: string
          description: The title or honorific of the customer.
          example: Mr
        firstName:
          type: string
          description: The first name of the customer.
          example: John
        lastName:
          type: string
          description: The last name of the customer.
          example: Doe
        phoneNumber1:
          type: string
          description: The primary phone number of the customer.
          example: 555-555-5555
        phoneNumber2:
          type: string
          description: An alternative phone number for the customer.
          example: 555-555-5556
        companyName:
          type: string
          description: The name of the company associated with the customer, if applicable.
          example: Company Name
        addressLine1:
          type: string
          description: The primary address line for the customer's address.
          example: 123 Street st.
        addressLine2:
          type: string
          description: The secondary address line for the customer's address, such
            as apartment or suite number.
          example: Unit 123
        zipCode:
          type: string
          description: The postal code for the customer's address.
          example: '12345'
        city:
          type: string
          description: The city of the customer's address.
          example: Some City
        state:
          type: string
          description: The state or region of the customer's address.
          example: Some State
        email:
          type: string
          description: The email address of the customer.
          example: example@example.com
        taxIdentifier:
          type: string
          description: The tax identifier of the customer.
          example: '123456789'
        fiscalCode:
          type: string
          description: The fiscal code of the customer.
          example: '123456789'
        destinationCode:
          type: string
          description: The destination code of the customer.
          example: '123456789'
    financial-apiResourcesTaxRate:
      type: object
      properties:
        _embedded:
          type: object
          properties:
            taxRateList:
              type: array
              items:
                "$ref": "#/components/schemas/financial-apiTaxRate"
        _links:
          type: object
          properties:
            self:
              type: object
              properties:
                href:
                  type: string
                  example: https://api.ikentoo.com/f/finance/141948669132802/tax-rates
    financial-apiTaxRate:
      type: object
      properties:
        code:
          type: string
          example: VAT20
          description: System code for the tax rate.
        description:
          type: string
          example: VAT 20%
          description: Name of the tax rate.
        rate:
          type: number
          example: 1.2
          description: Multiplier for the tax rate.
        taxIncluded:
          type: boolean
          description: Whether or not the tax is included.
        accountingReference:
          type: string
    financial-apiLSPaymentsDto:
      type: object
      properties:
        payments:
          type: array
          items:
            "$ref": "#/components/schemas/financial-apiLSPayment"
          description: List of requested payments.
          nullable: false
        pageSize:
          type: integer
          format: int32
          description: Size of the returned collection.
          example: 100
        offset:
          type: integer
          format: int32
          description: Offset of the first item returned in the collection.
          example: 0
        nextOffset:
          type: integer
          format: int32
          description: Next offset to get next page of data based off current pageSize
            and offset, if available.
          example: 100
    financial-apiLSPayment:
      type: object
      properties:
        accountFiscId:
          type: string
          description: The account identifier.
          example: A72691.8
        lightspeedPaymentId:
          type: string
          description: "Unique identifier assigned by Lightspeed to the payment, derived
            from Adyen's PSP reference. \nThis alphanumeric code uniquely identifies
            each payment or modification request, \nincluding refunds. For more information,
            see Adyen's documentation: \nhttps://help.adyen.com/knowledge/payments/payment-basics/what-is-a-psp-reference-number"
          example: ad-GJ33PFSCGVG4NFH4
        uuid:
          type: string
          description: "The internal UUID of the payment. This value may not be unique
            in scenarios involving Pay-at-Table, partial, or split payments, \nwhere
            multiple payment transactions can share the same reference and/or POS
            Order Id\nFor a guaranteed unique identifier for each Lightspeed Payments
            transaction, use the `lightspeedPaymentId` field which is based off Adyen
            PSP ID."
          example: bc7i2X_CTkeg8qlec66wmg==
        reference:
          type: string
          description: The alphanumeric reference of the payment.
          example: RFOOVMIMPSDY
        status:
          "$ref": "#/components/schemas/financial-apiLSPaymentStatus"
        createdDate:
          type: string
          format: date-time
          description: The date and time the payment was created.
          example: '2022-09-21T10:11:56Z'
        captureDate:
          type: string
          format: date-time
          description: The date and time the payment was captured.
          example: '2022-09-21T10:11:56Z'
        modificationDate:
          type: string
          format: date-time
          example: '2022-09-21T10:11:56Z'
        fees:
          "$ref": "#/components/schemas/financial-apiCurrencyAmount"
        surcharge:
          "$ref": "#/components/schemas/financial-apiCurrencyAmount"
    financial-apiLSPaymentStatus:
      type: string
      description: The statuses for a Lightspeed Payments transaction.
      enum:
      - CAPTURED
      - DISPUTED
      - PARTIALLY_REFUNDED
      - REFUNDED
    financial-apiCurrencyAmount:
      type: object
      properties:
        value:
          type: string
          description: The amount in dollars.
          example: '0.00'
        currency:
          type: string
          description: The currency code.
          example: CAD
    financial-apiServiceChargeType:
      type: string
      description: The type of service charge applied to the sale line.
      example: APPORTIONED
      enum:
      - UNTAXED
      - APPORTIONED
      - NO_SERVICE_CHARGE
    financial-apiSortDirection:
      type: string
      example: ASC
      default: ASC
      description: The direction to sort the results.
      enum:
      - ASC
      - DESC
    financial-apiDateType:
      type: string
      example: CREATED
      description: The date used when querying and sorting results.
      enum:
      - CREATED
      - MODIFIED
      default: MODIFIED
    financial-apiFinancialDto:
      properties:
        businessName:
          type: string
          description: Name of the business
          example: My Business
        nextStartOfDayAsIso8601:
          type: string
          description: Start of next business day, in the merchant's local time.
          example: '2023-07-28T05:30:00-05:00'
        businessLocationId:
          type: number
          description: The unique identifier for the business location.
          example: 123456789
        sales:
          items:
            "$ref": "#/components/schemas/financial-apiSaleDto"
          type: array
        dataComplete:
          type: boolean
          example: false
        _links:
          properties:
            self:
              properties:
                href:
                  example: https://api.ikentoo.com/f/finance/141948669132802/financials/2021-08-30T14:00:00Z/2023-09-03T15:30:00Z?pageSize=10&include=payments
                  type: string
                templated:
                  example: true
                  type: boolean
              type: object
            nextPage:
              properties:
                href:
                  example: https://api.ikentoo.com/f/finance/141948669132802/financials/2021-08-30T14:00:00Z/2023-09-03T15:30:00Z?pageSize=10&include=payments&nextPageToken=A65315.18
                  description: The URL for the next set of results.
                  type: string
                templated:
                  example: true
                  type: boolean
              type: object
          type: object
    financial-apiSaleDto:
      properties:
        accountReference:
          type: string
          description: Unique reference code for the account.
          example: 57X0j3hzTZ2oo9sdVWiUog==
        accountFiscId:
          type: string
          description: The account identifier
          example: A65315.17
        receiptId:
          type: string
          description: The unique identifier for the receipt associated with this
            account.
          example: R65315.13
        source:
          properties:
            initialAccountId:
              type: string
              description: |-
                The `accountFiscId` of the initial transaction associated with the current account, if applicable. For example, in the case of a refund.

                This will match the `accountFiscId` of the sale if there is no associated account.
              example: A65315.13
            previousAccountId:
              type: string
              description: |-
                The `accountFiscId` of the previous transaction associated with the current account, if applicable. For example, in the case of a refund.

                This may be different from `initialAccountId` if there is more than one associated account.

                It will not be displayed if there is no associated account.
              example: A65315.15
          type: object
        salesLines:
          items:
            properties:
              id:
                type: string
                description: The sale line identifier
                example: S65315.33
              parentLineId:
                type: string
                description: The sale line this item is associated with, if applicable.
                example: S65315.32
              totalNetAmountWithTax:
                type: string
                description: |-
                  Total amount of sale line, including tax. **Important Note:** This field is for use with tax inclusive businesses.
                  For tax exclusive businesses, see `taxAmount` and `taxLines` for tax calculations.
                example: '11.00'
              totalNetAmountWithoutTax:
                type: string
                description: Total amount of the sale line, before tax.
                example: '8.33'
              menuListPrice:
                type: string
                description: The price listed on the menu.
                example: '10.00'
              unitCostPrice:
                type: string
                description: The unit cost price.
                example: '5.00'
              serviceCharge:
                type: string
                description: The service charge amount.
                example: '1.00'
              serviceChargeType:
                "$ref": "#/components/schemas/financial-apiServiceChargeType"
              serviceChargeRate:
                type: string
                description: The service charge rate, as a percentage.
                example: '10.00'
              discountAmount:
                type: string
                description: The discount amount.
                example: '0.00'
              taxCode:
                type: string
                description: The system code for the tax rate.
                example: VAT20
              taxAmount:
                type: string
                description: The tax total.
                example: '1.6667'
              taxRatePercentage:
                type: string
                description: The tax rate, as a percentage.
                example: '20.00'
              taxLines:
                items:
                  properties:
                    taxId:
                      type: string
                      description: The unique identifier for the tax.
                      example: '41910290874374'
                    taxCode:
                      type: string
                      description: The system code for the tax rate.
                      example: VAT20
                    taxRate:
                      type: string
                      description: The tax rate, as a multiplier.
                      example: '1.2'
                    taxAmount:
                      type: string
                      description: The tax total.
                      example: '1.666667'
                    taxIncluded:
                      type: boolean
                      description: Whether or not the business is tax inclusive.
                      example: true
              discountType:
                type: string
                description: The type of discount.
                example: DISCOUNT
              discountCode:
                type: string
                description: The discount code.
                example: 10PCT
              discountName:
                type: string
                description: The name of the discount.
                example: 10% Discount
              accountDiscountAmount:
                type: string
                description: The account discount amount.
                example: '1.00'
              accountDiscountType:
                type: string
                description: The account discount type (if any).
                example: DISCOUNT
              accountDiscountCode:
                type: string
                description: The account discount code (if any).
                example: Staff 20%
              accountDiscountName:
                type: string
                description: The account discount name (if any).
                example: Staff Discount
              totalDiscountAmount:
                type: string
                description: The total discount amount.
                example: '1.00'
              sku:
                type: string
                description: The item SKU
                example: '52'
              name:
                type: string
                description: The item name.
                example: Burger
              nameOverride:
                type: string
                description: Item name entered manually by the POS user upon item
                  selection.
                example: Burger Double Cheese
              statisticGroup:
                type: string
                description: The item's statistic group.
                example: Food
              quantity:
                type: string
                description: The item quantity.
                example: '1'
              accountingGroup:
                properties:
                  accountingGroupId:
                    type: number
                    description: The unique identifier for the item's accounting group.
                    example: 141948669132845
                  name:
                    type: string
                    description: The name of the accounting group.
                    example: Food
                  statisticGroup:
                    type: string
                    description: The accounting group's statistic group.
                    example: Food
                  code:
                    type: string
                    description: The code assigned to the accounting group.
                    example: '123'
                type: object
              currency:
                type: string
                description: The currency for the sale line.
                example: GBP
              tags:
                items:
                  type: string
                type: array
                description: The tags attached to the line item.
              revenueCenter:
                type: string
                description: The name of the revenue center where the sale line was
                  created.
                example: Fixed POS
              revenueCenterId:
                type: number
                description: The unique identifier for the revenue center where the
                  sale line was created.
                example: 141948669132822
              categories:
                items:
                  properties:
                    category:
                      type: string
                      description: The line item's category.
                      example: default
                    value:
                      type: string
                      description: The category value.
                      example: Food
                  type: object
                type: array
              timeofSale:
                type: string
                description: The timestamp of when the line item was created.
                example: '2023-07-27T19:58:22.474Z'
              staffId:
                type: number
                description: The unique identifier for the user who created the line
                  item.
                example: 14670
              staffName:
                type: string
                description: The name of the user who created the line item.
                example: Manager
              deviceId:
                type: number
                description: The unique identifier for the device where the sale line
                  was created.
                example: 75125
              deviceName:
                type: string
                description: The name of the device where the sale line was created.
                example: iPad9
              voidReason:
                type: string
                enum:
                - Broken
                - Cooking
                - Other
                - Taste
                - Unhappy Client
                - User Mistake
                - Waited too long
                description: The void reason, if applicable.
                example: Unhappy Client
              accountProfileCode:
                type: string
                description: The code of the account profile used.
                example: AAP
            type: object
          type: array
        payments:
          items:
            properties:
              code:
                type: string
                description: The code of the payment method.
                example: CASH
              description:
                type: string
                description: The name of the payment method.
                example: Cash
              paymentMethodId:
                type: number
                description: The unique identifier for the payment method.
                example: 141948669132824
              netAmountWithTax:
                type: string
                description: The net payment amount, including tax.
                example: '11.00'
              currency:
                type: string
                description: The payment currency.
                example: GBP
              tip:
                type: string
                description: The tip amount.
                example: '0.00'
              consumer:
                properties:
                  id:
                    type: string
                    description: The UUID of the customer associated with the payment,
                      if applicable.
                    example: ec021fb0-4c12-425e-b30f-320ab720448b
                  customerId:
                    type: number
                    description: The unique identifier for the customer.
                    example: 120913
                  title:
                    description: The title of the customer.
                    type: string
                    example: Mr
                  firstName:
                    description: The first name of the customer.
                    type: string
                    example: John
                  lastName:
                    description: The last name of the customer.
                    type: string
                    example: Doe
                  phoneNumber1:
                    description: The primary phone number of the customer.
                    type: string
                    example: 555-555-5555
                  phoneNumber2:
                    description: The secondary phone number of the customer.
                    type: string
                    example: 555-555-5556
                  companyName:
                    description: The company name of the customer.
                    type: string
                    example: Company Name
                  addressLine1:
                    description: The first line of the customer's address.
                    type: string
                    example: 123 Street st.
                  addressLine2:
                    description: The second line of the customer's address.
                    type: string
                    example: Unit 123
                  zipCode:
                    description: The postal code of the customer's address.
                    type: string
                    example: '12345'
                  city:
                    description: The city of the customer's address.
                    type: string
                    example: Some City
                  state:
                    description: The state of the customer's address.
                    type: string
                    example: Some State
                  email:
                    description: The email address of the customer.
                    type: string
                    example: customer@email.com
                  taxIdentifier:
                    description: The tax identifier of the customer.
                    type: string
                    example: '123456789'
                  fiscalCode:
                    description: The fiscal code of the customer.
                    type: string
                    example: '123456789'
                  destinationCode:
                    description: The destination code of the customer.
                    type: string
                    example: '123456789'
                type: object
              type:
                example: NORMAL
                description: The type of payment.
                enum:
                - NORMAL
                - ACCOUNTS_RECEIVABLE
                type: string
              deviceId:
                type: string
                description: The unique identifier for the device where the payment
                  was processed.
                example: '72676'
              deviceName:
                type: string
                description: The name of the device where the payment was processed.
                example: ipad9
              staffId:
                type: number
                description: The unique identifier for the user who processed the
                  payment.
                example: 180480
              staffName:
                type: string
                description: The name of the user who processed the payment.
                example: Manager
              authorization:
                type: string
                description: The authorization code for the payment.
                example: '001'
              externalReference:
                type: string
                description: The external reference code for the payment.
                example: '1000'
              revenueCenter:
                type: string
                description: The name of the revenue center where the payment was
                  processed.
                example: Fixed POS
              revenueCenterId:
                type: number
                description: The unique identifier for the revenue center where the
                  payment was processed.
                example: 141948669132822
              fiscId:
                type: string
                description: The unique identifier for the payment.
                example: T72691.8
              uuid:
                type: string
                description: The base64url encoded UUID of the payment.
                example: bc7i2X_CTkeg8qlec66wmg==
              fiscDate:
                type: string
                description: The time stamp of the payment.
                example: '2023-02-14T20:04:08.665Z'
              surcharge:
                type: string
                description: The surcharge amount.
                example: '0.00'
            type: object
          type: array
        timeofOpening:
          type: string
          description: The account creation timestamp.
          example: '2023-02-14T19:58:48.224Z'
        timeofCloseAndPaid:
          type: string
          description: The account close timestamp.
          example: '2023-02-14T20:04:08.734Z'
        cancelled:
          type: boolean
        externalFiscalNumber:
          type: string
        tableNumber:
          type: string
          description: The table number.
          example: '1'
        tableName:
          type: string
          description: The name of the table.
          example: Dining Room, Table 1
        accountProfileCode:
          type: string
          description: The account profile associated with the account.
          example: AAP
        ownerName:
          type: string
          description: The name of the user associated with the account.
          example: Manager
        ownerId:
          type: number
          description: The unique identifier for the user associated with the account.
          example: 14670
        type:
          example: SALE
          enum:
          - SALE
          - VOID
          - RECALL
          - REFUND
          - SPLIT
          - UPDATE
          - TRANSFER
          - FLOAT
          - TRANSITORY
          - CROSS_BL
          - CANCEL
          type: string
          description: The sale type.
        externalReferences:
          items:
            type: string
            description: List of external references for online orders. Includes the
              TASK prefix, `businessLocationId`, and the unique reference code provided
              in the [`thirdPartyReference`](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-thirdpartyreference)
              field of an online order.
            example: '"TASK:OO-{businessLocationId}-{unique-reference-code}", "TASK:OO-{businessLocationId}-(another-unique-reference-code)"'
          type: array
        nbCovers:
          type: number
          description: The number of covers.
          example: 2.0
        dineIn:
          type: boolean
          description: Whether the order is dine-in.
          example: true
        deviceId:
          description: The unique identifier for the device where the account was
            created.
          type: number
          example: 75125
        deviceName:
          description: The name of the device where the account was created.
          type: string
          example: ipad9
        voidReason:
          type: string
          enum:
          - Broken
          - Cooking
          - Other
          - Taste
          - Unhappy Client
          - User Mistake
          - Waited too long
          description: The void reason, if applicable.
          example: Unhappy Client
      type: object
    generic-accounting-svcAccountingLine:
      type: object
      properties:
        type:
          type: string
          description: Accounting Line type discriminator
          enum:
          - SALES
          - PAYMENTS
      description: Accounting lines
      anyOf:
      - "$ref": "#/components/schemas/generic-accounting-svcPaymentsAccountingLine"
      - "$ref": "#/components/schemas/generic-accounting-svcSalesAccountingLine"
    generic-accounting-svcMissingMapping:
      type: object
      properties:
        type:
          type: string
          description: The Type of mapping this is, one of TAX, SALES, PAYMENTS
        id:
          type: string
          description: The local ID that is missing, i.e. the ones found in the Backoffice
      description: List of missing mappings
    generic-accounting-svcPaymentsAccountingLine:
      type: object
      properties:
        date:
          type: string
          description: Accounting date
        revenueCenterId:
          type: string
          description: The revenue center ID
        clearingAccount:
          type: string
          description: An optional clearing account
        accountId:
          type: string
          description: Account id used in the 3rd party accounting system
        accountName:
          type: string
          description: Account name used in the 3rd party accounting system
        salesCurrency:
          type: string
          description: Self explanatory
        totalLessTax:
          type: number
          description: Total amount
        tips:
          type: number
          description: Total tips
        type:
          type: string
          description: Accounting Line type discriminator
          enum:
          - SALES
          - PAYMENTS
    generic-accounting-svcSalesAccountingLine:
      type: object
      properties:
        date:
          type: string
          description: Accounting date
        revenueCenterId:
          type: string
          description: The revenue center ID
        clearingAccount:
          type: string
          description: An optional clearing account
        accountId:
          type: string
          description: Account id used in the 3rd party accounting system
        posAccountId:
          type: string
          description: POS Account id
        accountName:
          type: string
          description: Account name used in the 3rd party accounting system
        salesCurrency:
          type: string
          description: Self explanatory
        totalTaxAmount:
          type: number
          description: Total tax amount
        totalExcludingTax:
          type: number
          description: Total amount not including sales tax
        totalIncludingTax:
          type: number
          description: Total amount including sales tax
        taxAccountId:
          type: string
          description: Account ID used for tax for these sales
        taxCode:
          type: string
          description: Tax code for for tax for these sales
        type:
          type: string
          description: Accounting Line type discriminator
          enum:
          - SALES
          - PAYMENTS
    generic-accounting-svcSingleMapping:
      required:
      - accountingSystemId
      - internalAccountId
      - tenantId
      type: object
      properties:
        id:
          type: integer
          format: int64
        tenantId:
          maxLength: 36
          minLength: 1
          type: string
        internalAccountId:
          maxLength: 36
          minLength: 1
          type: string
        accountingSystemId:
          maxLength: 36
          minLength: 1
          type: string
        customDestinationAccountName:
          maxLength: 128
          minLength: 1
          type: string
    generic-accounting-svcAccountMap:
      required:
      - mappings
      - tenantId
      - type
      type: object
      properties:
        id:
          type: integer
          format: int64
        type:
          type: string
          enum:
          - SALES
          - TAX
          - PAYMENTS
        tenantId:
          maxLength: 36
          minLength: 1
          type: string
        mappings:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/generic-accounting-svcSingleMapping"
        clearingAccount:
          type: string
    gift-card-serviceLocaleEnum:
      type: string
      description: Locale code for translated column headers and filename prefix (case-insensitive)
      enum:
      - en
      - de
      - es
      - fr_fr
      - fr_ca
      - it
      - nl
      default: en
    gift-card-serviceBusinessDto:
      properties:
        active:
          type: boolean
        addTransactionRestricted:
          type: boolean
        advancedStockManagement:
          type: boolean
        alphabeticOrder:
          type: boolean
        cancelReceiptRestricted:
          type: boolean
        centsRestricted:
          type: boolean
        costPriceTaxIncluded:
          type: boolean
        createdOn:
          format: date-time
          type: string
        currencyCode:
          type: string
        currencyRestricted:
          type: boolean
        editForeignCurrencyRestricted:
          type: boolean
        editReceiptRestricted:
          type: boolean
        finalBillRestricted:
          type: boolean
        fiscalNoCancel:
          type: boolean
        fiscalNoDuplicate:
          type: boolean
        fiscalNoNegative:
          type: boolean
        fiscalNote:
          type: boolean
        fiscalPrintingRestriction:
          type: boolean
        fiscalReceipt:
          type: boolean
        giftCardMaxAmount:
          type: number
        id:
          format: int64
          type: integer
        itemLevelStatisticGroups:
          type: boolean
        locale:
          type: string
        managedBilling:
          type: boolean
        multiSite:
          type: boolean
        name:
          type: string
        onDemandGiftCardEnabled:
          type: boolean
        priceListEnabled:
          type: boolean
        referenceDate:
          format: date-time
          type: string
        settleDebtorsInvoiceRestricted:
          type: boolean
        status:
          enum:
          - SIGNUP
          - EMPTY
          - TRIAL
          - PENDING_PRODUCTION
          - PRODUCTION
          type: string
        taxIncluded:
          type: boolean
        tipsRestricted:
          type: boolean
        tleDebtorsInvoiceRestricted:
          "$ref": "#/components/schemas/gift-card-serviceBusinessDto"
        unlinkedDebtorsTransactionsRestricted:
          type: boolean
      type: object
    gift-card-serviceBusinessLocationDto:
      properties:
        accountOwner:
          type: string
        accountType:
          type: string
        accountingEnabled:
          type: boolean
        accountingReference:
          maxLength: 128
          minLength: 0
          type: string
        active:
          type: boolean
        addressLine1:
          maxLength: 64
          minLength: 0
          type: string
        addressLine2:
          maxLength: 64
          minLength: 0
          type: string
        airPrintCSS:
          maxLength: 4096
          minLength: 0
          type: string
        businessActive:
          type: boolean
        businessCostPriceTaxIncluded:
          type: boolean
        businessCreatedOn:
          format: date-time
          type: string
        businessCurrency:
          type: string
        businessId:
          format: int64
          type: integer
        businessLocale:
          maxLength: 16
          minLength: 0
          type: string
        businessName:
          maxLength: 128
          minLength: 0
          type: string
        businessReferenceDate:
          format: date-time
          type: string
        businessStatus:
          enum:
          - SIGNUP
          - EMPTY
          - TRIAL
          - PENDING_PRODUCTION
          - PRODUCTION
          type: string
        businessTaxIncluded:
          type: boolean
        city:
          maxLength: 64
          minLength: 0
          type: string
        clearingAccount:
          maxLength: 20
          minLength: 0
          type: string
        consumerMessage:
          type: string
        contractStartDate:
          format: date-time
          type: string
        country:
          maxLength: 8
          minLength: 0
          type: string
        createdOn:
          format: date-time
          type: string
        crmAccountId:
          type: string
        defaultStockId:
          format: int64
          type: integer
        errors:
          type: object
        externalProvisioningId:
          type: string
        fiscalCsvFormat:
          type: boolean
        fiscalIdentifier:
          maxLength: 32
          minLength: 0
          type: string
        halfServiceHour:
          format: int32
          type: integer
        hideCustomerBilling:
          type: boolean
        id:
          format: int64
          type: integer
        languageCode:
          type: string
        localOrdersKey:
          type: string
        majorVersionUpgradeAllowed:
          type: boolean
        managedBilling:
          type: boolean
        managedInvoicing:
          type: boolean
        maxCovers:
          format: int32
          type: integer
        maxReports:
          format: int32
          type: integer
        migratedProvisioning:
          type: boolean
        moveToProdDate:
          format: date-time
          type: string
        name:
          maxLength: 512
          minLength: 0
          type: string
        period:
          format: int32
          type: integer
        phone:
          maxLength: 32
          minLength: 0
          type: string
        preV3:
          type: boolean
        provisioningMigrationDate:
          format: date-time
          type: string
        receiptFooterLastLine:
          type: string
        requiredPosMajorVersion:
          format: int32
          type: integer
        resellerName:
          type: string
        salesforceId:
          type: string
        shifts:
          type: string
        startOfTheDay:
          format: int32
          type: integer
        startOfTheWeek:
          format: int32
          type: integer
        state:
          maxLength: 64
          minLength: 0
          type: string
        status:
          enum:
          - SIGNUP
          - EMPTY
          - TRIAL
          - PENDING_PRODUCTION
          - PRODUCTION
          type: string
        template:
          type: boolean
        timeTrackingEnabled:
          type: boolean
        timezone:
          maxLength: 64
          minLength: 0
          type: string
        tipsAccount:
          maxLength: 20
          minLength: 0
          type: string
        unitSystem:
          enum:
          - METRIC
          - IMPERIAL
          - MIX_METRIC_IMPERIAL
          - US_CUSTOMARY
          - ALL
          type: string
        version3:
          type: boolean
        versionDates:
          additionalProperties:
            format: date-time
            type: string
          type: object
        zipCode:
          maxLength: 64
          minLength: 0
          type: string
      required:
      - businessCurrency
      - businessLocale
      - businessName
      - city
      - country
      - name
      - timezone
      - zipCode
      type: object
    gift-card-serviceCardBatchRepresentation:
      properties:
        business:
          "$ref": "#/components/schemas/gift-card-serviceBusinessDto"
        description:
          type: string
        errors:
          type: object
        id:
          format: int64
          type: integer
        importSource:
          type: string
        loyaltyProgram:
          "$ref": "#/components/schemas/gift-card-serviceLoyaltyProgramDto"
        name:
          type: string
        offline:
          type: boolean
        onDemand:
          type: boolean
        punchLines:
          items:
            "$ref": "#/components/schemas/gift-card-servicePunchLineDto"
          type: array
        size:
          format: int32
          minimum: 1
          type: integer
        type:
          enum:
          - VIP
          - POINTS
          - GIFT
          - PUNCH
          - ID
          type: string
        unusedCardsCount:
          format: int64
          type: integer
      required:
      - name
      type: object
    gift-card-serviceCardImportErrorRecord:
      properties:
        error:
          maxLength: 2147483647
          minLength: 1
          type: string
        errorCode:
          maxLength: 2147483647
          minLength: 1
          type: string
        importedCardId:
          maxLength: 2147483647
          minLength: 1
          type: string
        recordId:
          format: int64
          minimum: 1
          type: integer
      type: object
    gift-card-serviceConsumerAccountDto:
      properties:
        amount:
          type: number
        autoPay:
          type: boolean
        businessLocation:
          "$ref": "#/components/schemas/gift-card-serviceBusinessLocationDto"
        consumer:
          "$ref": "#/components/schemas/gift-card-serviceConsumerDto"
        id:
          format: int64
          type: integer
        maxAmount:
          type: number
        maxOverdraftAmount:
          type: number
      type: object
    gift-card-serviceConsumerContactDto:
      properties:
        addressLine1:
          maxLength: 255
          minLength: 0
          type: string
        addressLine2:
          maxLength: 255
          minLength: 0
          type: string
        city:
          maxLength: 128
          minLength: 0
          type: string
        companyName:
          maxLength: 128
          minLength: 0
          type: string
        country:
          maxLength: 8
          minLength: 0
          type: string
        creationDate:
          format: date-time
          type: string
        destinationCode:
          maxLength: 64
          minLength: 0
          type: string
        emailReceipts:
          type: boolean
        errors:
          type: object
        firstName:
          maxLength: 128
          minLength: 0
          type: string
        fiscalCode:
          maxLength: 128
          minLength: 0
          type: string
        fullName:
          type: string
        id:
          format: int64
          type: integer
        lastName:
          maxLength: 128
          minLength: 0
          type: string
        phoneNumber1:
          maxLength: 64
          minLength: 0
          type: string
        phoneNumber2:
          maxLength: 64
          minLength: 0
          type: string
        readonlyFields:
          items:
            type: string
          type: array
          uniqueItems: true
        salutation:
          maxLength: 64
          minLength: 0
          type: string
        state:
          maxLength: 32
          minLength: 0
          type: string
        taxIdentifier:
          maxLength: 64
          minLength: 0
          type: string
        zipCode:
          maxLength: 64
          minLength: 0
          type: string
      required:
      - firstName
      - lastName
      type: object
    gift-card-serviceConsumerDto:
      properties:
        consumerNotes:
          items:
            "$ref": "#/components/schemas/gift-card-serviceConsumerNoteDto"
          type: array
        contactInformation:
          "$ref": "#/components/schemas/gift-card-serviceConsumerContactDto"
        creationDate:
          format: date-time
          type: string
        discountId:
          format: int64
          type: integer
        emailAddress:
          type: string
        errors:
          type: object
        firstSeenByBusinessId:
          format: int64
          type: integer
        gratuityAmount:
          format: double
          type: number
        id:
          format: int64
          type: integer
        language:
          type: string
        modificationDate:
          format: date-time
          type: string
        paymentAmounts:
          additionalProperties:
            format: double
            type: number
          type: object
        recordId:
          format: int64
          type: integer
        recordUuid:
          type: string
        tagId:
          format: int64
          type: integer
        ticketCount:
          format: double
          type: number
        totalAmount:
          format: double
          type: number
      required:
      - creationDate
      - language
      type: object
    gift-card-serviceConsumerNoteDto:
      properties:
        keyName:
          type: string
        value:
          type: string
      type: object
    gift-card-serviceCreateConsumerDto:
      properties:
        addressLine1:
          maxLength: 255
          minLength: 0
          type: string
        addressLine2:
          maxLength: 255
          minLength: 0
          type: string
        city:
          maxLength: 128
          minLength: 0
          type: string
        companyName:
          maxLength: 128
          minLength: 0
          type: string
        country:
          maxLength: 8
          minLength: 0
          type: string
        destinationCode:
          maxLength: 64
          minLength: 0
          type: string
        email:
          type: string
        firstName:
          maxLength: 128
          minLength: 0
          type: string
        fiscalCode:
          maxLength: 128
          minLength: 0
          type: string
        language:
          maxLength: 2
          minLength: 0
          type: string
        lastName:
          maxLength: 128
          minLength: 0
          type: string
        phoneNumber1:
          maxLength: 64
          minLength: 0
          type: string
        phoneNumber2:
          maxLength: 64
          minLength: 0
          type: string
        state:
          maxLength: 32
          minLength: 0
          type: string
        taxIdentifier:
          maxLength: 64
          minLength: 0
          type: string
        zipCode:
          maxLength: 64
          minLength: 0
          type: string
      required:
      - email
      type: object
    gift-card-serviceGiftOperationLineDto:
      properties:
        amount:
          type: number
        balance:
          type: number
        cancelTime:
          format: date-time
          type: string
        confirmationAccountFiscalId:
          type: string
        confirmationAccountId:
          format: int64
          type: integer
        confirmationCancelationDate:
          format: date-time
          type: string
        confirmationDate:
          format: date-time
          type: string
        confirmed:
          type: boolean
        date:
          format: date-time
          type: string
        id:
          format: int64
          type: integer
        paymentMethodCode:
          type: string
        paymentMethodId:
          format: int64
          type: integer
        paymentMethodName:
          type: string
        remark:
          type: string
        staffFullName:
          type: string
        staffId:
          format: int64
          type: integer
        status:
          enum:
          - NOT_CONFIRMED
          - CONFIRMED
          - CANCELLED
          type: string
        token:
          type: string
        type:
          enum:
          - REFILL
          - WITHDRAW
          type: string
      type: object
    gift-card-serviceLoyaltyProgramDto:
      properties:
        businessId:
          format: int64
          type: integer
        name:
          type: string
      type: object
    gift-card-serviceOnlineMerchant:
      properties:
        displayableName:
          type: string
      type: object
    gift-card-serviceOnlineWebStore:
      properties:
        backgroundImage:
          type: string
        customAmountEnabled:
          type: boolean
        enabled:
          type: boolean
        link:
          type: string
        predefinedAmounts:
          items:
            format: double
            type: number
          type: array
          uniqueItems: true
        predefinedAmountsEnabled:
          type: boolean
      required:
      - predefinedAmounts
      type: object
    gift-card-serviceProductFilterDto:
      properties:
        errors:
          type: object
        items:
          items:
            "$ref": "#/components/schemas/gift-card-serviceProductFilterItemDto"
          type: array
        type:
          enum:
          - INCLUDE
          - EXCLUDE
          type: string
      required:
      - type
      type: object
    gift-card-serviceProductFilterItemDto:
      properties:
        accountingGroupId:
          format: int64
          type: integer
        accountingGroupName:
          type: string
        errors:
          type: object
        id:
          format: int64
          type: integer
        maxCount:
          format: int32
          type: integer
        productId:
          format: int64
          type: integer
        productName:
          type: string
      required:
      - accountingGroupId
      - maxCount
      type: object
    gift-card-servicePunchCompletionDto:
      properties:
        complete:
          type: boolean
        current:
          format: int32
          type: integer
        name:
          type: string
        percent:
          format: int32
          type: integer
        remaining:
          format: int32
          type: integer
        target:
          format: int32
          type: integer
      type: object
    gift-card-servicePunchConfigurationItemDto:
      properties:
        cumulative:
          type: boolean
        errors:
          type: object
        fromDate:
          format: date-time
          type: string
        id:
          format: int64
          type: integer
        name:
          maxLength: 128
          minLength: 0
          type: string
        rewardProductFilter:
          "$ref": "#/components/schemas/gift-card-serviceProductFilterDto"
        targetProductFilter:
          "$ref": "#/components/schemas/gift-card-serviceProductFilterDto"
        targetQuantity:
          format: int32
          type: integer
        toDate:
          format: date-time
          type: string
      required:
      - fromDate
      - name
      - toDate
      type: object
    gift-card-servicePunchLineDto:
      properties:
        completion:
          "$ref": "#/components/schemas/gift-card-servicePunchCompletionDto"
        id:
          format: int64
          type: integer
        punchConfigurationItem:
          "$ref": "#/components/schemas/gift-card-servicePunchConfigurationItemDto"
      type: object
    gift-card-serviceCommonStatsMetricDto:
      type: object
      description: Common statistics metric containing total count and average value
      properties:
        total:
          type: number
          format: double
          description: Total amount
        avg:
          type: number
          format: double
          description: Average amount
        count:
          type: integer
          format: int32
          description: Total number
    id-cards-apiCreateIdCardBatchRequest:
      type: object
      properties:
        name:
          type: string
          description: The name of the ID card batch.
          example: Sample Batch Name
          pattern: ".*\\S.*"
          maxLength: 255
      required:
      - name
    id-cards-apiIdCardBatch:
      type: object
      properties:
        batchId:
          type: integer
          format: int64
          description: The unique identifier for the ID card batch.
          example: 12345
        name:
          type: string
          description: The name of the ID card batch.
        businessLocationId:
          type: integer
          format: int64
          description: The unique identifier for the business location this batch
            belongs to.
          example: 67890
    id-cards-apiCreateIdCardsRequest:
      type: object
      properties:
        cardCount:
          type: integer
          format: int32
          description: The number of ID cards to create.
          example: 1
          minimum: 1
          maximum: 100
      required:
      - cardCount
    id-cards-apiCreateIdCardsResponse:
      type: object
      properties:
        batchId:
          type: integer
          format: int64
          description: The unique identifier for the batch the cards were added to.
          example: 12345
        cards:
          type: array
          items:
            "$ref": "#/components/schemas/id-cards-apiCardReference"
    id-cards-apiCardReference:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for the ID card.
          example: 98765
        consumerRecordId:
          type: integer
          format: int64
          description: The unique identifier for the associated consumer record.
          example: 54321
        consumerId:
          type: integer
          format: int64
          description: The unique identifier for the associated consumer.
          example: 13579
        url:
          type: string
          description: The URL for the QR code associated with the ID card.
          example: https://example.com/id-cards/98765/qr-code
    insights-serviceProductGroupId:
      type: string
      minLength: 1
      example: '123456'
    insights-serviceId:
      type: string
      minLength: 1
      example: '123456789'
    insights-serviceItemId:
      type: string
      minLength: 1
      example: '123456789'
    insights-serviceItemName:
      type: string
      minLength: 1
      example: Coffee
    insights-serviceProductId:
      type: string
      minLength: 1
      example: '123456789'
    insights-serviceProductName:
      type: string
      minLength: 1
      example: Coffee
    insights-serviceLocationId:
      type: string
      minLength: 1
      example: '123456789'
    insights-serviceBusinessId:
      type: string
      minLength: 1
      example: '123456789'
    insights-serviceCountryCode:
      type: string
      minLength: 2
      maxLength: 2
      example: GB
    insights-serviceServerId:
      type: string
      minLength: 1
      example: '123456789'
    insights-serviceServerGroupId:
      type: string
      minLength: 1
      example: JOB123
    insights-serviceTimeRange:
      type: string
      minLength: 11
      maxLength: 11
      pattern: "^\\d\\d:[03]0-\\d\\d:[03]0$"
      example: 07:30-10:00
    insights-serviceFirstName:
      type: string
      minLength: 1
      example: John
    insights-serviceLastName:
      type: string
      minLength: 1
      example: Smith
    insights-serviceJobTitle:
      type: string
      minLength: 1
      example: Manager
    insights-serviceJobId:
      type: string
      minLength: 1
      example: '123456789'
    insights-serviceTimeUnit:
      type: string
      enum:
      - hour
      - day
      - week
      - month
      - quarter
      example: day
      x-go-type: models.TimeUnit
      x-go-type-import:
        path: github.com/lightspeed-hospitality/insights-service/models
    insights-serviceHour:
      type: integer
      minimum: 0
      maximum: 47
      example: 0
      description: Hour of a business day in 24 hour time. 0 is midnight. 24 is midnight
        the next day, but still the same business day.
    insights-serviceDayOfWeek:
      type: integer
      minimum: 0
      maximum: 6
      example: 0
      description: Day of the week. 0 is Monday.
      x-go-type: models.Weekday
      x-go-type-import:
        path: github.com/lightspeed-hospitality/insights-service/models
    insights-serviceMonth:
      type: integer
      minimum: 1
      maximum: 12
      example: 1
      description: The Month the average was calculated using the previous year's
        Sales.
    insights-serviceYear:
      type: integer
      minimum: 1
      maximum: 3000
      example: 2023
      description: The Year the average was calculated using the previous year's Sales.
    insights-serviceCurrencyAmount:
      type: integer
      format: int64
      minimum: -9007199254740991
      maximum: 9007199254740991
      default: 0
      description: In units of 0.01 within JavaScript's MIN_SAFE_INTEGER and MAX_SAFE_INTEGER
      x-go-type: models.CurrencyAmount
      x-go-type-import:
        path: github.com/lightspeed-hospitality/insights-service/models
    insights-serviceTotal:
      type: integer
      format: int64
      minimum: -9007199254740991
      maximum: 9007199254740991
      default: 0
      description: This is the summed 'total' according to the POS. It is the total
        paid after discounts. In units of 0.01 within JavaScript's MIN_SAFE_INTEGER
        and MAX_SAFE_INTEGER
    insights-serviceFractionalQuantity:
      type: number
      format: double
      default: 0
      minimum: 0
      description: a positive floating point number
      x-go-type: models.DecimalTenThousandths
      x-go-type-import:
        path: github.com/lightspeed-hospitality/insights-service/models
    insights-serviceTenThousandths:
      type: integer
      format: int64
      default: 0
      minimum: -9007199254740991
      maximum: 9007199254740991
      description: a fixed point quantity in units of 10,000ths - this is the internal
        representation of quantity in K-Series
    insights-serviceRoundedHour:
      type: number
      format: double
      default: 0
      minimum: 0
      description: float number rounded to the quarter
    insights-servicePercentage:
      type: number
      format: double
      default: 0
      description: a ratio multiplied by 100
      x-go-type: models.Float
      x-go-type-import:
        path: github.com/lightspeed-hospitality/insights-service/models
    insights-serviceBasisPoint:
      type: number
      format: double
      default: 0
      description: a ratio multiplied by 10,000
    insights-serviceCount:
      type: integer
      format: int64
      minimum: 0
      maximum: 9007199254740991
      default: 0
      description: Max of JavaScript's MAX_SAFE_INTEGER
      x-go-type: models.SignedCount
      x-go-type-import:
        path: github.com/lightspeed-hospitality/insights-service/models
    insights-serviceDate:
      type: string
      format: date
      example: '2022-12-20'
      x-go-type: models.Date
      x-go-type-import:
        path: github.com/lightspeed-hospitality/insights-service/models
    insights-serviceTimestamp:
      type: string
      example: '2025-09-16T16:09:25+03:00'
      description: RFC3339 timestamp
      x-go-type: models.RFC3339
      x-go-type-import:
        path: github.com/lightspeed-hospitality/insights-service/models
      x-go-type-skip-optional-pointer: true
      x-omitzero: true
    insights-serviceKpiName:
      type: string
      example: hero
    insights-serviceConclusions:
      type: string
      minLength: 1
      example: Sales are up
    insights-servicePerBasisPoint:
      type: integer
      format: int64
      minimum: -9007199254740991
      maximum: 9007199254740991
      default: 0
      description: Whole number percentage in units of 0.01. eg.  1000 => 10%
    insights-serviceBusinessDayPeriodEventsList:
      type: array
      items:
        "$ref": "#/components/schemas/insights-serviceBusinessDayPeriodEvents"
    insights-serviceBusinessDayPeriodEvents:
      type: object
      properties:
        business_day:
          "$ref": "#/components/schemas/insights-serviceDate"
        opened_periods:
          "$ref": "#/components/schemas/insights-servicePeriodEvents"
        closed_periods:
          "$ref": "#/components/schemas/insights-servicePeriodEvents"
        opened:
          type: boolean
        closed:
          type: boolean
        open_timestamp:
          "$ref": "#/components/schemas/insights-serviceTimestamp"
        close_timestamp:
          "$ref": "#/components/schemas/insights-serviceTimestamp"
      required:
      - business_day
      - opened_periods
      - closed_periods
      - opened
      - closed
    insights-servicePeriodEvent:
      type: object
      properties:
        device_id:
          type: string
        period_id:
          type: string
        device_name:
          type: string
        timestamp:
          "$ref": "#/components/schemas/insights-serviceTimestamp"
        open_timestamp:
          "$ref": "#/components/schemas/insights-serviceTimestamp"
        is_passive:
          type: boolean
      required:
      - device_id
      - period_id
      - device_name
      - timestamp
      - open_timestamp
      - is_passive
    insights-servicePeriodEvents:
      type: array
      items:
        "$ref": "#/components/schemas/insights-servicePeriodEvent"
    insights-serviceSalesServerSummaryMap:
      type: object
      description: map of server/POS user ids to staff detail and sale summary
      additionalProperties:
        x-additionalPropertiesName: serverId
        "$ref": "#/components/schemas/insights-serviceSalesServer"
      example:
        server123:
          first_name: John
          last_name: Smith
          sales:
          - business_day_from: '2022-12-20'
            business_day_to: '2022-12-20'
            interval_from: '2022-12-20T11:00:00-05:00'
            interval_to: '2022-12-20T12:00:00-05:00'
            net_sales: 123456
            gross_sales: 123789
            repeat_gross_sales: 123789
            covers: 562
            net_sales_with_covers: 1234
            gross_sales_with_covers: 1234
            guest_checks: 316
            guest_checks_no_covers: 0
            repeat_guest_checks: 316
            staff_worked_minutes: 30
            turn_time_minutes: 10
            checks_with_turn: 1
            taxes: 1633
            surcharges: 0
            card_fees: 379
            tips: 659
            voids: 1289
            refunds: 1082
            discounts: 690
            comps: 530
            losses: 210
            interval: hour
          - business_day_from: '2022-12-20'
            business_day_to: '2022-12-20'
            interval_from: '2022-12-20T12:00:00-05:00'
            interval_to: '2022-12-20T13:00:00-05:00'
            net_sales: 23423
            gross_sales: 34323
            repeat_gross_sales: 34323
            covers: 42
            net_sales_with_covers: 1234
            gross_sales_with_covers: 1234
            guest_checks: 37
            guest_checks_no_covers: 0
            repeat_guest_checks: 37
            staff_worked_minutes: 30
            turn_time_minutes: 10
            checks_with_turn: 1
            taxes: 1351
            surcharges: 0
            card_fees: 379
            tips: 659
            voids: 1289
            refunds: 1082
            discounts: 690
            comps: 530
            losses: 210
            interval: hour
    insights-serviceSalesServer:
      type: object
      description: Staff details with an array of sales
      required:
      - first_name
      - last_name
      - sales
      properties:
        first_name:
          type: string
          example: John
        last_name:
          type: string
          example: Smith
        sales:
          type: array
          items:
            "$ref": "#/components/schemas/insights-serviceSalesSummaryItem"
      example:
        first_name: John
        last_name: Smith
        sales:
        - business_day_from: '2022-12-20'
          business_day_to: '2022-12-20'
          interval_from: '2022-12-20T11:00:00-05:00'
          interval_to: '2022-12-20T12:00:00-05:00'
          net_sales: 123456
          gross_sales: 123789
          repeat_gross_sales: 123789
          covers: 562
          net_sales_with_covers: 1234
          gross_sales_with_covers: 1234
          guest_checks: 316
          guest_checks_no_covers: 0
          repeat_guest_checks: 316
          staff_worked_minutes: 30
          turn_time_minutes: 10
          checks_with_turn: 1
          taxes: 1633
          surcharges: 0
          card_fees: 379
          tips: 659
          voids: 1289
          refunds: 1082
          discounts: 690
          comps: 530
          losses: 210
          interval: hour
        - business_day_from: '2022-12-20'
          business_day_to: '2022-12-20'
          interval_from: '2022-12-20T12:00:00-05:00'
          interval_to: '2022-12-20T13:00:00-05:00'
          net_sales: 23423
          gross_sales: 34323
          repeat_gross_sales: 34323
          covers: 42
          net_sales_with_covers: 1234
          gross_sales_with_covers: 1234
          guest_checks: 37
          guest_checks_no_covers: 0
          repeat_guest_checks: 37
          staff_worked_minutes: 30
          turn_time_minutes: 10
          checks_with_turn: 1
          taxes: 1351
          surcharges: 0
          card_fees: 379
          tips: 659
          voids: 1289
          refunds: 1082
          discounts: 690
          comps: 530
          losses: 210
          interval: hour
    insights-serviceSalesSummaryMap:
      type: object
      description: map of LocationIds to arrays of SalesSummaryItems
      additionalProperties:
        x-additionalPropertiesName: locationId
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceSalesSummaryItem"
      example:
        Location1:
        - business_day_from: '2022-12-20'
          business_day_to: '2022-12-20'
          interval_from: '2022-12-20T11:00:00-05:00'
          interval_to: '2022-12-20T12:00:00-05:00'
          net_sales: 123456
          gross_sales: 123789
          repeat_gross_sales: 123789
          covers: 562
          net_sales_with_covers: 1234
          gross_sales_with_covers: 1234
          guest_checks: 316
          guest_checks_no_covers: 0
          repeat_guest_checks: 316
          staff_worked_minutes: 30
          turn_time_minutes: 10
          checks_with_turn: 1
          taxes: 1633
          surcharges: 0
          card_fees: 379
          tips: 659
          voids: 1289
          refunds: 1082
          discounts: 690
          comps: 530
          losses: 210
          interval: hour
        - business_day_from: '2022-12-20'
          business_day_to: '2022-12-20'
          interval_from: '2022-12-20T12:00:00-05:00'
          interval_to: '2022-12-20T13:00:00-05:00'
          net_sales: 23423
          gross_sales: 34323
          repeat_gross_sales: 34323
          covers: 42
          net_sales_with_covers: 1234
          gross_sales_with_covers: 1234
          guest_checks: 37
          guest_checks_no_covers: 0
          repeat_guest_checks: 37
          staff_worked_minutes: 30
          turn_time_minutes: 10
          checks_with_turn: 1
          taxes: 1351
          surcharges: 0
          card_fees: 379
          tips: 659
          voids: 1289
          refunds: 1082
          discounts: 690
          comps: 530
          losses: 210
          interval: hour
    insights-serviceSalesSummaryItem:
      required:
      - business_day_from
      - business_day_to
      - interval_from
      - interval_to
      - net_sales
      - gross_sales
      - repeat_gross_sales
      - covers
      - net_sales_with_covers
      - gross_sales_with_covers
      - guest_checks
      - guest_checks_no_covers
      - repeat_guest_checks
      - staff_worked_minutes
      - turn_time_minutes
      - checks_with_turn
      - taxes
      - surcharges
      - card_fees
      - tips
      - voids
      - refunds
      - discounts
      - comps
      - losses
      - interval
      type: object
      properties:
        business_day_from:
          type: string
          format: date
          description: The first trading day this time interval includes
          example: '2022-12-20'
        business_day_to:
          type: string
          format: date
          description: The last trading day this time interval includes
          example: '2022-12-20'
        business_day_closed:
          type: boolean
          description: Indicates at least one period has been opened and all of the
            open periods have been closed
        interval_from:
          type: string
          description: The starting time of an `hour` interval. Returns `business_day_from`
            at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval_to:
          type: string
          description: The ending time of an `hour` interval. Returns the day _after_
            `business_day_to` at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        tips:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        surcharges:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        card_fees:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        voids:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        refunds:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        losses:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        discounts:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        comps:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        repeat_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        net_sales_with_covers:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        gross_sales_with_covers:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        turn_time_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
        checks_with_turn:
          "$ref": "#/components/schemas/insights-serviceCount"
        guest_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        guest_checks_no_covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        repeat_guest_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        staff_worked_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
        taxes:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        interval:
          "$ref": "#/components/schemas/insights-serviceTimeUnit"
        sod_unpaid:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        sod_unpaid_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        eod_unpaid:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        eod_unpaid_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        new_unpaid:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        new_unpaid_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
      example:
        business_day_from: '2022-12-20'
        business_day_to: '2022-12-20'
        interval_from: '2022-12-20T11:00:00-05:00'
        interval_to: '2022-12-21T11:00:00-05:00'
        net_sales: 123456
        gross_sales: 123789
        tips: 659
        surcharges: 879
        card_fees: 379
        voids: 1289
        refunds: 1082
        discounts: 690
        comps: 530
        losses: 210
        repeat_gross_sales: 123789
        covers: 562
        net_sales_with_covers: 1234
        gross_sales_with_covers: 1234
        turn_time_minutes: 10
        checks_with_turn: 1
        guest_checks: 316
        guest_checks_no_covers: 36
        repeat_guest_checks: 316
        staff_worked_minutes: 30
        taxes: 150
        interval: day
    insights-serviceSalesGroupedSelectFieldsMap:
      type: object
      description: map of LocationIds to arrays of SalesGroupedSelectFieldsItems
      additionalProperties:
        x-additionalPropertiesName: locationId
        "$ref": "#/components/schemas/insights-serviceSalesGroupedSelectFieldsItem"
    insights-serviceSalesGroupedSelectFieldsItem:
      type: object
      properties:
        total:
          "$ref": "#/components/schemas/insights-serviceSalesGroupedSelectFieldsInterval"
        quarters:
          type: array
          description: array of Quarter Intervals
          items:
            "$ref": "#/components/schemas/insights-serviceSalesGroupedSelectFieldsInterval"
        months:
          type: array
          description: array of Month Intervals
          items:
            "$ref": "#/components/schemas/insights-serviceSalesGroupedSelectFieldsInterval"
        weeks:
          type: array
          description: array of Week Intervals
          items:
            "$ref": "#/components/schemas/insights-serviceSalesGroupedSelectFieldsInterval"
        days:
          type: array
          description: array of Day Intervals
          items:
            "$ref": "#/components/schemas/insights-serviceSalesGroupedSelectFieldsInterval"
    insights-serviceSalesGroupedSelectFieldsInterval:
      required:
      - business_day_from
      - business_day_to
      type: object
      properties:
        business_day_from:
          type: string
          format: date
          description: The first trading day this time interval includes
          example: '2022-12-20'
        business_day_to:
          type: string
          format: date
          description: The last trading day this time interval includes
          example: '2022-12-20'
        net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        tips:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        surcharges:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        card_fees:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        voids:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        refunds:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        losses:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        discounts:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        comps:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        repeat_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        net_sales_with_covers:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        gross_sales_with_covers:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        guest_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        guest_checks_no_covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        repeat_guest_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        taxes:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
    insights-serviceSalesDiscountMap:
      type: object
      description: map of LocationIds to arrays of SalesDiscountIntervals
      additionalProperties:
        x-additionalPropertiesName: locationId
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceSalesDiscountInterval"
    insights-serviceSalesDiscountInterval:
      required:
      - business_day_from
      - business_day_to
      - interval_from
      - interval_to
      - interval
      - discounts
      type: object
      properties:
        business_day_from:
          type: string
          format: date
          description: The first trading day this time interval includes
          example: '2022-12-20'
        business_day_to:
          type: string
          format: date
          description: The last trading day this time interval includes
          example: '2022-12-20'
        interval_from:
          type: string
          description: The starting time of an `hour` interval. Returns `business_day_from`
            at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval_to:
          type: string
          description: The ending time of an `hour` interval. Returns the day _after_
            `business_day_to` at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval:
          "$ref": "#/components/schemas/insights-serviceTimeUnit"
        discounts:
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemDetailsList"
    insights-serviceSalesBucketMap:
      type: object
      description: map of LocationIds to arrays of SalesBucketTotals
      additionalProperties:
        x-additionalPropertiesName: locationId
        "$ref": "#/components/schemas/insights-serviceSalesBucketTotals"
    insights-serviceSalesBucketTotals:
      required:
      - totals
      - items
      type: object
      properties:
        totals:
          "$ref": "#/components/schemas/insights-serviceSalesBucketTotalsArray"
        items:
          "$ref": "#/components/schemas/insights-serviceSalesBucketItemArray"
    insights-serviceSalesBucketTotalsArray:
      type: array
      description: array of Buckets to SalesBucketTotalItem
      items:
        "$ref": "#/components/schemas/insights-serviceSalesBucketTotalItem"
    insights-serviceSalesBucketItemArray:
      type: array
      description: List of Buckets by the desired Interval
      items:
        "$ref": "#/components/schemas/insights-serviceSalesBucketItem"
    insights-serviceSalesBucketItem:
      required:
      - business_day_from
      - business_day_to
      - interval_from
      - interval_to
      - interval
      - totals
      type: object
      properties:
        business_day_from:
          type: string
          format: date
          description: The first trading day this time interval includes
          example: '2022-12-20'
        business_day_to:
          type: string
          format: date
          description: The last trading day this time interval includes
          example: '2022-12-20'
        interval_from:
          type: string
          description: The starting time of an `hour` interval. Returns `business_day_from`
            at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval_to:
          type: string
          description: The ending time of an `hour` interval. Returns the day _after_
            `business_day_to` at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval:
          "$ref": "#/components/schemas/insights-serviceTimeUnit"
        totals:
          "$ref": "#/components/schemas/insights-serviceSalesBucketTotalsArray"
    insights-serviceSalesBucketTotalItem:
      required:
      - total
      - guest_checks
      type: object
      properties:
        id:
          "$ref": "#/components/schemas/insights-serviceId"
        total:
          "$ref": "#/components/schemas/insights-serviceTotal"
        guest_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        tips:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        surcharges:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        card_fees:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        voids:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        refunds:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        comps:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        partial_discounts:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        losses:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        tax_amount:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
    insights-serviceSalesDetailedBucketMap:
      type: object
      description: map of LocationIds to arrays of SalesDetailedBucketTotals
      additionalProperties:
        x-additionalPropertiesName: locationId
        "$ref": "#/components/schemas/insights-serviceSalesDetailedBucketTotals"
    insights-serviceSalesDetailedBucketTotals:
      required:
      - totals
      - items
      type: object
      properties:
        totals:
          "$ref": "#/components/schemas/insights-serviceSalesDetailedBucketTotalsArray"
        individual_servers:
          "$ref": "#/components/schemas/insights-serviceSalesDetailedBucketServerMap"
        server_groups:
          "$ref": "#/components/schemas/insights-serviceSalesDetailedBucketServerGroupMap"
        items:
          "$ref": "#/components/schemas/insights-serviceSalesDetailedBucketItemArray"
    insights-serviceSalesDetailedBucketServerMap:
      type: object
      description: map of Servers to arrays of SalesDetailedBucketTotals
      additionalProperties:
        x-additionalPropertiesName: server_id
        "$ref": "#/components/schemas/insights-serviceSalesDetailedBucketTotalsArray"
    insights-serviceSalesDetailedBucketServerGroupMap:
      type: object
      description: map of Servers to arrays of SalesDetailedBucketTotals
      additionalProperties:
        x-additionalPropertiesName: server_group_id
        "$ref": "#/components/schemas/insights-serviceSalesDetailedBucketTotalsArray"
    insights-serviceSalesDetailedBucketTotalsArray:
      type: array
      description: array of Buckets to SalesDetailedBucketTotalItem
      items:
        "$ref": "#/components/schemas/insights-serviceSalesDetailedBucketTotalItem"
    insights-serviceSalesDetailedBucketItemArray:
      type: array
      description: List of Buckets by the desired Interval
      items:
        "$ref": "#/components/schemas/insights-serviceSalesDetailedBucketItem"
    insights-serviceSalesDetailedBucketItem:
      required:
      - business_day_from
      - business_day_to
      - interval_from
      - interval_to
      - interval_name
      - interval
      - totals
      type: object
      properties:
        business_day_from:
          type: string
          format: date
          description: The first trading day this time interval includes
          example: '2022-12-20'
        business_day_to:
          type: string
          format: date
          description: The last trading day this time interval includes
          example: '2022-12-20'
        interval_from:
          type: string
          description: The starting time of an `hour` interval. Returns `business_day_from`
            at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval_to:
          type: string
          description: The ending time of an `hour` interval. Returns the day _after_
            `business_day_to` at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval_name:
          type: string
          description: The name for this Interval.  For Shifts this is the time_range
            of the shift to the half hour.
        interval:
          "$ref": "#/components/schemas/insights-serviceTimeUnit"
        totals:
          "$ref": "#/components/schemas/insights-serviceSalesDetailedBucketTotalsArray"
    insights-serviceSalesDetailedBucketTotalItem:
      required:
      - id
      - name
      - total
      - guest_checks
      type: object
      properties:
        id:
          "$ref": "#/components/schemas/insights-serviceId"
          description: The Id for this Bucket
        name:
          type: string
          description: The Name for this Bucket
        title:
          type: string
          description: The Title for this object
        total:
          "$ref": "#/components/schemas/insights-serviceTotal"
        guest_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        tips:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        surcharges:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        card_fees:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        voids:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        refunds:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        discounts:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        comps:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        losses:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        taxes:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        staff_worked_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
          description: The total minutes worked by employees.  NOTE this is only available
            on the Shifts API
        net_order_average:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        gross_order_average:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        net_cover_average:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        gross_cover_average:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
    insights-serviceSalesReductionsMap:
      type: object
      description: map of LocationIds to sales reduction totals
      additionalProperties:
        x-additionalPropertiesName: locationId
        "$ref": "#/components/schemas/insights-serviceSalesReductionsTotals"
    insights-serviceSalesReductionsTotals:
      required:
      - totals
      - items
      type: object
      properties:
        totals:
          "$ref": "#/components/schemas/insights-serviceSalesReductionsResponseTotalItem"
        items:
          "$ref": "#/components/schemas/insights-serviceSalesReductionsItemArray"
    insights-serviceSalesReductionsItemArray:
      type: array
      description: List of Reductions by the desired Interval
      items:
        "$ref": "#/components/schemas/insights-serviceSalesReductionsItem"
    insights-serviceSalesReductionsItem:
      required:
      - business_day_from
      - business_day_to
      - interval_from
      - interval_to
      - interval
      - totals
      type: object
      properties:
        business_day_from:
          type: string
          format: date
          description: The first trading day this time interval includes
          example: '2022-12-20'
        business_day_to:
          type: string
          format: date
          description: The last trading day this time interval includes
          example: '2022-12-20'
        interval_from:
          type: string
          description: The starting time of an `hour` interval. Returns `business_day_from`
            at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval_to:
          type: string
          description: The ending time of an `hour` interval. Returns the day _after_
            `business_day_to` at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval:
          "$ref": "#/components/schemas/insights-serviceTimeUnit"
        totals:
          "$ref": "#/components/schemas/insights-serviceSalesReductionsResponseTotalItem"
    insights-serviceSalesReductionsResponseTotalItem:
      required:
      - discounts
      - comps
      - voids
      - refunds
      - losses
      type: object
      properties:
        discounts:
          type: object
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemReduction"
        comps:
          type: object
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemReduction"
        voids:
          type: object
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemReduction"
        refunds:
          type: object
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemReduction"
        losses:
          type: object
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemReduction"
    insights-serviceEventsMap:
      type: object
      description: map of LocationIds to arrays of EventItems
      additionalProperties:
        x-additionalPropertiesName: locationId
        "$ref": "#/components/schemas/insights-serviceEventsItems"
      example:
        Location1:
        - category: shift
          sub_category: open
          source: POS
          note: This was the note for the beginning of day
          star_rating: 1
          weather_rating: 5
          business_day: '2023-04-17'
          created: '2023-04-17T05:30:00-05:00'
          server_id: '66784'
        - category: shift
          sub_category: close
          source: POS
          note: This was the note for the end of day
          star_rating: 1
          weather_rating: 3
          business_day: '2023-04-18'
          created: '2023-04-18T05:30:00-05:00'
          server_id: '66784'
    insights-serviceEventsItems:
      type: array
      items:
        "$ref": "#/components/schemas/insights-serviceEventsItem"
    insights-serviceEventsItem:
      required:
      - business_day
      - created
      - category
      - sub_category
      - source
      - note
      - server_id
      - star_rating
      - weather_rating
      type: object
      properties:
        business_day:
          "$ref": "#/components/schemas/insights-serviceDate"
          description: The Business Day the Event relates to
        created:
          type: string
          description: The datetime the Event was created
          example: '2022-12-20T05:30:00-05:00'
        category:
          type: string
          description: The category of the Event.  Currently only 'shift'
        sub_category:
          type: string
          description: The sub-category of the Event.  Currently only 'open' or 'close'
        source:
          type: string
          description: Where the Event was created.  Currently only 'POS'
        note:
          type: string
          description: Message relating to the Event
        star_rating:
          "$ref": "#/components/schemas/insights-serviceCount"
          description: The Star rating for Event.  0 means not given.  1 is poorest
            to 5 best
        weather_rating:
          "$ref": "#/components/schemas/insights-serviceCount"
          description: The Weather rating given by the operator.  0 means not given.  1
            Sunny, 2 Sun with cloud, 3 Cloudy, 4 Rainy and 5 Stormy
        server_id:
          "$ref": "#/components/schemas/insights-serviceServerId"
      example:
        category: shift
        sub_category: open
        source: POS
        note: This was the note for the beginning of day
        star_rating: 1
        weather_rating: 5
        business_day: '2023-04-17'
        created: '2023-04-17T05:30:00-05:00'
        server_id: '66784'
    insights-serviceTimeOfDayMultiLocationMap:
      type: object
      description: map of LocationIds to arrays ofTimeOfDayItem
      additionalProperties:
        x-additionalPropertiesName: locationId
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceTimeOfDayItem"
    insights-serviceTimeOfDayList:
      type: array
      description: List of TimeOfDayItems
      items:
        "$ref": "#/components/schemas/insights-serviceTimeOfDayItem"
    insights-serviceTimeOfDayItem:
      required:
      - hour
      - business_weekday
      - num_periods
      - total_net_sales
      - total_gross_sales
      - avg_net_sales
      - avg_gross_sales
      - avg_tax
      - avg_guest_checks
      - guest_checks
      - avg_labor_hours
      - avg_check_amount
      type: object
      properties:
        hour:
          "$ref": "#/components/schemas/insights-serviceHour"
        business_weekday:
          "$ref": "#/components/schemas/insights-serviceDayOfWeek"
        num_periods:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_guest_checks:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_labor_hours:
          "$ref": "#/components/schemas/insights-serviceRoundedHour"
          description: 'float number rounded to the quarter.  Calculated by: ((TotalLaborHours/NumPeriods)
            *100)'
        avg_check_amount:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
    insights-serviceSalesByDayMultiLocationMap:
      type: object
      description: map of LocationIds to arrays of SalesByDayItem
      additionalProperties:
        x-additionalPropertiesName: locationId
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceSalesByDayItem"
    insights-serviceSalesByDayList:
      type: array
      items:
        "$ref": "#/components/schemas/insights-serviceSalesByDayItem"
    insights-serviceSalesByDayItem:
      type: object
      properties:
        day_of_week:
          "$ref": "#/components/schemas/insights-serviceDayOfWeek"
        total_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_transactions:
          "$ref": "#/components/schemas/insights-serviceCount"
        trading_day_count:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_labor_hours:
          "$ref": "#/components/schemas/insights-serviceRoundedHour"
    insights-serviceSalesAveragesByWeekdayList:
      type: object
      description: map of LocationIds to arrays of SalesAveragesByWeekdayItems
      additionalProperties:
        x-additionalPropertiesName: locationId
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceSalesAveragesByWeekdayItem"
    insights-serviceSalesAveragesByWeekdayItem:
      type: object
      properties:
        day_of_week:
          "$ref": "#/components/schemas/insights-serviceDayOfWeek"
        month:
          "$ref": "#/components/schemas/insights-serviceMonth"
        year:
          "$ref": "#/components/schemas/insights-serviceYear"
        hours:
          type: array
          items:
            "$ref": "#/components/schemas/insights-serviceSalesAveragesHourItem"
        avg_total_sold:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_transactions:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_staff_worked_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_repeat_total:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_repeat_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        trading_day_count:
          "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceSalesAveragesHourItem:
      type: object
      properties:
        hour:
          "$ref": "#/components/schemas/insights-serviceHour"
        avg_total_sold:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_transactions:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_staff_worked_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceSalesAveragesByMonthList:
      type: object
      description: map of LocationIds to arrays of SalesAveragesByMonthItems
      additionalProperties:
        x-additionalPropertiesName: locationId
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceSalesAveragesByMonthItem"
    insights-serviceSalesAveragesByMonthItem:
      type: object
      properties:
        month:
          "$ref": "#/components/schemas/insights-serviceMonth"
        year:
          "$ref": "#/components/schemas/insights-serviceYear"
        avg_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_transactions:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_staff_worked_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_repeat_total:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_repeat_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        trading_month_count:
          "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceSalesAveragesByWeekList:
      type: object
      description: map of LocationIds to arrays of SalesAveragesByWeekItems
      additionalProperties:
        x-additionalPropertiesName: locationId
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceSalesAveragesByWeekItem"
    insights-serviceSalesAveragesByWeekItem:
      type: object
      properties:
        month:
          "$ref": "#/components/schemas/insights-serviceMonth"
        year:
          "$ref": "#/components/schemas/insights-serviceYear"
        avg_total_sold:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_transactions:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_staff_worked_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_repeat_total:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_repeat_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        trading_day_count:
          "$ref": "#/components/schemas/insights-serviceCount"
        trading_week_count:
          "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceItemSalesByDayList:
      type: array
      items:
        "$ref": "#/components/schemas/insights-serviceItemSalesByDayItem"
    insights-serviceItemSalesByDayItem:
      type: object
      properties:
        day_of_week:
          "$ref": "#/components/schemas/insights-serviceDayOfWeek"
        total_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_transactions:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_sold:
          "$ref": "#/components/schemas/insights-serviceCount"
        trading_day_count:
          "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceItemsByDayItem:
      type: object
      required:
      - item_id
      - item_name
      - total_sold
      - total_net_sales
      - total_gross_sales
      - total_tax
      - product_group_id
      properties:
        item_id:
          type: string
          default: a1b232
        item_name:
          type: string
          default: The Item
        total_sold:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        product_group_id:
          "$ref": "#/components/schemas/insights-serviceProductGroupId"
    insights-serviceItemHourTotalsList:
      type: array
      items:
        "$ref": "#/components/schemas/insights-serviceItemHourTotalsItem"
    insights-serviceItemHourTotalsItem:
      type: object
      properties:
        hour:
          "$ref": "#/components/schemas/insights-serviceHour"
        total_sold:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        avg_guest_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceItemProductGroupsMap:
      type: object
      description: map of LocationIds to arrays of ProductGroupsTotals
      additionalProperties:
        x-additionalPropertiesName: locationId
        "$ref": "#/components/schemas/insights-serviceProductGroupsTotals"
    insights-serviceProductGroupsTotals:
      required:
      - totals
      - items
      type: object
      properties:
        totals:
          "$ref": "#/components/schemas/insights-serviceItemProductGroupsTotalsArray"
        items:
          "$ref": "#/components/schemas/insights-serviceProductGroupsItemArray"
    insights-serviceItemProductGroupsTotalsArray:
      type: array
      description: Array of Product Group to ItemProductGroupsResponseTotalItem
      items:
        "$ref": "#/components/schemas/insights-serviceItemProductGroupsResponseTotalItem"
    insights-serviceProductGroupsItemArray:
      type: array
      description: List of Grouped Product Groups by the desired Interval
      items:
        "$ref": "#/components/schemas/insights-serviceItemProductGroupsResponseItem"
    insights-serviceItemProductGroupsResponseItem:
      required:
      - business_day_from
      - business_day_to
      - interval_from
      - interval_to
      - interval
      - product_groups
      type: object
      properties:
        business_day_from:
          "$ref": "#/components/schemas/insights-serviceDate"
        business_day_to:
          "$ref": "#/components/schemas/insights-serviceDate"
        interval_from:
          type: string
          description: The starting time of an `hour` interval. Returns `business_day_from`
            at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval_to:
          type: string
          description: The ending time of an `hour` interval. Returns the day _after_
            `business_day_to` at `00:00` for `day`, `week` and `month` intervals
          format: date-time
        interval:
          "$ref": "#/components/schemas/insights-serviceTimeUnit"
        product_groups:
          "$ref": "#/components/schemas/insights-serviceItemProductGroupsTotalsArray"
    insights-serviceItemProductGroupsResponseTotalItem:
      type: object
      required:
      - product_group_id
      - total
      - discounts
      - taxes
      - guest_checks
      properties:
        product_group_id:
          "$ref": "#/components/schemas/insights-serviceProductGroupId"
        product_group_name:
          type: string
          x-go-type-skip-optional-pointer: true
        total:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        discounts:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        taxes:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        guest_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceItemServerTotalsList:
      type: array
      description: ItemServerTotalsItem
      items:
        "$ref": "#/components/schemas/insights-serviceItemServerTotalsItem"
    insights-serviceItemServerTotalsItem:
      type: object
      properties:
        server_id:
          "$ref": "#/components/schemas/insights-serviceServerId"
        first_name:
          "$ref": "#/components/schemas/insights-serviceFirstName"
        last_name:
          "$ref": "#/components/schemas/insights-serviceLastName"
        job_title:
          "$ref": "#/components/schemas/insights-serviceJobTitle"
        item_id:
          type: string
          default: a1b232
        item_name:
          type: string
          default: The Item
        total_sold:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_transactions:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        product_group_id:
          "$ref": "#/components/schemas/insights-serviceProductGroupId"
    insights-serviceServerDetailsList:
      type: array
      description: ItemServerTotalsItem
      items:
        "$ref": "#/components/schemas/insights-serviceServerDetailsItem"
    insights-serviceServerDetailsItem:
      type: object
      properties:
        server_id:
          "$ref": "#/components/schemas/insights-serviceServerId"
        first_name:
          "$ref": "#/components/schemas/insights-serviceFirstName"
        last_name:
          "$ref": "#/components/schemas/insights-serviceLastName"
        job_title:
          "$ref": "#/components/schemas/insights-serviceJobTitle"
        job_id:
          "$ref": "#/components/schemas/insights-serviceJobId"
    insights-serviceServerReductionsItem:
      type: object
      description: Server(s) Reductions. Either the specified Server or a group of
        Servers.
      properties:
        server_ids:
          type: array
          description: List of ServerIds included in this Item
        total_covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        trading_day_count:
          "$ref": "#/components/schemas/insights-serviceCount"
        discounts:
          type: object
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemReduction"
        comps:
          type: object
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemReduction"
        refunds:
          type: object
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemReduction"
        voids:
          type: object
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemReduction"
        losses:
          type: object
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemReduction"
    insights-serviceServerReductionsItemReduction:
      type: object
      properties:
        total_reduction:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        items:
          "$ref": "#/components/schemas/insights-serviceServerReductionsItemDetailsList"
    insights-serviceServerReductionsItemDetailsList:
      type: array
      description: ItemServerTotalsItem
      items:
        "$ref": "#/components/schemas/insights-serviceServerReductionsItemDetails"
    insights-serviceServerReductionsItemDetails:
      type: object
      properties:
        reference:
          type: string
          description: The discount_code or reason for the reduction
        description:
          type: string
        total_reduction:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
    insights-serviceServerStatsList:
      type: object
      additionalProperties:
        x-additionalPropertiesName: server_id
        "$ref": "#/components/schemas/insights-serviceServerStatsItem"
    insights-serviceServerStatsItem:
      type: object
      properties:
        server_id:
          "$ref": "#/components/schemas/insights-serviceServerId"
        first_name:
          "$ref": "#/components/schemas/insights-serviceFirstName"
        last_name:
          "$ref": "#/components/schemas/insights-serviceLastName"
        job_title:
          "$ref": "#/components/schemas/insights-serviceJobTitle"
        total_covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_transactions:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_transactions_with_turn:
          "$ref": "#/components/schemas/insights-serviceCount"
        avg_turn_time_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_tips:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_discounts:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        reporting_shifts:
          type: object
          additionalProperties:
            x-additionalPropertiesName: reporting_shift_name
            "$ref": "#/components/schemas/insights-serviceServerStatsReportingShifts"
    insights-serviceServerStatsReportingShifts:
      type: object
      properties:
        reporting_shift_name:
          type: string
          default: all
        product_group_totals:
          type: object
          additionalProperties:
            x-additionalPropertiesName: product_group_id
            "$ref": "#/components/schemas/insights-serviceServerStatsProductGroup"
    insights-serviceServerStatsProductGroup:
      type: object
      properties:
        product_group_id:
          "$ref": "#/components/schemas/insights-serviceProductGroupId"
        total_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        items:
          type: object
          additionalProperties:
            x-additionalPropertiesName: item_id
            "$ref": "#/components/schemas/insights-serviceServerStatsItemItem"
    insights-serviceServerStatsItemItem:
      type: object
      properties:
        item_id:
          "$ref": "#/components/schemas/insights-serviceItemId"
        item_name:
          "$ref": "#/components/schemas/insights-serviceItemName"
        total_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
    insights-serviceServerCompareSalesItem:
      type: object
      description: Server(s) totaled top level sales.
      properties:
        server_ids:
          type: array
          description: List of ServerIds included in this Item
        trading_day_count:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_net_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_transactions:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_transactions_with_turn:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_turn_time_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_tips:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
    insights-serviceServerCompareTurnDays:
      type: object
      description: Turn time minutes averages
      properties:
        server_avg_turn_time_minutes:
          description: Server's overall turn time minutes average.
          "$ref": "#/components/schemas/insights-serviceCount"
        compare_servers_avg_turn_time_minutes:
          description: Compare Servers' overall turn time minutes average.
          "$ref": "#/components/schemas/insights-serviceCount"
        business_days:
          type: array
          items:
            "$ref": "#/components/schemas/insights-serviceServerTurnItem"
    insights-serviceServerTurnItem:
      type: object
      description: Server's' Turn Time Minutes daily averages.
      properties:
        business_day:
          type: string
          format: date
          description: The Business/Trading Day this Item relates to.
          example: '2022-12-20'
        day_of_week:
          "$ref": "#/components/schemas/insights-serviceDayOfWeek"
        avg_turn_time_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
        compare_servers_avgs:
          type: object
          description: 'Compare Servers'' Turn Time Minutes day''s average: Overall,
            Lowest Server and Highest Server'
          properties:
            overall_avg_turn_time_minutes:
              "$ref": "#/components/schemas/insights-serviceCount"
            min_avg_turn_time_minutes:
              "$ref": "#/components/schemas/insights-serviceCount"
            max_avg_turn_time_minutes:
              "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceLaborSummaryItem:
      type: object
      properties:
        total_employees:
          "$ref": "#/components/schemas/insights-serviceCount"
        total_minutes_worked:
          "$ref": "#/components/schemas/insights-serviceCount"
        trading_day_count:
          "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceMagicQuadrantReportResponseData:
      type: object
      required:
      - products
      properties:
        products:
          "$ref": "#/components/schemas/insights-serviceMagicQuadrantReportResponseProducts"
    insights-serviceMagicQuadrantReportResponseProducts:
      type: array
      items:
        "$ref": "#/components/schemas/insights-serviceMagicQuadrantReportResponseItem"
    insights-serviceMagicQuadrantReportResponseItem:
      type: object
      required:
      - product_id
      - product_name
      - product_group_id
      - total_sold
      - total_guest_visits
      - total_unique_guest
      - total_repeat_guest
      - total_repeat_guest_for_product
      - total_once_guest
      - guest_retention_percentage
      - guest_retention_percentage_for_product
      - first_ordered
      - staff
      properties:
        product_id:
          "$ref": "#/components/schemas/insights-serviceProductId"
        product_name:
          "$ref": "#/components/schemas/insights-serviceProductName"
        product_group_id:
          "$ref": "#/components/schemas/insights-serviceProductGroupId"
        total_sold:
          "$ref": "#/components/schemas/insights-serviceFractionalQuantity"
          description: Total Quantity Sold
        total_guest_visits:
          "$ref": "#/components/schemas/insights-serviceCount"
          description: Total number of Guest Visits.  NOTE a Guest can only have 1
            Visit per day.
        total_unique_guest:
          "$ref": "#/components/schemas/insights-serviceCount"
          description: Count of Unique Guest Aliases. Which is the number of different
            Guests that visited in this period.
        total_repeat_guest:
          "$ref": "#/components/schemas/insights-serviceCount"
          description: Count of Guests that revisited the location and purchased the
            same or different Product(s).
        total_repeat_guest_for_product:
          "$ref": "#/components/schemas/insights-serviceCount"
          description: Count of Guests that revisited the location and purchased the
            same Product.
        total_once_guest:
          "$ref": "#/components/schemas/insights-serviceCount"
          description: Count of Guests that visited the location and did not return.  This
            will include Guests that paid by Cash or by a means we couldn't identify
            them.
        guest_retention_percentage:
          "$ref": "#/components/schemas/insights-servicePercentage"
          description: Percentage of Repeat Guests out of Total Unique Guests
        guest_retention_percentage_for_product:
          "$ref": "#/components/schemas/insights-servicePercentage"
          description: Percentage of Repeat Guests for Product out of Total Unique
            Guests
        first_ordered:
          "$ref": "#/components/schemas/insights-serviceDate"
          description: The date in this period that this was first ordered.
        staff:
          "$ref": "#/components/schemas/insights-serviceMagicQuadrantReportResponseStaffList"
    insights-serviceMagicQuadrantReportResponseStaff:
      type: object
      required:
      - id
      - total_sold
      properties:
        id:
          "$ref": "#/components/schemas/insights-serviceServerId"
        total_sold:
          "$ref": "#/components/schemas/insights-serviceFractionalQuantity"
          description: Total Quantity sold in this period by this Staff Member.
    insights-serviceMagicQuadrantReportResponseStaffList:
      type: array
      items:
        "$ref": "#/components/schemas/insights-serviceMagicQuadrantReportResponseStaff"
    insights-serviceGuestbookProfilesTotals:
      type: object
      properties:
        guest_label:
          type: string
          description: Readable that identifies the Guest
          example: '2022-12-20'
        guest_alias:
          type: string
          description: fa0ae5a0d0e2ee09adae613a1b53413b2bcf8be1916921558125438f73e6e5d3
          example: '2022-12-20'
        first_visit:
          type: string
          format: date
          description: The Business/Trading this Guest first made a purchase at the
            location.
          example: '2022-12-20'
        last_visit_datetime:
          type: string
          format: date-time
          description: The StartTime this Guest last made a purchase at the location.
          example: '2022-12-20T05:30:00-05:00'
        total_gross_sales:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_tips:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        total_guest_visits:
          "$ref": "#/components/schemas/insights-serviceCount"
          description: Total number of times this Guest Visited this location.  NOTE
            a Guest has visited a location if they paid by card and haven't opted
            out of data collection.
        consumer_record_id:
          type: string
          description: Id used by the LS CustomersAPI Service to fetch Customer Details
          example: '35302365'
        first_name:
          type: string
          description: FirstName of the Guest. May not be populated
          example: John
        last_name:
          type: string
          description: lastName of the Guest. May not be populated
          example: Smith
        company_name:
          type: string
          description: lastName of the Guest. May not be populated
          example: Lightspeed
        email_address:
          type: string
          description: Email address of the Guest. May not be populated
          example: john.smith@lightspeed.com
        phone_number:
          type: string
          description: Primary Phone number of the Guest. May not be populated
          example: '02389189920'
        pending_delete:
          type: boolean
          description: Only present if set to True. Meaning this Profile should be
            Purged at the end of the BusinessDay
    insights-serviceGuestProductsItems:
      type: array
      items:
        "$ref": "#/components/schemas/insights-serviceGuestProductsItem"
    insights-serviceGuestProductsItem:
      required:
      - item_id
      - item_name
      - product_group_id
      - quantity
      type: object
      properties:
        item_id:
          type: string
          description: The Id of the Product
          example: '748776008450306'
        item_name:
          type: string
          description: The name of the Product
          example: Pizza
        product_group_id:
          type: string
          description: The ID of the Product's Product Group (Also known as 'Accounting
            Group')
          example: '748776008450090'
        quantity:
          type: string
          description: 'The number sold of this product.  NOTE: This number is multiplied
            by 10000 to ensure whole numbers.'
      example:
        item_id: '748776008450306'
        item_name: Pizza
        interval_from: 2022-12-20T011:00:00-05:00
        product_group_id: '748776008450090'
        quantity: '70000'
    insights-serviceGuestReceiptItem:
      required:
      - receipt_uuid
      - receipt_id
      - prints
      type: object
      properties:
        receipt_uuid:
          type: string
          description: The UUID of the Receipt (Print Transaction)
          example: 959f630f-0d76-4477-a4f8-8eb1b2b08cb9
        receipt_id:
          type: string
          description: The ID of the Receipt.  Merchant would use this ID to find
            a Receipt
          example: R23474.1
        prints:
          type: array
          description: All the pages of a Receipt.  Can be more than one if system
            set to print card payment receipts
      example:
        receipt_uuid: 959f630f-0d76-4477-a4f8-8eb1b2b08cb9
        receipt_id: R23474.1
        prints:
        - "Todd's Business (Cat’s Cantina)\niPad36/66784-Manager\tA33170.46\nReceipt
          R33170.7\t2/13/24, 10:25 AM\n\x1DDF\x1DTDEF\x1DL2\tPizza\t\x1DSH\t\x1DSA
          \ 5.00\n\x1DDS\x1DT@@@SUB-TOTAL\t        5.00\n\x1DL17% Sales Tax (on 5.00)\t
          \       0.35\n\x1DDS\x1DSJTotal\tUS$ 5.35\n\x1DAC\x1DSA\n\x1DAL  Cash\tUS$
          5.35\n\nVAT:1234\n\x1DAC\x1DSBThank you for your patronage!\n\x1DSA02903
          Providence\n\x1DAL\x1DACLightspeed (K) 4.1.57.6471\n\x1DAL\n"
    insights-serviceGuestTransactionsItems:
      type: array
      items:
        "$ref": "#/components/schemas/insights-serviceGuestTransactionsItem"
    insights-serviceGuestTransactionsItem:
      required:
      - sale_transactions_uuid
      - sale_action
      - sale_time
      - gross_sales
      - paid
      - paid_tip
      - business_day
      - owner_id
      - server_ids
      - covers
      type: object
      properties:
        sale_transactions_uuid:
          type: string
          description: The UUID of the Sale Transaction
          example: 7706670c-6ea6-4b5d-a889-8ab39294c04c
        sale_action:
          type: string
          description: The last trading day this time interval includes
          example: PAYMENT
        sale_time:
          type: string
          description: The datetime the Sale was entered in the POS
          format: date-time
          example: '2022-12-20T05:30:00-05:00'
        gross_sale:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        paid:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        paid_tip:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        business_day:
          type: string
          format: date
          description: The trading day this Sale Transaction occurred
          example: '2022-12-20'
        owner_id:
          "$ref": "#/components/schemas/insights-serviceServerId"
        server_ids:
          type: array
          description: List of ServerIds included in this Item
        covers:
          "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceExternalProductDay:
      type: object
      required:
      - location_type
      - business_day
      - location_id
      - products
      properties:
        location_type:
          type: string
          description: The system providing the data
          example: lsu
        business_day:
          type: string
          format: date
          description: The trading day this product data occurred on
          example: '2022-12-20'
        location_id:
          type: string
          description: The id of the location in the system providing the data
          example: cat-s-catina
        products:
          type: array
          items:
            "$ref": "#/components/schemas/insights-serviceExternalProductItem"
    insights-serviceExternalProductItem:
      allOf:
      - type: object
        required:
        - name
        - product_id
        properties:
          name:
            type: string
            description: The name of the product sold
            example: Hot Dog
          product_id:
            type: string
            description: The id associated with the product in the system providing
              the data
          product_group_name:
            type: string
            description: The name associated with the product group
            example: Food
          product_group_id:
            type: string
            description: The id associated with the product group in the system providing
              the data
            example: abcdefg12345
          product_subgroup_name:
            type: string
            description: The name associated with the product subgroup
            example: Sandwiches
          product_subgroup_id:
            type: string
            description: The id associated with the product subgroup in the system
              providing the data
            example: zyxwvut98765
          halves:
            "$ref": "#/components/schemas/insights-serviceExternalProductHalfHoursMap"
      - "$ref": "#/components/schemas/insights-serviceExternalProductAmounts"
    insights-serviceExternalProductAmounts:
      type: object
      properties:
        quantity:
          "$ref": "#/components/schemas/insights-serviceTenThousandths"
        checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        total:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        discount:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        loss:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        surcharge:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        tax:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
    insights-serviceExternalProductHalfHoursMap:
      type: object
      description: map of 2 digit hour plus half hour ("00" or "30") in local timezone
        from 00:00 to 47:30 (the trading day may span two calendar days)
      additionalProperties:
        x-additionalPropertiesName: half hour - 2 digit string 00 though 47 colon
          00 or 30
        "$ref": "#/components/schemas/insights-serviceExternalProductAmounts"
    insights-serviceExternalSaleItem:
      allOf:
      - type: object
        required:
        - location_type
        - business_day
        - location_id
        properties:
          location_type:
            type: string
            description: The system providing the data
            example: lsu
          business_day:
            type: string
            format: date
            description: The trading day this Sale Transaction occurred
            example: '2022-12-20'
          location_id:
            type: string
            description: The id of the location in the system providing the data
            example: cat-s-catina
          halves:
            "$ref": "#/components/schemas/insights-serviceExternalSaleHalfHoursMap"
      - "$ref": "#/components/schemas/insights-serviceExternalSaleAmounts"
    insights-serviceExternalSaleAmounts:
      type: object
      properties:
        covers:
          "$ref": "#/components/schemas/insights-serviceCount"
        checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        sale_count:
          "$ref": "#/components/schemas/insights-serviceCount"
        checks_with_turn:
          "$ref": "#/components/schemas/insights-serviceCount"
        checks_no_cover:
          "$ref": "#/components/schemas/insights-serviceCount"
        total:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        discount:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        surcharge:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        paid:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        tip:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        tip_basis_points_total_net:
          "$ref": "#/components/schemas/insights-serviceBasisPoint"
        tip_basis_points_total_gross:
          "$ref": "#/components/schemas/insights-serviceBasisPoint"
        voids:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        refunds:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        comps:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        partial_discounts:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        losses:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        pre_tax_amount:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        tax_amount:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        card_fee:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        rounding:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        repeat_checks:
          "$ref": "#/components/schemas/insights-serviceCount"
        repeat_total:
          "$ref": "#/components/schemas/insights-serviceCurrencyAmount"
        turn_time_mins:
          "$ref": "#/components/schemas/insights-serviceCount"
        staff_worked_minutes:
          "$ref": "#/components/schemas/insights-serviceCount"
        no_active_staff:
          "$ref": "#/components/schemas/insights-serviceCount"
    insights-serviceExternalSaleHalfHoursMap:
      type: object
      description: map of 2 digit hour plus half hour ("00" or "30") in local timezone
        from 00 to 47 (the trading day may span two calendar days)
      additionalProperties:
        x-additionalPropertiesName: half hour - 2 digit string 00 though 47 colon
          00 or 30
        "$ref": "#/components/schemas/insights-serviceExternalSaleAmounts"
    insights-serviceBenchmarkTrendsTotalsChartList:
      type: array
      description: BenchmarkTrendsTotalsChart
      items:
        "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsTotalsChartData"
    insights-serviceBenchmarkTrendsTotalsChartData:
      required:
      - kpi_name
      - conclusions
      - primary
      - peers
      type: object
      properties:
        kpi_name:
          type: string
          description: The name of this chart
          example: hero
          items:
            "$ref": "#/components/schemas/insights-serviceKpiName"
        conclusions:
          type: array
          description: Conclusions drawn from the data
          items:
            "$ref": "#/components/schemas/insights-serviceConclusions"
        primary:
          type: object
          description: The food percentage sales of food and drink sales for the Primary
            data by day.
          properties:
            intervals:
              "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsResponseTotalItem"
        peers:
          type: object
          description: The food percentage sales of food and drink sales for the market(peers)
            data by day.
          properties:
            intervals:
              "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsResponseTotalItem"
    insights-serviceCategoryBenchmarkPoint:
      type: object
      description: |-
        One data point: this location's rolling 7-day median price for a
        category on a specific business_day, alongside the peer (market)
        5-number summary for the same day.
      required:
      - category
      - business_day
      - primary
      - peer_median
      - peer_q1
      - peer_q3
      - peer_min
      - peer_max
      - peer_count
      properties:
        category:
          type: string
          description: Raw categorization-service category name at the current level
            (lowercase, dashes preserved).
          example: alcoholic
        business_day:
          type: string
          format: date
          description: The business day this rolling 7-day value represents.
          example: '2026-02-01'
        primary:
          type: integer
          description: This location's rolling 7-day median net price, in cents.
          example: 1200
        peer_median:
          type: integer
          description: Market (peer) median, in cents.
          example: 1100
        peer_q1:
          type: integer
          description: Market 25th percentile, in cents.
          example: 800
        peer_q3:
          type: integer
          description: Market 75th percentile, in cents.
          example: 1500
        peer_min:
          type: integer
          description: Market minimum, in cents.
          example: 400
        peer_max:
          type: integer
          description: Market maximum, in cents.
          example: 2200
        peer_count:
          type: integer
          description: Number of peer locations contributing to the 5-number summary.
          example: 47
    insights-serviceBenchmarkTrendsChartList:
      type: array
      description: BenchmarkTrendsChart
      items:
        "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsChartData"
    insights-serviceBenchmarkTrendsChartData:
      required:
      - kpi_name
      - conclusions
      - primary
      - peers
      type: object
      properties:
        kpi_name:
          type: string
          description: The name of this chart
          example: hero
          items:
            "$ref": "#/components/schemas/insights-serviceKpiName"
        conclusions:
          type: array
          description: Conclusions drawn from the data
          items:
            "$ref": "#/components/schemas/insights-serviceConclusions"
        primary:
          type: object
          description: The sales from the Primary data for the given date range.  The
            baseline is the previous 28 days.
          properties:
            intervals:
              "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsResponseTotalItem"
        peers:
          type: object
          description: The sales from the market data (Peers) for the given date range.  The
            baseline is the previous 28 days.
          properties:
            intervals:
              "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsResponsePeersItem"
    insights-serviceBenchmarkTrendsResponseTotalItem:
      type: array
      required:
      - intervals
      items:
        "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsResponseTotalInterval"
    insights-serviceBenchmarkTrendsResponsePeersItem:
      type: array
      required:
      - intervals
      items:
        "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsResponsePeersInterval"
    insights-serviceBenchmarkTrendsResponseTotalInterval:
      type: object
      required:
      - business_day_from
      - business_day_to
      - interval
      - value
      properties:
        business_day_from:
          type: string
          format: date
          description: The first trading day this time interval includes
          example: '2022-12-20'
        business_day_to:
          type: string
          format: date
          description: The last trading day this time interval includes
          example: '2022-12-20'
        location_count:
          type: integer
          minimum: 0
          format: date
          description: The number of locations used to generate this data
        interval:
          "$ref": "#/components/schemas/insights-serviceTimeUnit"
        value:
          "$ref": "#/components/schemas/insights-serviceValueItem"
    insights-serviceBenchmarkTrendsResponsePeersInterval:
      type: object
      required:
      - business_day_from
      - business_day_to
      - interval
      - value
      properties:
        business_day_from:
          type: string
          format: date
          description: The first trading day this time interval includes
          example: '2022-12-20'
        business_day_to:
          type: string
          format: date
          description: The last trading day this time interval includes
          example: '2022-12-20'
        location_count:
          type: integer
          minimum: 0
          format: date
          description: The number of locations used to generate this data
        interval:
          "$ref": "#/components/schemas/insights-serviceTimeUnit"
        value:
          "$ref": "#/components/schemas/insights-serviceQuartilesItem"
    insights-serviceBenchmarkTrendsComparisonChartList:
      type: array
      description: BenchmarkTrendsComparisonChart
      items:
        "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsChartComparisonData"
    insights-serviceBenchmarkTrendsChartComparisonData:
      required:
      - kpi_name
      - conclusions
      - primary
      - peers
      type: object
      properties:
        kpi_name:
          type: string
          description: The name of this chart
          example: hero
          items:
            "$ref": "#/components/schemas/insights-serviceKpiName"
        conclusions:
          type: array
          description: Conclusions drawn from the data
          items:
            "$ref": "#/components/schemas/insights-serviceConclusions"
        primary:
          type: object
          description: The sales from the Primary data for the given date range.  The
            baseline is the previous 28 days.
          properties:
            intervals:
              "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsResponseComparisonItem"
        peers:
          type: object
          description: The sales from the market data (Peers) for the given date range.  The
            baseline is the previous 28 days.
          properties:
            intervals:
              "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsResponseComparisonItem"
    insights-serviceBenchmarkTrendsResponseComparisonItem:
      type: array
      required:
      - intervals
      items:
        "$ref": "#/components/schemas/insights-serviceBenchmarkTrendsResponseComparisonInterval"
    insights-serviceBenchmarkTrendsResponseComparisonInterval:
      type: object
      required:
      - business_day_from
      - business_day_to
      - interval
      - value
      properties:
        business_day_from:
          type: string
          format: date
          description: The first trading day this time interval includes
          example: '2022-12-20'
        business_day_to:
          type: string
          format: date
          description: The last trading day this time interval includes
          example: '2022-12-20'
        location_count:
          type: integer
          minimum: 0
          format: date
          description: The number of locations used to generate this data
        interval:
          "$ref": "#/components/schemas/insights-serviceTimeUnit"
        value:
          "$ref": "#/components/schemas/insights-serviceComparisonItem"
    insights-serviceValueItem:
      type: object
      properties:
        type:
          type: string
          description: The the type of Value this object is
          example: totals
        total:
          "$ref": "#/components/schemas/insights-servicePerBasisPoint"
      required:
      - type
      - total
    insights-serviceComparisonItem:
      type: object
      properties:
        type:
          type: string
          description: The the type of Value this object is
          example: comparison
        current:
          "$ref": "#/components/schemas/insights-servicePerBasisPoint"
        typical:
          "$ref": "#/components/schemas/insights-servicePerBasisPoint"
      required:
      - type
      - current
      - typical
    insights-serviceQuartilesItem:
      type: object
      required:
      - type
      - quartiles
      properties:
        type:
          type: string
          description: The the type of Value this object is
          example: quartiles
        quartiles:
          type: object
          "$ref": "#/components/schemas/insights-serviceQuartiles"
    insights-serviceQuartiles:
      required:
      - minimum
      - q1
      - q2
      - q3
      - maximum
      properties:
        minimum:
          "$ref": "#/components/schemas/insights-servicePerBasisPoint"
        q1:
          "$ref": "#/components/schemas/insights-servicePerBasisPoint"
        q2:
          "$ref": "#/components/schemas/insights-servicePerBasisPoint"
        q3:
          "$ref": "#/components/schemas/insights-servicePerBasisPoint"
        maximum:
          "$ref": "#/components/schemas/insights-servicePerBasisPoint"
    insights-serviceStaffGroup:
      type: object
      required:
      - id
      - name
      properties:
        id:
          "$ref": "#/components/schemas/insights-serviceServerGroupId"
        name:
          type: string
          description: The name of the Staff Group
          example: Bartenders
    insights-serviceStaff:
      type: object
      required:
      - id
      - name
      properties:
        id:
          "$ref": "#/components/schemas/insights-serviceServerId"
        firstName:
          type: string
          description: The first name of the Staff Member
          example: John
        lastName:
          type: string
          description: The last name of the Staff Member
          example: Smith
        fullName:
          type: string
          description: The name of the Staff Member
          example: John Smith
        username:
          type: string
          description: The username of the Staff Member
          example: jsmith
        active:
          type: boolean
          description: Whether the Staff Member is currently active
          example: true
    ireneBadRequest:
      properties:
        status:
          enum:
          - '400'
          type: string
        timestamp:
          type: string
          format: date-time
        message:
          type: string
        apiSubExceptions:
          items:
            properties:
              field:
                type: string
              rejectedValue:
                type: string
              message:
                type: string
            type: object
          type: array
      type: object
    ireneForbidden:
      properties:
        status:
          enum:
          - '403'
          type: string
        timestamp:
          type: string
          format: date-time
        message:
          type: string
        apiSubExceptions:
          items:
            properties:
              field:
                type: string
              rejectedValue:
                type: string
              message:
                type: string
            type: object
          type: array
      type: object
    ireneNotFound:
      properties:
        status:
          enum:
          - '404'
          type: string
        timestamp:
          type: string
          format: date-time
        message:
          type: string
        apiSubExceptions:
          items:
            properties:
              field:
                type: string
              rejectedValue:
                type: string
              message:
                type: string
            type: object
          type: array
      type: object
    ireneBusinessLocation:
      description: The business locations under this business
      properties:
        id:
          description: Business location id
          format: int64
          type: integer
        name:
          description: Business location name
          type: string
      type: object
    ireneCustomerDto:
      description: Basic customer information
      properties:
        email:
          example: jane.johnson@gmail.com
          type: string
        first_name:
          example: Jane
          type: string
        last_name:
          example: Johnson
          type: string
        phone:
          example: "+16175551212"
          type: string
        third_party_reference:
          description: Unique ID for you to tie this customer record back to yours
          example: 847e4c54-52656c-9621-4454021454
          type: string
      required:
      - email
      - first_name
      - third_party_reference
      type: object
    ireneCustomerReservation:
      description: Basic customer information
      properties:
        contactNumberAsE164:
          description: Contact number formatted in E164
          type: string
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        notes:
          description: Customer notes
          type: string
        rating:
          format: float
          type: number
        thirdPartyReference:
          description: Unique ID for you to tie this customer record back to yours
          type: string
        vip:
          type: boolean
      required:
      - email
      - firstName
      - thirdPartyReference
      type: object
    ireneNote:
      description: An Array of notes
      properties:
        note:
          description: A note to add to the reservation
          type: string
      type: object
    ireneWebhookEndpointDto:
      properties:
        endpointId:
          description: The unique endpoint ID for example you can use your company
            name
          type: string
        password:
          description: he password for basic auth
          type: string
        url:
          description: The endpoint URL
          type: string
        username:
          description: The username for basic auth
          type: string
        withBasicAuth:
          description: If basic auth should be used, defaults to false
          type: boolean
      required:
      - endpointId
      - url
      type: object
    items-apiItemId:
      description: The unique identifier for the item.
      type: integer
      format: int64
      example: 141948669132862
    items-apiBusinessLocationId:
      description: The unique identifier for the business location.
      type: integer
      format: int64
      example: 45454565682155
    items-apiSortOrderEnumDto:
      type: string
      default: asc
      enum:
      - asc
      - desc
      description: Sort order
    items-apiLocationAccountingGroupSortFieldsEnumDto:
      type: string
      default: name
      enum:
      - name
      description: sorting field
    items-apiSortFieldsEnumDto:
      type: string
      default: name
      enum:
      - id
      - sku
      - name
      - buttonName
      - links
      - price
      - accountingGroup
      - costPrice
      - statisticGroup
      description: sorting field
    items-apiPageMetadata:
      type: object
      properties:
        total:
          type: integer
          format: int64
          description: The total amount of elements.
          example: 500
        totalPages:
          type: integer
          format: int32
          description: The total number of total pages.
          example: 5
        current:
          type: object
          properties:
            page:
              type: integer
              format: int32
            pageSize:
              type: integer
              format: int32
    items-apiItemLiteListDto:
      type: object
      properties:
        id:
          example: 3012455645
          type: integer
          format: int64
        name:
          example: cola
          maxLength: 255
          type: string
        businessLocationId:
          example: 45454565682155
          description: the id of the businessLocation
          type: integer
          format: int64
        sku:
          example: sku123577
          maxLength: 32
          type: string
        active:
          type: boolean
        itemType:
          "$ref": "#/components/schemas/items-apiItemTypeEnumDto"
        statisticsGroup:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiStatisticGroupItemDto"
        productId:
          type: integer
          format: int64
        isSubItem:
          type: boolean
        sharingType:
          "$ref": "#/components/schemas/items-apiSharingTypeEnumDto"
    items-apiItemListDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiItemLiteListDto"
      - type: object
        properties:
          costPrice:
            type: number
          priceMode:
            "$ref": "#/components/schemas/items-apiPriceModeEnumDto"
          accountingGroup:
            "$ref": "#/components/schemas/items-apiIdNameDto"
          sharingType:
            "$ref": "#/components/schemas/items-apiSharingTypeEnumDto"
          buttonName:
            type: string
          buttonColor:
            type: string
          buttonTheme:
            "$ref": "#/components/schemas/items-apiButtonThemeEnumDto"
          computedCostPrice:
            type: boolean
          price:
            type: number
          linksNumber:
            type: integer
            format: int32
          priceCount:
            type: integer
            format: int32
          status:
            "$ref": "#/components/schemas/items-apiItemStatusEnumDto"
          coursingOptions:
            "$ref": "#/components/schemas/items-apiItemCoursingOptionsDto"
          productionInstructions:
            type: array
            items:
              type: integer
              format: int64
    items-apiItemWriteDto:
      type: object
      properties:
        generalSettings:
          "$ref": "#/components/schemas/items-apiItemGeneralSettingsDto"
        statisticGroups:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiStatisticGroupItemDto"
        posSettings:
          "$ref": "#/components/schemas/items-apiItemPosSettingsDto"
        orderSettings:
          "$ref": "#/components/schemas/items-apiItemOrderSettingsDto"
        inventorySettings:
          "$ref": "#/components/schemas/items-apiItemInventorySettingsDto"
        composition:
          type: array
          items:
            type: integer
            format: int64
    items-apiModifierWriteDto:
      type: object
      properties:
        generalSettings:
          "$ref": "#/components/schemas/items-apiModifierGeneralSettingsDto"
        statisticGroups:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiStatisticGroupItemDto"
        posSettings:
          "$ref": "#/components/schemas/items-apiModifierPosSettingsDto"
        orderSettings:
          "$ref": "#/components/schemas/items-apiModifierOrderSettingsDto"
        inventorySettings:
          "$ref": "#/components/schemas/items-apiItemInventorySettingsDto"
    items-apiIdNameDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
    items-apiAdditionalFilterOptionsEnumDto:
      example: SALES_RESTRICTIONS
      type: string
      enum:
      - SALES_RESTRICTIONS
    items-apiItemStatusEnumDto:
      example: ACTIVE
      type: string
      enum:
      - ACTIVE
      - INACTIVE
      - DISCONNECTED
    items-apiItemStatusFilterEnumDto:
      example: ACTIVE
      type: string
      enum:
      - ACTIVE
      - ARCHIVED
    items-apiSearchInFieldEnumDto:
      example: ITEM_NAME
      type: string
      enum:
      - ITEM_NAME
      - ACCOUNTING_GROUP
      - ITEM_SKU
      - ITEM_PRICE
      - BUTTON_NAME
    items-apiItemLinkingFilterEnumDto:
      example: LINKED
      type: string
      enum:
      - LINKED
      - DISCONNECTED
    items-apiItemStatusChangeEnumDto:
      example: ACTIVE
      type: string
      enum:
      - ACTIVE
      - INACTIVE
    items-apiButtonThemeEnumDto:
      example: FULL
      enum:
      - FULL
      - ACCENT
      type: string
    items-apiMenuSharingTypeEnumDto:
      enum:
      - LOCAL
      - SHARED
      type: string
    items-apiContentDimensionEnumDto:
      example: VOLUME
      enum:
      - DIMENSION_LESS
      - VOLUME
      - MASS
      type: string
    items-apiPriceModeEnumDto:
      example: PERCENT
      enum:
      - AMOUNT
      - PERCENT
      - POSITIVE_OPEN_PRICE
      - NEGATIVE_OPEN_PRICE
      default: AMOUNT
      type: string
    items-apiPriceStructureEnumDto:
      enum:
      - MANUAL_NEGATIVE
      - MANUAL_POSITIVE
      - OPEN_PRICE
      - SINGLE_PRICE
      - MULTI_PRICE
      - PERCENT_PRICE
      type: string
    items-apiLocationSpecificAccountingGroupDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiAccountingGroupV2Dto"
      - type: object
        properties:
          itemCount:
            type: integer
            format: int64
            description: Number of items under the accounting group in the business.
              Null when not requested.
          itemUnderLocationCount:
            type: integer
            format: int64
            description: Number of items under the accounting group in the business
              location. Null when not requested.
          unlinkedItemCount:
            type: integer
            format: int64
            description: Number of items under the accounting group in the business
              location that are not linked to any menu. Null when not requested.
          exemptFromMandatoryBilling:
            type: boolean
    items-apiAccountingGroupV2Dto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        productionCenter:
          type: string
        reference:
          type: string
        businessId:
          type: integer
          format: int64
        taxProfileId:
          type: integer
          format: int64
        secondaryProductionCenter:
          type: string
        available:
          type: boolean
        countForCovers:
          type: boolean
        tags:
          type: string
        statisticGroups:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiStatisticGroupItemDto"
    items-apiSharingTypeEnumDto:
      example: GLOBAL
      enum:
      - GLOBAL
      - LOCAL
      - SHARED
      type: string
    items-apiItemTypeEnumDto:
      example: ITEM
      enum:
      - ITEM
      - SEQUENCE
      - GROUP
      - SUB_ITEM
      - MODIFIER_GROUP
      - MODIFIER
      type: string
    items-apiParentTypeEnumDto:
      enum:
      - SEQUENCE
      - GROUP
      type: string
      description: Type of parent (combo or group) for which the components are needed
    items-apiAggregationTypeEnumDto:
      enum:
      - NONE_OR_ONE_OF
      - ONE_OF
      - MANY_OF
      - ALL
      - MODIFIER_GROUP
      - MODIFIER
      type: string
    items-apiProductionCenterSelectionEnumDto:
      example: SOME
      enum:
      - ALL
      - SOME
      - NONE
      - LEGACY
      type: string
    items-apiStatisticGroupItemDto:
      type: object
      properties:
        category:
          type: string
        value:
          type: string
    items-apiAccountingGroupQsrParametersDto:
      type: object
      properties:
        departmentId:
          type: string
          description: The department ID
    items-apiDictionary:
      type: object
      description: Localized item type for import/export file
      properties:
        type.sub-item:
          type: string
          default: sub-item
        type.item:
          type: string
          default: item
        type.group:
          type: string
          default: group
        type.combo:
          type: string
          default: combo
        type.modifier-group:
          type: string
          default: modifier-group
        type.modifier:
          type: string
          default: modifier
        button-style.accent:
          type: string
          default: accent
        button-style.background:
          type: string
          default: background
    items-apiComboBasicDto:
      type: object
      properties:
        generalSettings:
          "$ref": "#/components/schemas/items-apiItemGeneralSettingsDto"
        statisticGroups:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiStatisticGroupItemDto"
        posSettings:
          "$ref": "#/components/schemas/items-apiComboPosSettingsDto"
        orderSettings:
          "$ref": "#/components/schemas/items-apiCommonOrderSettingsDto"
        inventorySettings:
          "$ref": "#/components/schemas/items-apiItemInventorySettingsDto"
    items-apiChildItemReadDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        sku:
          type: string
        price:
          type: number
          format: double
        priceMode:
          "$ref": "#/components/schemas/items-apiPriceModeEnumDto"
        priceCount:
          type: integer
          format: int32
        itemType:
          "$ref": "#/components/schemas/items-apiItemTypeEnumDto"
        items:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiChildItemReadDto"
        aggregationType:
          "$ref": "#/components/schemas/items-apiAggregationTypeEnumDto"
        minAggregation:
          type: integer
          format: int32
        maxAggregation:
          type: integer
          format: int32
        extraPrice:
          type: integer
          format: int32
          description: Extra price for the child item of a group. This price is in
            cents!
        defaultOption:
          type: boolean
          description: Is the item a default option for the group
    items-apiItemGeneralSettingsDto:
      type: object
      properties:
        name:
          example: cola
          maxLength: 255
          type: string
        sku:
          example: sku123577
          maxLength: 32
          type: string
        accountingGroup:
          "$ref": "#/components/schemas/items-apiIdNameDto"
        priceMode:
          "$ref": "#/components/schemas/items-apiPriceModeEnumDto"
        prices:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiItemPriceEntryDto"
        defaultPrice:
          type: number
          format: double
        associatedScreens:
          type: array
          items:
            type: integer
            format: int64
        containsAlcohol:
          type: boolean
          description: Indicates if item contains alcohol
        alcoholPercentage:
          type: number
          description: Alcohol percentage in the item
      required:
      - name
      - priceMode
      - accountingGroup
    items-apiModifierGeneralSettingsDto:
      type: object
      properties:
        name:
          example: cola
          maxLength: 255
          type: string
        sku:
          example: sku123577
          maxLength: 32
          type: string
        accountingGroup:
          "$ref": "#/components/schemas/items-apiIdNameDto"
        priceMode:
          "$ref": "#/components/schemas/items-apiPriceModeEnumDto"
        prices:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiItemPriceEntryDto"
        defaultPrice:
          type: number
          format: double
        associatedScreens:
          type: array
          items:
            type: integer
            format: int64
        containsAlcohol:
          type: boolean
          description: Indicates if item contains alcohol
        alcoholPercentage:
          type: number
          description: Alcohol percentage in the item
      required:
      - name
      - priceMode
    items-apiGroupBasicDto:
      type: object
      properties:
        generalSettings:
          "$ref": "#/components/schemas/items-apiGroupGeneralSettingsDto"
        posSettings:
          "$ref": "#/components/schemas/items-apiGroupPosSettingsDto"
    items-apiGroupGeneralSettingsDto:
      type: object
      properties:
        name:
          example: cola
          maxLength: 255
          type: string
        sku:
          example: sku123577
          maxLength: 32
          type: string
        groupPrice:
          type: number
        associatedScreens:
          type: array
          items:
            type: integer
            format: int64
        aggregationType:
          "$ref": "#/components/schemas/items-apiAggregationTypeEnumDto"
        minAggregation:
          type: integer
          format: int32
        maxAggregation:
          type: integer
          format: int32
        containsAlcohol:
          type: boolean
          description: Indicates if item contains alcohol
        alcoholPercentage:
          type: number
          description: Alcohol percentage in the item
      required:
      - name
    items-apiGroupPosSettingsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiCommonPosSettingsDto"
      - type: object
        properties:
          button:
            "$ref": "#/components/schemas/items-apiButtonDto"
          autoDetectOnPos:
            type: boolean
            description: Alert servers when combo items have been selected and suggest
              combo option'
          coursingOptions:
            "$ref": "#/components/schemas/items-apiCommonCoursingOptionsDto"
    items-apiModifierGroupBasicDto:
      type: object
      properties:
        generalSettings:
          "$ref": "#/components/schemas/items-apiGroupGeneralSettingsDto"
        posSettings:
          "$ref": "#/components/schemas/items-apiModifierGroupPosSettingsDto"
    items-apiModifierGroupPosSettingsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiCommonPosSettingsDto"
    items-apiItemPriceEntryDto:
      type: object
      properties:
        accountProfileId:
          type: integer
          format: int64
        price:
          type: number
          format: double
    items-apiCommonPosSettingsDto:
      type: object
      properties:
        button:
          "$ref": "#/components/schemas/items-apiButtonDto"
    items-apiItemPosSettingsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiCommonPosSettingsDto"
      - type: object
        properties:
          salesRules:
            "$ref": "#/components/schemas/items-apiItemSalesRulesDto"
          coursingOptions:
            "$ref": "#/components/schemas/items-apiItemCoursingOptionsDto"
          extraOptions:
            "$ref": "#/components/schemas/items-apiItemPosExtraOptionsDto"
          advancedOptions:
            "$ref": "#/components/schemas/items-apiItemPosAdvancedOptionsDto"
    items-apiModifierPosSettingsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiCommonPosSettingsDto"
      - type: object
        properties:
          salesRules:
            "$ref": "#/components/schemas/items-apiModifierSalesRulesDto"
          extraOptions:
            "$ref": "#/components/schemas/items-apiCommonPosExtraOptionsDto"
    items-apiComboPosSettingsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiCommonPosSettingsDto"
      - type: object
        properties:
          comboOptions:
            "$ref": "#/components/schemas/items-apiComboOptionsDto"
          withStockQuantityCounter:
            type: boolean
            description: POS users can set the available quantity by holding down
              the item button. Item can
          coursingOptions:
            "$ref": "#/components/schemas/items-apiCommonCoursingOptionsDto"
          cookingTime:
            "$ref": "#/components/schemas/items-apiCookingTimeDto"
          advancedOptions:
            "$ref": "#/components/schemas/items-apiCommonItemPosAdvancedOptionsDto"
    items-apiComboOptionsDto:
      type: object
      properties:
        autoDetectOnPos:
          type: boolean
          description: Alert servers when combo items have been selected and suggest
            combo option
        mergeLinesOnReceipt:
          type: boolean
          description: Merge combo sub-items into one line item
    items-apiButtonDto:
      type: object
      properties:
        buttonName:
          type: string
        buttonColor:
          type: string
          example: red
        buttonTheme:
          "$ref": "#/components/schemas/items-apiButtonThemeEnumDto"
        dataVersion:
          type: integer
          format: int32
        sharingType:
          "$ref": "#/components/schemas/items-apiMenuSharingTypeEnumDto"
    items-apiItemSalesRulesDto:
      type: object
      properties:
        subItem:
          type: boolean
          description: Defines if an item is a sub item and cannot be sold separately
        withStockQuantityCounter:
          type: boolean
          description: POS users can set the available quantity by holding down the
            item button. Item cannot be sold if the quantity reaches zero.
    items-apiModifierSalesRulesDto:
      type: object
      properties:
        withStockQuantityCounter:
          type: boolean
          description: POS users can set the available quantity by holding down the
            item button. Item cannot be sold if the quantity reaches zero.
    items-apiCommonCoursingOptionsDto:
      type: object
      properties:
        specificCourseItem:
          type: boolean
          description: Indicates if item is part of a specific course
        courseNumber:
          type: integer
          format: int32
          default: -1
          description: Indicates the course number when specificCourseItem is true
    items-apiItemCoursingOptionsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiCommonCoursingOptionsDto"
      - type: object
        properties:
          multipleCoursesItem:
            type: boolean
            description: Flag to indicate if item might cover multiple courses
          coursesCount:
            type: integer
            format: int32
            default: 1
            description: Indicates the course number when multipleCoursesItem is true
    items-apiItemPosExtraOptionsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiCommonPosExtraOptionsDto"
      - type: object
        properties:
          allowItemSplit:
            type: boolean
            description: Allow item to be split and sold in fractional amounts
    items-apiCommonPosExtraOptionsDto:
      type: object
      properties:
        allowItemRename:
          type: boolean
        cookingTime:
          "$ref": "#/components/schemas/items-apiCookingTimeDto"
    items-apiCookingTimeDto:
      type: object
      properties:
        minutes:
          type: integer
          format: int32
        seconds:
          type: integer
          format: int32
    items-apiCommonItemPosAdvancedOptionsDto:
      type: object
      properties:
        allowItemToBeDiscounted:
          type: boolean
          default: true
        allowItemToBeComplimentary:
          type: boolean
          default: true
        orderSubTotalBeforeItem:
          type: boolean
          description: Draft receipts and receipts will show a sub-total before this
            item line.
    items-apiItemPosAdvancedOptionsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiCommonItemPosAdvancedOptionsDto"
      - type: object
        properties:
          includeItemInServiceCharges:
            type: boolean
            default: true
            description: Allow POS users to include price of item in a service charge
          linkToCoverCount:
            type: boolean
            description: Item units will match number of covers at table.
    items-apiModifierCommonOrderSettingsDto:
      type: object
      properties:
        itemNameOnDocket:
          type: string
        printingStations:
          "$ref": "#/components/schemas/items-apiItemPrintingStationSettingsDto"
    items-apiCommonOrderSettingsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiModifierCommonOrderSettingsDto"
      - type: object
        properties:
          productionInstructions:
            "$ref": "#/components/schemas/items-apiItemProductionInstructionsDto"
    items-apiItemOrderSettingsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiCommonOrderSettingsDto"
      - type: object
        properties:
          externalDevicesSettings:
            "$ref": "#/components/schemas/items-apiItemExternalDevicesSettingsDto"
    items-apiModifierOrderSettingsDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiModifierCommonOrderSettingsDto"
      - type: object
        properties:
          externalDevicesSettings:
            "$ref": "#/components/schemas/items-apiItemExternalDevicesSettingsDto"
    items-apiItemProductionInstructionsDto:
      type: object
      properties:
        productionInstructions:
          type: array
          items:
            type: integer
            format: int64
        groupInstructions:
          type: boolean
          description: Order instructions for a single item will be grouped under
            that item, rather than line by line.
    items-apiItemExternalDevicesSettingsDto:
      type: object
      properties:
        updatePricesInRealtime:
          type: boolean
        updateWeightsInRealtime:
          type: boolean
        weightUpdateSettings:
          "$ref": "#/components/schemas/items-apiItemWeightUpdateSettingsDto"
    items-apiItemWeightUpdateSettingsDto:
      type: object
      description: Options for realtime weight update in case when it's enabled
      properties:
        weightPerUnit:
          type: integer
          format: int32
        nbOfDecimalsInBarCode:
          type: integer
          format: int32
          default: 2
        enableTareSubtraction:
          type: boolean
        tareWeightToSubtract:
          type: integer
          format: int32
          description: Tare weight to subtract from the total (in grams) when enableTareSubtraction
            is enabled
    items-apiItemPrintingStationSettingsDto:
      type: object
      properties:
        primaryPrintingStations:
          type: array
          items:
            type: string
        secondaryPrintingStations:
          type: array
          items:
            type: string
        primaryProductionCenters:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiIdNameDto"
        secondaryProductionCenters:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiIdNameDto"
        productionCenterSelection:
          "$ref": "#/components/schemas/items-apiProductionCenterSelectionEnumDto"
        secondaryProductionCenterSelection:
          "$ref": "#/components/schemas/items-apiProductionCenterSelectionEnumDto"
    items-apiItemInventorySettingsDto:
      type: object
      properties:
        costPrice:
          type: number
        computedCostPrice:
          type: boolean
        avgCostPrice:
          type: number
        barCode:
          type: string
        barCodes:
          type: array
          items:
            type: string
        producedItem:
          type: boolean
        stockSettings:
          "$ref": "#/components/schemas/items-apiItemStockSettingsDto"
        ingredients:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiItemCompositionDto"
        parents:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiItemParentCompositionDto"
    items-apiItemStockSettingsDto:
      type: object
      properties:
        quantity:
          "$ref": "#/components/schemas/items-apiQuantityDto"
        recordStockMovement:
          type: boolean
        stockLocation:
          type: integer
          format: int64
    items-apiItemCompositionDto:
      type: object
      properties:
        itemId:
          type: integer
          format: int64
        productId:
          type: integer
          format: int64
        itemName:
          type: string
        compositionInventory:
          "$ref": "#/components/schemas/items-apiCompositionInventoryDto"
    items-apiItemParentCompositionDto:
      type: object
      properties:
        parentId:
          type: integer
          format: int64
        parentName:
          type: string
        parentType:
          "$ref": "#/components/schemas/items-apiItemTypeEnumDto"
        compositionInventory:
          "$ref": "#/components/schemas/items-apiCompositionInventoryDto"
    items-apiCompositionInventoryDto:
      type: object
      properties:
        quantityInComposition:
          "$ref": "#/components/schemas/items-apiQuantityDto"
        originalItemQuantity:
          "$ref": "#/components/schemas/items-apiQuantityDto"
        stockId:
          type: integer
          format: int64
    items-apiQuantityDto:
      type: object
      properties:
        contentDimension:
          "$ref": "#/components/schemas/items-apiContentDimensionEnumDto"
        contentValue:
          type: number
        contentUom:
          example: l
          maxLength: 25
          type: string
    items-apiProductionInstructionDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        type:
          type: string
        category:
          "$ref": "#/components/schemas/items-apiProductionInstructionCategoryEnumDto"
        hideQuantityOne:
          type: boolean
        instructionValues:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiIdNameDto"
    items-apiProductionInstructionCategoryEnumDto:
      type: string
      enum:
      - COMMENT
      - ADD_ON
      - REMOVAL
      - WARNING
    items-apiIdNameLocationIdDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        businessLocationId:
          type: integer
          format: int64
    items-apiProductionInstructionCreateDto:
      type: object
      required:
      - name
      - type
      properties:
        name:
          type: string
        type:
          type: string
        category:
          "$ref": "#/components/schemas/items-apiProductionInstructionCategoryEnumDto"
        hideQuantityOne:
          type: boolean
        instructionValues:
          type: array
          items:
            type: string
        modifierValues:
          type: object
          deprecated: true
          additionalProperties:
            type: string
    items-apiProductLiteDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        sku:
          type: string
        defaultAccountingGroup:
          "$ref": "#/components/schemas/items-apiIdNameDto"
    items-apiColumnMapping:
      properties:
        columnIdx:
          format: int32
          type: integer
        columnName:
          enum:
          - name
          - sku
          - price
          - extraPrice
          - accountingGroup
          - statisticsGroup
          - menuScreen
          - buttonName
          - buttonColor
          - buttonStyle
          - costPrice
          - barCode
          - sharingMode
          - externalQuantityDivider
          - externalQuantityTare
          - contentUom
          - contentValue
          - parentSku
          - minMax
          - type
          - docketName
          - course
          - inventorySource
          - productionInstruction
          type: string
        skipped:
          type: boolean
      type: object
    items-apiImportStatisticsDTO:
      properties:
        accountingGroupCount:
          format: int32
          type: integer
        fileId:
          type: string
        groupCount:
          format: int32
          type: integer
        itemCount:
          format: int32
          type: integer
        newAccountingGroupNames:
          items:
            type: string
          type: array
        sequenceCount:
          format: int32
          type: integer
      type: object
    items-apiMenuDtoV1:
      properties:
        businessLocationId:
          format: int64
          type: integer
        businessLocationName:
          type: string
        configurations:
          items:
            "$ref": "#/components/schemas/items-apiPosConfigurationDto"
          type: array
        id:
          format: int64
          type: integer
        inSync:
          type: boolean
        name:
          type: string
        parent:
          "$ref": "#/components/schemas/items-apiMenuDtoV1"
        syncVersion:
          format: int32
          type: integer
        dataVersion:
          type: integer
          format: int32
        sharingType:
          "$ref": "#/components/schemas/items-apiMenuSharingTypeEnumDto"
      type: object
    items-apiMetadataDTO:
      properties:
        pagination:
          "$ref": "#/components/schemas/items-apiMetadataPaginationDTO"
      type: object
    items-apiMetadataPaginationDTO:
      properties:
        current:
          "$ref": "#/components/schemas/items-apiMetadataPaginationPageDTO"
        total:
          format: int32
          type: integer
      type: object
    items-apiMetadataPaginationPageDTO:
      properties:
        limit:
          format: int32
          type: integer
        offset:
          format: int32
          type: integer
      type: object
    items-apiPriceDTO:
      properties:
        amount:
          type: number
          example: 10.0
          description: The item price.
        name:
          type: string
          example: Tuesday Special
          description: The name for this item price.
      type: object
    items-apiItemDTO:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for the item.
          example: 3012455645
        name:
          type: string
          description: The name of the item.
          example: Burger
        docketName:
          "$ref": "#/components/schemas/items-apiDocketName"
        sku:
          "$ref": "#/components/schemas/items-apiSku"
        active:
          "$ref": "#/components/schemas/items-apiActive"
        barcode:
          type: string
          description: The item barcode.
          example: '00000001'
        barcodes:
          type: array
          items:
            type: string
            example: '10011101100'
          description: A list of barcodes associated with the item.
        accountingGroup:
          "$ref": "#/components/schemas/items-apiAccountingGroupDTO"
        statisticGroups:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiStatisticGroupDTO"
          description: List of statistic groups associated with the item.
        costPrice:
          "$ref": "#/components/schemas/items-apiCostPrice"
        prices:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiPriceDTO"
          description: List of prices associated with the item.
        sharingType:
          type: string
          enum:
          - GLOBAL_NO_BL
          - GLOBAL
          - LOCAL
          - SHARED
          description: How the item is shared.
          example: SHARED
        priceMode:
          type: string
          enum:
          - AMOUNT
          - PERCENT
          - POSITIVE_OPEN_PRICE
          - NEGATIVE_OPEN_PRICE
          default: AMOUNT
          description: The type of price for the item.
          example: POSITIVE_OPEN_PRICE
        inventorySource:
          type: string
          enum:
          - PURCHASED
          - PRODUCED
          description: Source of inventory for the item.
          example: PURCHASED
        disabled:
          type: boolean
          description: Whether or not stock management is disabled for the item.
          example: false
        contentDimension:
          description: How the item is measured for stock management.
          type: string
          enum:
          - DIMENSION_LESS
          - VOLUME
          - MASS
          example: MASS
        contentUom:
          type: string
          description: The unit of measure of the item for stock management.
          example: kg
        contentValue:
          type: number
          example: 1
          description: The measurement value.
        itemType:
          type: string
          enum:
          - ITEM
          - SEQUENCE
          - GROUP
          - SUB_ITEM
          description: Type of the item.
          example: ITEM
    items-apiUpdateItemDTO:
      required:
      - name
      - businessLocationId
      - sku
      - defaultPrice
      - accountingGroupId
      type: object
      properties:
        name:
          "$ref": "#/components/schemas/items-apiName"
        businessLocationId:
          "$ref": "#/components/schemas/items-apiBusinessLocationId"
        docketName:
          "$ref": "#/components/schemas/items-apiDocketName"
        sku:
          "$ref": "#/components/schemas/items-apiSku"
        active:
          "$ref": "#/components/schemas/items-apiActive"
        barcode:
          example: '10011101100'
          maxLength: 64
          type: string
          description: The item barcode.
        barcodes:
          type: array
          description: A list of barcodes associated with the item.
          items:
            type: string
            maxLength: 64
            minLength: 1
            example: '10011101100'
        accountingGroupId:
          example: 462478248241
          description: The unique identifier for the accounting group. Must be an
            existing `accountingGroupId`.
          type: integer
          format: int64
        costPrice:
          "$ref": "#/components/schemas/items-apiCostPrice"
        defaultPrice:
          "$ref": "#/components/schemas/items-apiDefaultPrice"
        priceMode:
          "$ref": "#/components/schemas/items-apiPriceMode"
    items-apiCreateItemDTO:
      required:
      - name
      - accountingGroupId
      - defaultPrice
      - businessLocationId
      type: object
      properties:
        name:
          "$ref": "#/components/schemas/items-apiName"
        businessLocationId:
          "$ref": "#/components/schemas/items-apiBusinessLocationId"
        docketName:
          "$ref": "#/components/schemas/items-apiDocketName"
        sku:
          "$ref": "#/components/schemas/items-apiSku"
        active:
          "$ref": "#/components/schemas/items-apiActive"
        barcode:
          example: '10011101100'
          maxLength: 64
          type: string
          description: The item barcode.
        barcodes:
          type: array
          description: A list of barcodes associated with the item.
          items:
            type: string
            maxLength: 64
            minLength: 1
            example: '10011101100'
        accountingGroupId:
          example: 462478248241
          description: The unique identifier for the accounting group. Must be an
            existing `accountingGroupId`.
          type: integer
          format: int64
        costPrice:
          "$ref": "#/components/schemas/items-apiCostPrice"
        defaultPrice:
          "$ref": "#/components/schemas/items-apiDefaultPrice"
        priceMode:
          "$ref": "#/components/schemas/items-apiPriceMode"
    items-apiSku:
      example: UGG-BB-PUR-06
      maxLength: 32
      minLength: 1
      description: A stock keeping unit.
      type: string
    items-apiOffset:
      example: 10
      default: 0
      description: 'Offset allows you to retrieve a subset of records starting from
        a specified position in the dataset. Offset normally works with [`amount`](#operation-getitems-amount),
        which designates how many records to retrieve, starting from the offset position.

        '
      type: integer
      format: int64
    items-apiAmount:
      description: The number of results to return with each request.
      example: 10
      default: 100
      maximum: 1000
      type: integer
      format: int64
    items-apiName:
      example: Burger
      maxLength: 180
      minLength: 1
      description: The name of the item.
      type: string
    items-apiAccountingGroupId:
      example: 44874545485
      description: The unique identifier for the accounting group.
      type: integer
      format: int64
    items-apiDocketName:
      example: The Burger
      maxLength: 64
      type: string
      description: The name used in the docket for the item.
    items-apiActive:
      type: boolean
      description: Indicates whether or not the item is archived from the menu.
      example: true
    items-apiCostPrice:
      type: number
      description: The cost price of the item.
      example: 5.0
    items-apiDefaultPrice:
      example: 10
      type: number
      description: The default price of the item.
    items-apiPriceMode:
      description: The type of price for the item.
      example: PERCENT
      enum:
      - AMOUNT
      - PERCENT
      - POSITIVE_OPEN_PRICE
      - NEGATIVE_OPEN_PRICE
      default: AMOUNT
      type: string
    items-apiPosConfigurationDto:
      properties:
        devices:
          items:
            "$ref": "#/components/schemas/items-apiPosDeviceDto"
          type: array
        id:
          format: int64
          type: integer
        menuId:
          format: int64
          type: integer
        name:
          type: string
      type: object
    items-apiPosDeviceDto:
      properties:
        active:
          type: boolean
        id:
          format: int64
          type: integer
        name:
          type: string
        status:
          "$ref": "#/components/schemas/items-apiPosDeviceStatusDto"
      type: object
    items-apiPosDeviceStatusDto:
      properties:
        configurationStatus:
          enum:
          - RELOAD_REQUESTED
          - OUT_OF_SYNC
          - UP_TO_DATE
          type: string
        lastSynchronized:
          format: date-time
          type: string
      type: object
    items-apiStatisticGroupDTO:
      properties:
        category:
          type: string
          description: The name of the statistic group category.
          example: default
        value:
          type: string
          description: The statistic group value.
          example: Food
      type: object
    items-apiJsonNullableBoolean:
      properties:
        present:
          type: boolean
      type: object
    items-apiJsonNullableString:
      properties:
        present:
          type: boolean
      type: object
    items-apiJsonNullableBigDecimal:
      properties:
        present:
          type: boolean
      type: object
    items-apiJsonNullableDimensionDto:
      properties:
        present:
          type: boolean
      type: object
    items-apiJsonNullableBarCodesDto:
      properties:
        present:
          type: boolean
      type: array
      items:
        type: string
    items-apiJsonNullableInventorySourceDto:
      properties:
        present:
          type: boolean
      type: object
    items-apiJsonNullablePriceModeDTO:
      properties:
        present:
          type: boolean
      type: object
    items-apiAccountingGroupDTO:
      description: The accounting group associated with the item.
      properties:
        id:
          format: int64
          type: integer
          description: The unique identifier for the accounting group.
          example: 40570261078058
        name:
          type: string
          description: The name of the accounting group.
          example: Alcoholic beverages
      type: object
    items-apiJsonImportItemDto:
      properties:
        name:
          type: string
        sku:
          type: string
        defaultPrice:
          type: string
        accountingGroup:
          type: string
        type:
          type: string
          description: one of ITEM, COMBO, GROUP
      type: object
    items-apiMultipleItemsImportItemDto:
      properties:
        name:
          type: string
        defaultPrice:
          type: string
        accountingGroup:
          type: string
        statisticsGroup:
          type: string
        screen:
          type: string
      type: object
    items-apiScreenContentDtoV2:
      type: object
      required:
      - type
      discriminator:
        propertyName: type
        mapping:
          SubScreen: "#/components/schemas/items-apiSubScreenDtoV2"
          TopLevelScreen: "#/components/schemas/items-apiTopLevelScreenDtoV2"
          ScreenButton: "#/components/schemas/items-apiScreenButtonDtoV2"
      properties:
        type:
          type: string
        id:
          type: integer
          format: int64
        name:
          type: string
        color:
          "$ref": "#/components/schemas/items-apiButtonColorEnum"
        fullColor:
          type: boolean
        dataVersion:
          type: integer
          format: int32
        sharingType:
          "$ref": "#/components/schemas/items-apiMenuSharingTypeEnumDto"
    items-apiScreenSubButtonDtoV2:
      type: object
      properties:
        id:
          type: integer
          format: int64
        text:
          type: string
        color:
          "$ref": "#/components/schemas/items-apiButtonColorEnum"
        type:
          "$ref": "#/components/schemas/items-apiButtonTypeEnumDto"
        childCount:
          type: integer
        targetId:
          type: integer
          format: int64
        fullColor:
          type: boolean
        dataVersion:
          type: integer
        sharingType:
          "$ref": "#/components/schemas/items-apiMenuSharingTypeEnumDto"
    items-apiButtonOrderEnumDto:
      type: string
      enum:
      - ASC
      - DESC
      - CUSTOM
    items-apiButtonTypeEnumDto:
      type: string
      enum:
      - ITEM
      - SCREEN
      - ITEM_GROUP
      - ITEM_SEQUENCE
      - PRODUCTION_INSTRUCTION_GROUP
      - TAG
      - PRODUCTION_INSTRUCTION_VALUE
      - EMPTY
      - DISCOUNT
      - TRANSFER
      - WEB_EXTENSION
      - MODIFIER_GROUP
      - MODIFIER
    items-apiIncompatibleButtonDto:
      type: object
      properties:
        reason:
          type: string
          enum:
          - LOCAL_ENTITY
          - MISSING_ENTITY
          - DUPLICATE_ENTITY_NAME
        button:
          type: object
          properties:
            id:
              type: integer
              format: int64
            text:
              type: string
            type:
              "$ref": "#/components/schemas/items-apiButtonTypeEnumDto"
            targetId:
              type: integer
              format: int64
    items-apiTopLevelScreenWriteDto:
      type: object
      required:
      - name
      - color
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 128
        color:
          "$ref": "#/components/schemas/items-apiButtonColorEnum"
        fullColor:
          type: boolean
    items-apiItemRelationDto:
      type: object
      properties:
        childItemId:
          type: integer
          format: int64
        extraPrice:
          type: integer
          format: int32
          description: Extra price for the child item of a group. This price is in
            cents!
        defaultOption:
          type: boolean
          description: Whether the child item is the default option for the group
    items-apiButtonColorEnum:
      type: string
      enum:
      - WHITE
      - BLUE
      - GRAY
      - YELLOW
      - DARK_RED
      - LIGHT_RED
      - BROWN
      - PINK
      - GREEN
      - ORANGE
      - CYAN
      - BLACK
      - PURPLE
      - DARK_GRAY
    items-apiPriceListDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        businessId:
          type: integer
          format: int64
        syncVersion:
          type: integer
          format: int64
        active:
          type: boolean
    items-apiAccountProfileDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        code:
          type: string
        sticky:
          type: boolean
          default: false
        available:
          type: boolean
          default: true
        deliveryMode:
          "$ref": "#/components/schemas/items-apiDeliveryMode"
        isDefault:
          type: boolean
          default: false
    items-apiDeliveryMode:
      type: string
      enum:
      - NONE
      - COLLECTION
      - REMOTE
      default: NONE
    items-apiBusinessLocationDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
    items-apiCategoryContent:
      type: object
      required:
      - type
      discriminator:
        propertyName: type
        mapping:
          item: "#/components/schemas/items-apiMenuItemDto"
          group: "#/components/schemas/items-apiMenuGroupDto"
          deal: "#/components/schemas/items-apiMenuDealDto"
          itemGroup: "#/components/schemas/items-apiMenuItemGroupDto"
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        type:
          type: string
    items-apiCommonMenuContentProperties:
      type: object
      properties:
        price:
          type: integer
          format: int64
        sku:
          type: string
        customItemNameEnabled:
          type: boolean
        pricingStrategy:
          "$ref": "#/components/schemas/items-apiPricingStrategyEnumDto"
        defaultTaxAmount:
          type: integer
          format: int64
        defaultTaxPercentage:
          type: number
        taxIncludedInPrice:
          type: boolean
        taxes:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiMenuItemTaxDto"
        conditionalTaxRules:
          type: boolean
    items-apiMenuItemTaxDto:
      type: object
      properties:
        description:
          type: string
        amount:
          type: integer
          format: int64
        percentage:
          type: number
    items-apiRichItemProperties:
      type: object
      properties:
        squareImageUrl:
          type: string
        rawImageUrl:
          type: string
        previewImageUrl:
          type: string
        texts:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiRichItemText"
        allergenCodes:
          type: array
          items:
            type: string
        containsAlcohol:
          type: boolean
        alcoholPercentage:
          type: number
    items-apiRichItemText:
      type: object
      properties:
        locale:
          type: string
        friendlyDisplayName:
          type: string
        description:
          type: string
    items-apiMenuItemDto:
      type: object
      description: Single item
      allOf:
      - "$ref": "#/components/schemas/items-apiCategoryContent"
      - "$ref": "#/components/schemas/items-apiCommonMenuContentProperties"
      - "$ref": "#/components/schemas/items-apiRichItemProperties"
      - type: object
        properties:
          asSubItem:
            type: boolean
          productionInstructions:
            type: array
            items:
              "$ref": "#/components/schemas/items-apiMenuProductionInstructionDto"
          extraPrice:
            type: integer
            format: int32
            description: Extra price for the child item of a group. This price is
              in cents!
    items-apiPricingStrategyEnumDto:
      type: string
      enum:
      - CUSTOMIZED_ITEM_PRICE_WILL_BE_NEGATIVE
      - CUSTOMIZED_ITEM_PRICE_WILL_BE_POSITIVE
      - CUSTOMIZED_ITEM_PRICE_WILL_BE_A_PERCENTAGE_OF_TOTAL
      - PRICE_CANNOT_BE_CUSTOMIZED
    items-apiMenuProductionInstructionDto:
      type: object
      properties:
        multiSelectionAllowed:
          type: boolean
        productionInstructionGroupName:
          type: string
        productionInstructionGroupId:
          type: integer
          format: int64
        instructionValues:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiIdNameDto"
    items-apiMenuDealContentDto:
      type: object
      required:
      - type
      discriminator:
        propertyName: type
        mapping:
          item: "#/components/schemas/items-apiMenuExtendedItemDto"
          dealGroup: "#/components/schemas/items-apiMenuDealGroupDto"
      properties:
        id:
          type: integer
          format: int64
        type:
          type: string
    items-apiMenuGroupDtoEntries:
      type: object
      properties:
        data:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiCategoryContent"
        metadata:
          "$ref": "#/components/schemas/items-apiPageMetadata"
    items-apiStatisticGroupBulkActionDto:
      type: object
      properties:
        statisticGroups:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiStatisticGroupItemDto"
      required:
      - statisticGroups
    items-apiStatusBulkActionDto:
      type: object
      description: Bulk action to change the status of items, not supported yet. Added
        to show the structure
      properties:
        status:
          "$ref": "#/components/schemas/items-apiItemStatusChangeEnumDto"
      required:
      - status
    items-apiAccountingGroupBulkActionDto:
      type: object
      description: Bulk action to assign an accounting group for items (only items
        and combos supported
      properties:
        accountingGroup:
          type: integer
          format: int64
          example: 1
      required:
      - accountingGroup
    items-apiCourseBulkActionDto:
      type: object
      description: Bulk action to assign course for items
      properties:
        course:
          type: integer
          minimum: -1
          maximum: 14
          format: int32
          example: 1
      required:
      - course
    items-apiSubItemBulkActionDto:
      type: object
      description: Bulk action to switch items to sub-items and back
      properties:
        subItem:
          type: boolean
      required:
      - subItem
    items-apiProductionInstructionsBulkActionDto:
      type: object
      description: Bulk action to assign production instructions to items
      properties:
        productionInstructions:
          type: array
          items:
            type: integer
            format: int64
      required:
      - productionInstructions
    items-apiAlcoholBulkActionDto:
      type: object
      description: Bulk action to set alcohol fields to items
      properties:
        containsAlcohol:
          type: boolean
        alcoholPercentage:
          type: number
    items-apiProductionCentersBulkActionDto:
      type: object
      description: Bulk action to set production centers to items
      properties:
        selection:
          "$ref": "#/components/schemas/items-apiProductionCenterSelectionEnumDto"
        primary:
          type: boolean
        productionCenterIds:
          type: array
          items:
            type: integer
            format: int64
            minItems: 0
      required:
      - primary
      - selection
      - productionCenterIds
    items-apiFailedItem:
      type: object
      allOf:
      - "$ref": "#/components/schemas/items-apiErrorDto"
      - type: object
        properties:
          id:
            type: integer
            format: int64
    items-apiErrorDto:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        args:
          type: array
          items:
            type: string
    items-apiTableErrorDto:
      type: object
      allOf:
      - type: object
        properties:
          row:
            type: integer
          column:
            type: string
      - "$ref": "#/components/schemas/items-apiErrorDto"
    items-apiImportedAllergenSkuDto:
      type: object
      properties:
        sku:
          type: string
        allergens:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiImportedAllergenDto"
    items-apiImportedAllergenDto:
      type: object
      properties:
        name:
          type: string
        allergenCode:
          type: string
    items-apiImportedDescriptionSkuDto:
      type: object
      properties:
        sku:
          type: string
        descriptions:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiDescriptionDto"
    items-apiDescriptionDto:
      type: object
      properties:
        locale:
          type: string
        description:
          type: string
        descriptionName:
          type: string
    items-apiMenuGraphNodeDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        type:
          "$ref": "#/components/schemas/items-apiMenuGraphNodeType"
        name:
          type: string
        buttonColor:
          type: string
        parentId:
          type: integer
          format: int64
          description: buttonId of a combo or a group
    items-apiMenuGraphNodeType:
      type: string
      enum:
      - MENU
      - BUTTON
      - COMBO
      - GROUP
      - ITEM
      - PRODUCTION_INSTRUCTION
      - PRODUCTION_INSTRUCTION_GROUP
      - TAG
      - DISCOUNT
      - TRANSFER
      - WEB_EXTENSION
    items-apiMenuGraphEdgeDto:
      type: object
      properties:
        sourceId:
          type: integer
          format: int64
        sourceType:
          "$ref": "#/components/schemas/items-apiMenuGraphNodeType"
        targetId:
          type: integer
          format: int64
        targetType:
          "$ref": "#/components/schemas/items-apiMenuGraphNodeType"
    items-apiRichItemLiteDto:
      type: object
      properties:
        allergenCodes:
          type: array
          items:
            type: string
          uniqueItems: true
        descriptions:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiRichItemDescriptionDto"
          uniqueItems: true
        pictureUrl:
          type: string
        previewPictureUrl:
          type: string
        pictureFileName:
          type: string
      required:
      - descriptions
      - allergenCodes
    items-apiRichItemDescriptionDto:
      type: object
      properties:
        description:
          type: string
          maxLength: 4000
        displayName:
          type: string
        localeCode:
          type: string
          maxLength: 7
          minLength: 2
      required:
      - localeCode
      - description
      - displayName
    items-apiAllergenTranslationDto:
      description: Allergen translation
      properties:
        localeCode:
          description: Language locale (eg. 'en' or 'en_US').
          example: en
          nullable: false
          type: string
        text:
          description: Translation in the language of the locale.
          type: string
      required:
      - localeCode
      - text
      type: object
    items-apiScreensHierarchyScreenDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        subScreens:
          type: array
          items:
            "$ref": "#/components/schemas/items-apiScreensHierarchyScreenDto"
    lsk-kms-apiClientDetailsData:
      type: object
      properties:
        active:
          type: boolean
          description: Active status
          example: true
        hostIp:
          type: string
          description: Host IP
          example: 192.168.1.1
      required:
      - active
      - hostIp
    lsk-kms-apiActiveClientResponseDto:
      type: object
      properties:
        EntityIdSK:
          type: string
          description: Entity SK
          example: CLIENT#09b27e3c-4c6a-473c-b6f6-14abe9a58b26
        active:
          type: boolean
          description: Active status
          example: true
        AccessId:
          type: string
          description: Access Id
          example: BUSINESS#111#LOCATION#222#HOST#333#CLIENT#09b27e3c-4c6a-473c-b6f6-14abe9a58b26
        lastActivation:
          type: number
          description: Last activation time
          example: 1694261197
        BusinessId:
          type: string
          description: Business Id
          example: BUSINESS#111
        EntityIdPK:
          type: string
          description: Entity PK
          example: CLIENT#09b27e3c-4c6a-473c-b6f6-14abe9a58b26
      required:
      - EntityIdSK
      - active
      - AccessId
      - lastActivation
      - BusinessId
      - EntityIdPK
    lsk-kms-apiActivationOptions:
      type: object
      properties:
        isTrial:
          type: boolean
          description: Is trial
        trialPastDueDate:
          type: string
          description: Trial past due date
        trialSuspendDate:
          type: string
          description: Trial suspend date
      required:
      - isTrial
      - trialPastDueDate
      - trialSuspendDate
    lsk-kms-apiKdsVersionResponseDto:
      type: object
      properties:
        staticFilesUrl:
          type: string
          example: https://minio.sbx.lsk.lightspeed.app/sbx-lsk-kms-static/lsk-kms/1.0.1-71.zip
          description: The KDS version url.
      required:
      - staticFilesUrl
    lsk-kms-apiProductionCenter:
      type: object
      properties:
        id:
          type: number
          description: ID of the production center
          example: 25769803812
        name:
          type: string
          description: Name of the production center
          example: Cuisine
        virtualType:
          type: string
          description: Type of the virtual center
          example: IKENTOO
      required:
      - id
      - name
      - virtualType
    lsk-kms-apiAccountProfile:
      type: object
      properties:
        id:
          type: number
          description: ID of the account profile
          example: 25769805766
        name:
          type: string
          description: Name of the account profile
          example: Retrait direct
      required:
      - id
      - name
    lsk-kms-apiConfigData:
      type: object
      properties:
        productionCenters:
          description: Array of production centers
          type: array
          items:
            "$ref": "#/components/schemas/lsk-kms-apiProductionCenter"
        accountProfiles:
          description: Array of account profiles
          type: array
          items:
            "$ref": "#/components/schemas/lsk-kms-apiAccountProfile"
        menus:
          type: array
          description: Array of menus
          items: {}
    lsk-kms-apiKmsConfigurationResponseDto:
      type: object
      properties:
        BusinessId:
          type: string
          description: Business ID
          example: BUSINESS#111
        EntityIdPK:
          type: string
          description: Entity ID PK
          example: CONFIG#b4dc99c4-837a-4495-b963-3c41973225de
        EntityIdSK:
          type: string
          description: Entity ID SK
          example: CONFIG#b4dc99c4-837a-4495-b963-3c41973225de
        configData:
          description: Configuration data
          allOf:
          - "$ref": "#/components/schemas/lsk-kms-apiConfigData"
        AccessId:
          type: string
          description: Access ID
          example: BUSINESS#111#LOCATION#555#CONFIG#b4dc99c4-837a-4495-b963-3c41973225de
      required:
      - BusinessId
      - EntityIdPK
      - EntityIdSK
      - configData
      - AccessId
    lsk-kms-apiAccountingGroup:
      type: object
      properties:
        accountingGroupId:
          type: number
          example: 657619622559772
          description: The id of the accounting group.
        name:
          type: string
          example: Alcoholic beverages
          description: The name of the accounting group.
        statisticGroup:
          type: string
          example: ''
          description: The statistic group of the accounting group.
        code:
          type: string
          example: ''
          description: The code of the accounting group.
      required:
      - accountingGroupId
      - name
    lsk-kms-apiDynamicMenuItem:
      type: object
      properties: {}
    lsk-kms-apiMenuItem:
      type: object
      properties:
        id:
          type: number
          example: 674095117107244
          description: The id of the item.
        name:
          type: string
          example: Item note
          description: The name of the item.
        accountingGroup:
          type: object
          example:
            id: 674095117107269
            name: Desserts
          description: The accountingGroup
      required:
      - id
      - name
    lsk-kms-apiItemResponseDTO:
      type: object
      properties:
        accountProfiles:
          description: List of account profiles.
          type: array
          items:
            "$ref": "#/components/schemas/lsk-kms-apiAccountProfile"
        accountingGroups:
          description: List of accounting groups.
          type: array
          items:
            "$ref": "#/components/schemas/lsk-kms-apiAccountingGroup"
        menuItems:
          example:
            menuItems:
              Msgs:
                __ITEMS__:
                - id: 674095117107244
                  name: Item note
                - id: 674095117107248
                  name: Order note
              Ramen:
                __ITEMS__:
                - id: 674095117107302
                  name: Tonkotsu Ramen
                - id: 674095117107323
                  name: Chicken Ramen
          description: Object containing menu items, keyed by menu name.
          allOf:
          - "$ref": "#/components/schemas/lsk-kms-apiDynamicMenuItem"
        allItems:
          description: List of all menu items.
          type: array
          items:
            "$ref": "#/components/schemas/lsk-kms-apiMenuItem"
      required:
      - accountProfiles
      - accountingGroups
      - menuItems
      - allItems
    lsk-reservation-serviceBusinessLocationId:
      description: The unique identifier of the business location.
      example: 9765040300495493
      format: int64
      type: integer
    lsk-reservation-serviceReservationStatus:
      description: External reservation statuses for platforms.
      enum:
      - ON_HOLD
      - SCHEDULED
      - PARTIALLY_ARRIVED
      - ARRIVED
      - PARTIALLY_SEATED
      - SEATED
      - DEPARTED
      - CANCELLED
      - NO_SHOW
      - ERROR
      example: SCHEDULED
      type: string
    lsk-reservation-serviceReservationId:
      description: Unique identifier for the reservation.
      example: C86AD222-6F1C-4A64-A6DD-226ADC589514
      maxLength: 36
      pattern: "[a-zA-Z0-9_-]+"
      type: string
    lsk-reservation-serviceTableOptimization:
      type: string
      description: Table optimization rule.
      enum:
      - MAX_OCCUPANCY
      - MAX_RESERVATIONS
    lsk-reservation-serviceDayOfWeek:
      type: string
      description: Day of the week.
      enum:
      - MONDAY
      - TUESDAY
      - WEDNESDAY
      - THURSDAY
      - FRIDAY
      - SATURDAY
      - SUNDAY
    lsk-reservation-serviceDurationIso8601:
      type: string
      format: duration
      example: PT30M
    lsk-reservation-serviceLocalTimeIso8601:
      type: string
      format: time
      example: '18:00'
    lsk-reservation-serviceZoneIdIso8601:
      type: string
      example: Europe/London
    lsk-reservation-servicePercentage:
      type: integer
      example: 50
      minimum: 0
      maximum: 100
    lsk-reservation-serviceReservationTimeRangeDto:
      type: object
      description: Reservation time range
      required:
      - from
      - to
      properties:
        from:
          description: Start of the interval (local time, HH:mm).
          "$ref": "#/components/schemas/lsk-reservation-serviceLocalTimeIso8601"
        to:
          description: End of the interval (local time, HH:mm).
          "$ref": "#/components/schemas/lsk-reservation-serviceLocalTimeIso8601"
    lsk-reservation-serviceDailyReservationIntervalDto:
      type: object
      description: Day of week reservation interval
      required:
      - timeRanges
      properties:
        timeRanges:
          description: Reservation time ranges for this day
          type: array
          items:
            "$ref": "#/components/schemas/lsk-reservation-serviceReservationTimeRangeDto"
    lsk-reservation-serviceWeeklyReservationIntervalDto:
      type: object
      description: Day of weeks reservation intervals
      required:
      - sunday
      - monday
      - tuesday
      - wednesday
      - thursday
      - friday
      - saturday
      properties:
        sunday:
          "$ref": "#/components/schemas/lsk-reservation-serviceDailyReservationIntervalDto"
        monday:
          "$ref": "#/components/schemas/lsk-reservation-serviceDailyReservationIntervalDto"
        tuesday:
          "$ref": "#/components/schemas/lsk-reservation-serviceDailyReservationIntervalDto"
        wednesday:
          "$ref": "#/components/schemas/lsk-reservation-serviceDailyReservationIntervalDto"
        thursday:
          "$ref": "#/components/schemas/lsk-reservation-serviceDailyReservationIntervalDto"
        friday:
          "$ref": "#/components/schemas/lsk-reservation-serviceDailyReservationIntervalDto"
        saturday:
          "$ref": "#/components/schemas/lsk-reservation-serviceDailyReservationIntervalDto"
    lsk-reservation-serviceSpecialReservationIntervalDto:
      type: object
      description: Date Range based reservation interval
      required:
      - from
      - to
      - timeRanges
      properties:
        name:
          description: Human readable range name
          type: string
        from:
          description: From Date
          type: string
          format: date
        to:
          description: To Date
          type: string
          format: date
        timeRanges:
          description: Reservation time ranges for this day
          type: array
          items:
            "$ref": "#/components/schemas/lsk-reservation-serviceReservationTimeRangeDto"
    lsk-reservation-serviceGuestDto:
      description: Guest information associated with the reservation.
      properties:
        email:
          description: The guest's email address.
          example: john.smith@email.com
          format: email
          type: string
          x-field-extra-annotation: "@jakarta.validation.constraints.Email"
        firstName:
          description: The guest's first name.
          example: John
          type: string
          x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
        lastName:
          description: The guest's last name.
          example: Smith
          type: string
          x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
        phone:
          description: The guest's phone number.
          example: "+13453455555"
          format: phone
          type: string
        foodAndDrinkNotes:
          example: Only milk and cookies!
          type: string
          description: Any details about guest's food and drink preferences.
        language:
          example: en
          type: string
          description: Guest's language; use [two-symbol ISO-639](https://www.loc.gov/standards/iso639-2/php/code_list.php)
            for best results on POS.
        allergens:
          example:
          - almonds
          - egg
          items:
            type: string
          type: array
          uniqueItems: true
          description: Any allergens linked to this guest.
        dietaryRestrictions:
          example:
          - no alcohol
          - vegan
          items:
            type: string
          type: array
          uniqueItems: true
          description: Any dietary restrictions linked to this guest.
        notes:
          example: Prefers window seating.
          type: string
          description: Any additional notes about the guest.
      required:
      - firstName
      - lastName
      type: object
    lsk-reservation-serviceIntegrationStatusDto:
      type: string
      description: The status of the business location.
      enum:
      - INACTIVE
      - WAITING_FOR_ONBOARDING
      - ACTIVE
      - PAUSED
    lsk-reservation-serviceBusinessLocationAddressDto:
      type: object
      properties:
        addressLine1:
          description: First line of the address
          type: string
          example: Main Street
        addressLine2:
          description: Second line of the address
          type: string
          example: '25'
        zipCode:
          description: ZIP/Postal code
          type: string
          example: '12345'
        city:
          description: City name
          type: string
          example: London
        state:
          description: State/Province/Region
          type: string
        country:
          description: Country code
          type: string
          example: GB
        phone:
          description: Phone number
          type: string
          example: "+13453455555"
    lsk-reservation-serviceBackofficeTimeSlotDto:
      type: object
      properties:
        available:
          description: Identifies, if this time slot active or not
          type: boolean
          example: true
        from:
          description: Timeslot start date time in ISO 8601 format.
          type: string
          format: date-time
        to:
          description: Timeslot start end time in ISO 8601 format.
          type: string
          format: date-time
        availableTables:
          description: List of available table ids
          type: array
          items:
            type: string
        totalCoversCount:
          description: Total covers count
          type: integer
        availableCoversCount:
          description: Available covers count
          type: integer
        proposedTables:
          description: List of proposed table ids for automatic table assignment
          type: array
          items:
            type: string
    lsk-reservation-serviceBackofficeReservationImportReportRecordDto:
      type: object
      description: Reservation import report record
      properties:
        success:
          description: Whether the reservation was successfully created
          type: boolean
          example: true
        lineNumber:
          description: The line number in the CSV file
          type: long
          example: 1
        message:
          description: Error message if the reservation failed to create
          type: string
          example: Invalid email address
    lsk-reservation-serviceReservationImportStatusDto:
      type: string
      description: Reservation import status
      enum:
      - SUCCESS
      - FAILURE
    lsk-reservation-serviceBackofficeCreateReservationDto:
      properties:
        guest:
          "$ref": "#/components/schemas/lsk-reservation-serviceGuestDto"
        notes:
          example: More balloons!
          type: string
          description: Venue-entered notes specific to the reservation.
        specialOffer:
          example: Free dessert
          type: string
          description: Any special offer linked to the reservation.
        tags:
          example:
          - romantic meal
          - special occasion
          items:
            type: string
          type: array
          uniqueItems: true
          description: Tags linked to this reservation.
        partySize:
          description: The number of expected guests.
          example: 2
          format: int32
          type: integer
        tableNumbers:
          description: |
            The list of table numbers associated with this reservation.
            If no valid table is provided, POS order is not created.
          example:
          - '1'
          items:
            type: string
          type: array
          uniqueItems: true
        utcScheduledAt:
          description: The scheduled reservation time in ISO 8601 format.
          example: '2024-01-01T20:00:00.000Z'
          format: date-time
          type: string
        guestRequest:
          description: Notes added to the reservation by the guest.
          example: I would need two baby chairs.
          type: string
        expectedDuration:
          description: Expected duration of the meal. ISO 8601 format.
          "$ref": "#/components/schemas/lsk-reservation-serviceDurationIso8601"
      required:
      - utcScheduledAt
      - partySize
      - guest
      type: object
    lsk-reservation-serviceBackofficeUpdateGuestDto:
      description: Guest information associated with the reservation.
      properties:
        email:
          description: The guest's email address.
          example: john.smith@email.com
          format: email
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.Email"
          - type: 'null'
        firstName:
          description: The guest's first name.
          example: John
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
          - type: 'null'
        lastName:
          description: The guest's last name.
          example: Smith
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
          - type: 'null'
        notes:
          example: Prefers window seating.
          description: Guest notes.
          anyOf:
          - type: string
          - type: 'null'
        phone:
          description: The guest's phone number.
          example: "+13453455555"
          format: phone
          anyOf:
          - type: string
          - type: 'null'
        foodAndDrinkNotes:
          example: Only milk and cookies!
          anyOf:
          - type: string
          - type: 'null'
          description: Any details about guest's food and drink preferences.
        language:
          example: en
          anyOf:
          - type: string
          - type: 'null'
          description: Guest's language; use [two-symbol ISO-639](https://www.loc.gov/standards/iso639-2/php/code_list.php)
            for best results on POS.
        allergens:
          description: Any allergens linked to this guest.
          anyOf:
          - type: array
            uniqueItems: true
            example:
            - almonds
            - egg
            items:
              type: string
          - type: 'null'
        dietaryRestrictions:
          description: Any dietary restrictions linked to this guest.
          anyOf:
          - type: array
            uniqueItems: true
            example:
            - no alcohol
            - vegan
            items:
              type: string
          - type: 'null'
    lsk-reservation-serviceConsumerCreateReservationDto:
      properties:
        guest:
          "$ref": "#/components/schemas/lsk-reservation-serviceConsumerGuestDto"
        partySize:
          description: The number of expected guests.
          example: 2
          format: int32
          type: integer
        utcScheduledAt:
          description: The scheduled reservation time in ISO 8601 format.
          example: '2024-01-01T20:00:00.000Z'
          format: date-time
          type: string
        guestRequest:
          description: Notes added to the reservation by the guest.
          example: I would need two baby chairs.
          type: string
      required:
      - utcScheduledAt
      - partySize
      - guest
      type: object
    lsk-reservation-serviceConsumerIntegrationConfigDto:
      description: Integration configuration information
      properties:
        status:
          "$ref": "#/components/schemas/lsk-reservation-serviceIntegrationStatusDto"
        noteToGuest:
          description: Extra note that the restaurant wants to provide to guests
          type: string
          example: Reservations are held for 15 minutes. Please contact us if you're
            running late.
        reservationPhone:
          description: Phone number for table reservation
          type: string
          example: 1234567890
        maxPartySize:
          description: Maximum party size.
          type: integer
          example: 10
    lsk-reservation-serviceConsumerTimeSlotDto:
      type: object
      properties:
        available:
          description: Identifies, if this time slot active or not
          type: boolean
          example: true
        from:
          description: Timeslot start date time in ISO 8601 format.
          type: string
          format: date-time
        to:
          description: Timeslot start end time in ISO 8601 format.
          type: string
          format: date-time
    lsk-reservation-serviceConsumerGuestDto:
      description: Guest information associated with the reservation.
      properties:
        email:
          description: The guest's email address.
          example: john.smith@email.com
          format: email
          type: string
          x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank @jakarta.validation.constraints.Email"
        firstName:
          description: The guest's first name.
          example: John
          type: string
          x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
        lastName:
          description: The guest's last name.
          example: Smith
          type: string
          x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
        phone:
          description: The guest's phone number.
          example: "+13453455555"
          format: phone
          type: string
        language:
          example: en
          type: string
          description: Guest's language
      required:
      - firstName
      - lastName
      - email
      type: object
    lsk-reservation-serviceConsumerUpdateGuestDto:
      description: Guest information associated with the reservation.
      properties:
        email:
          description: The guest's email address.
          example: john.smith@email.com
          format: email
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank @jakarta.validation.constraints.Email"
          - type: 'null'
        firstName:
          description: The guest's first name.
          example: John
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
          - type: 'null'
        lastName:
          description: The guest's last name.
          example: Smith
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
          - type: 'null'
        phone:
          description: The guest's phone number.
          example: "+13453455555"
          format: phone
          anyOf:
          - type: string
          - type: 'null'
        language:
          example: en
          description: Guest's language
          anyOf:
          - type: string
          - type: 'null'
      type: object
    lsk-reservation-serviceWidgetCreateReservationDto:
      properties:
        guest:
          "$ref": "#/components/schemas/lsk-reservation-serviceWidgetGuestDto"
        partySize:
          description: The number of expected guests.
          example: 2
          format: int32
          type: integer
        utcScheduledAt:
          description: The scheduled reservation time in ISO 8601 format.
          example: '2024-01-01T20:00:00.000Z'
          format: date-time
          type: string
        guestRequest:
          description: Notes added to the reservation by the guest.
          example: I would need two baby chairs.
          type: string
      required:
      - utcScheduledAt
      - partySize
      - guest
      type: object
    lsk-reservation-serviceWidgetIntegrationConfigDto:
      description: Integration configuration information
      properties:
        status:
          "$ref": "#/components/schemas/lsk-reservation-serviceIntegrationStatusDto"
        noteToGuest:
          description: Extra note that the restaurant wants to provide to guests
          type: string
          example: Reservations are held for 15 minutes. Please contact us if you're
            running late.
        reservationPhone:
          description: Phone number for table reservation
          type: string
          example: 1234567890
        maxPartySize:
          description: Maximum party size.
          type: integer
          example: 10
    lsk-reservation-serviceWidgetTimeSlotDto:
      type: object
      properties:
        available:
          description: Identifies, if this time slot active or not
          type: boolean
          example: true
        from:
          description: Timeslot start date time in ISO 8601 format.
          type: string
          format: date-time
        to:
          description: Timeslot start end time in ISO 8601 format.
          type: string
          format: date-time
    lsk-reservation-serviceWidgetGuestDto:
      description: Guest information associated with the reservation.
      properties:
        email:
          description: The guest's email address.
          example: john.smith@email.com
          format: email
          type: string
          x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank @jakarta.validation.constraints.Email"
        firstName:
          description: The guest's first name.
          example: John
          type: string
          x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
        lastName:
          description: The guest's last name.
          example: Smith
          type: string
          x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
        phone:
          description: The guest's phone number.
          example: "+13453455555"
          format: phone
          type: string
        language:
          example: en
          type: string
          description: Guest's language
      required:
      - firstName
      - lastName
      - email
      type: object
    lsk-reservation-serviceWidgetUpdateGuestDto:
      description: Guest information associated with the reservation.
      properties:
        email:
          description: The guest's email address.
          example: john.smith@email.com
          format: email
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank @jakarta.validation.constraints.Email"
          - type: 'null'
        firstName:
          description: The guest's first name.
          example: John
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
          - type: 'null'
        lastName:
          description: The guest's last name.
          example: Smith
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
          - type: 'null'
        phone:
          description: The guest's phone number.
          example: "+13453455555"
          format: phone
          anyOf:
          - type: string
          - type: 'null'
        language:
          example: en
          description: Guest's language
          anyOf:
          - type: string
          - type: 'null'
      type: object
    lsk-reservation-servicePosTimeSlotDto:
      type: object
      properties:
        available:
          description: Identifies, if this time slot active or not
          type: boolean
          example: true
        from:
          description: Timeslot start date time in ISO 8601 format.
          type: string
          format: date-time
        to:
          description: Timeslot start end time in ISO 8601 format.
          type: string
          format: date-time
        availableTables:
          description: List of available table ids
          type: array
          items:
            type: string
        totalCoversCount:
          description: Total covers count
          type: integer
        availableCoversCount:
          description: Available covers count
          type: integer
        proposedTables:
          description: List of proposed table ids for automatic table assignment
          type: array
          items:
            type: string
    lsk-reservation-servicePosCreateReservationDto:
      properties:
        guest:
          "$ref": "#/components/schemas/lsk-reservation-serviceGuestDto"
        notes:
          example: More balloons!
          type: string
          description: Venue-entered notes specific to the reservation.
        specialOffer:
          example: Free dessert
          type: string
          description: Any special offer linked to the reservation.
        tags:
          example:
          - romantic meal
          - special occasion
          items:
            type: string
          type: array
          uniqueItems: true
          description: Tags linked to this reservation.
        partySize:
          description: The number of expected guests.
          example: 2
          format: int32
          type: integer
        tableNumbers:
          description: |
            The list of table numbers associated with this reservation.
            If no valid table is provided, POS order is not created.
          example:
          - '1'
          items:
            type: string
          type: array
          uniqueItems: true
        utcScheduledAt:
          description: The scheduled reservation time in ISO 8601 format.
          example: '2024-01-01T20:00:00.000Z'
          format: date-time
          type: string
        guestRequest:
          description: Notes added to the reservation by the guest.
          example: I would need two baby chairs.
          type: string
        expectedDuration:
          description: Expected duration of the meal. ISO 8601 format.
          "$ref": "#/components/schemas/lsk-reservation-serviceDurationIso8601"
      required:
      - utcScheduledAt
      - partySize
      - guest
      type: object
    lsk-reservation-servicePosUpdateGuestDto:
      description: Guest information associated with the reservation.
      properties:
        email:
          description: The guest's email address.
          example: john.smith@email.com
          format: email
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.Email"
          - type: 'null'
        firstName:
          description: The guest's first name.
          example: John
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
          - type: 'null'
        lastName:
          description: The guest's last name.
          example: Smith
          anyOf:
          - type: string
            x-field-extra-annotation: "@jakarta.validation.constraints.NotBlank"
          - type: 'null'
        phone:
          description: The guest's phone number.
          example: "+13453455555"
          format: phone
          anyOf:
          - type: string
          - type: 'null'
        foodAndDrinkNotes:
          example: Only milk and cookies!
          anyOf:
          - type: string
          - type: 'null'
          description: Any details about guest's food and drink preferences.
        language:
          example: en
          anyOf:
          - type: string
          - type: 'null'
          description: Guest's language; use [two-symbol ISO-639](https://www.loc.gov/standards/iso639-2/php/code_list.php)
            for best results on POS.
        allergens:
          description: Any allergens linked to this guest.
          anyOf:
          - type: array
            uniqueItems: true
            example:
            - almonds
            - egg
            items:
              type: string
          - type: 'null'
        dietaryRestrictions:
          description: Any dietary restrictions linked to this guest.
          anyOf:
          - type: array
            uniqueItems: true
            example:
            - no alcohol
            - vegan
            items:
              type: string
          - type: 'null'
        notes:
          example: Prefers window seating.
          type: string
          description: Any additional notes about the guest.
    lsk-reservation-serviceSameDayOnlineBookingsDto:
      type: object
      description: Controls same-day online reservation availability.
      required:
      - enabled
      - offsetDuration
      properties:
        enabled:
          type: boolean
          description: When true (default), same-day online reservations are allowed.
            When false, same-day online reservations are blocked.
          example: true
        offsetDuration:
          description: How far before the first shift the block takes effect. Defaults
            to PT1H (1 hour before shift start).
          "$ref": "#/components/schemas/lsk-reservation-serviceDurationIso8601"
    lsk-reservation-serviceBackofficeArrivalPacingLimitDto:
      type: object
      description: Controls the maximum number of reservation arrivals allowed per
        30-minute window.
      required:
      - enabled
      - maxGuestArrivals
      properties:
        enabled:
          type: boolean
          description: When true, arrival pacing is enforced. When false (default),
            no pacing limit is applied.
          example: true
        maxGuestArrivals:
          type: integer
          description: Maximum number of guest arrivals allowed per 30-minute window.
            Defaults to 20. Set to 0 to block all online reservations.
          minimum: 0
          example: 100
    lsk-reservation-serviceExternalBillingTrialData:
      type: object
      description: Data related to a trial period, only present if the addon is currently
        in a trial or recently ended one.
      properties:
        trialPastDueAt:
          type: string
          format: date-time
          description: The timestamp when the trial period became past due. Corresponds
            to addon.data.pastDueAt. Uses ISO 8601 format.
        trialSuspendAt:
          type: string
          format: date-time
          description: The timestamp when the addon will be suspended if the trial
            is not converted. Corresponds to addon.data.suspendedAt. Uses ISO 8601
            format.
      required:
      - trialPastDueAt
      - trialSuspendAt
    lsk-reservation-serviceRestaurantId:
      description: Unique identifier of the restaurant in the system.
      example: 732398b3-ed71-4c4f-b8f0-d91f69fe422d
      type: string
    lsk-reservation-serviceOrigin:
      type: string
      description: Origin type of the reservation.
      enum:
      - BACKOFFICE
      - ONLINE
      - POS
      - WIDGET
      - GOOGLE_INTEGRATION
    lsk-reservation-serviceBackofficeNotificationsSettingsDto:
      type: object
      description: Notification settings.
      properties:
        onlineReservationSubscription:
          description: Settings for notifications sent when a new reservation is created.
          "$ref": "#/components/schemas/lsk-reservation-serviceBackofficeOnlineReservationSubscriptionDto"
        preShiftReservationSummary:
          description: Settings for pre-shift reservation summary email notifications.
          "$ref": "#/components/schemas/lsk-reservation-serviceBackofficePreShiftReservationSummaryDto"
    lsk-reservation-serviceBackofficePreShiftReservationSummaryDto:
      type: object
      description: Configuration for pre-shift reservation summary emails.
      properties:
        emails:
          description: List of email addresses to send pre-shift reservation summaries
            to.
          type: array
          x-field-extra-annotation: "@jakarta.validation.constraints.Size(max = 10)"
          items:
            format: email
            type: string
            maxLength: 254
        enabled:
          description: Whether pre-shift reservation summary notifications are enabled.
          type: boolean
    lsk-reservation-serviceBackofficeOnlineReservationSubscriptionDto:
      type: object
      description: Configuration for online reservation subscription emails.
      properties:
        emails:
          description: List of email addresses to notify when a new reservation is
            created.
          type: array
          x-field-extra-annotation: "@jakarta.validation.constraints.Size(max = 10)"
          items:
            format: email
            type: string
            maxLength: 254
        enabled:
          description: Whether new reservation notifications are enabled.
          type: boolean
    lsk-reservation-serviceBackofficeLightspeedGoogleIntegrationStatusDto:
      type: string
      description: |-
        Lightspeed-side intent for the Google (Reserve with Google) integration.
        This is the status the Backoffice user sets directly. It is independent of the Google Merchant API state.
        - `DISABLED`: integration turned off (default).
        - `ENABLED`: user requested the integration to be on. The actual Google-side state (PENDING/CONNECTED/FAILED)
          is determined by the Google Merchant API and is reflected in the merged response status.
        - `PAUSED`: integration was previously enabled but is currently paused (still kept in merchant feeds,
          excluded from availability feeds).
      enum:
      - DISABLED
      - ENABLED
      - PAUSED
    lsk-reservation-serviceBackofficeGoogleIntegrationStatusDto:
      type: string
      description: |-
        Merged status of the Google (Reserve with Google) integration. Combines the lightspeed-side intent with
        the live Google Merchant API status. This is a read-only response value computed at request time.
        - `DISABLED`: lightspeed-side is DISABLED.
        - `PAUSED`: lightspeed-side is PAUSED.
        - `PENDING`: lightspeed-side is ENABLED; awaiting Google verification/activation.
        - `CONNECTED`: lightspeed-side is ENABLED and Google merchant mapping is confirmed.
        - `FAILED`: lightspeed-side is ENABLED but Google merchant mapping failed.
      enum:
      - DISABLED
      - PENDING
      - CONNECTED
      - FAILED
      - PAUSED
    lsk-reservation-serviceGoogleSlotTimeDto:
      type: object
      description: A time slot for a service at a merchant. Per Google's BatchAvailabilityLookup
        contract, only service_id and start_sec are required; duration_sec is optional
        and falls back to the restaurant's standardMealDuration when omitted.
      required:
      - service_id
      - start_sec
      properties:
        service_id:
          type: string
          description: The service ID (opaque, echoed back in the response).
        start_sec:
          type: integer
          format: int64
          minimum: 0
          description: Start time of the appointment slot in seconds of UTC time since
            Unix epoch.
        duration_sec:
          type: integer
          format: int64
          minimum: 0
          description: Duration of the appointment slot in seconds. Optional; when
            omitted, the restaurant's standardMealDuration is used.
        availability_tag:
          type: string
          description: Opaque tag from the availability feed (echoed back in the response).
        resource_ids:
          "$ref": "#/components/schemas/lsk-reservation-serviceGoogleResourceIdsDto"
        confirmation_mode:
          allOf:
          - "$ref": "#/components/schemas/lsk-reservation-serviceGoogleConfirmationModeDto"
          description: Confirmation mode for the slot (echoed back in the response).
    lsk-reservation-serviceGoogleSlotTimeAvailabilityDto:
      type: object
      description: Availability result for a single time slot.
      required:
      - slot_time
      - available
      properties:
        slot_time:
          "$ref": "#/components/schemas/lsk-reservation-serviceGoogleSlotTimeDto"
        available:
          type: boolean
          description: Whether the slot is available for booking.
    lsk-reservation-serviceGoogleResourceIdsDto:
      type: object
      description: Resource identifiers for a slot.
      properties:
        staff_id:
          type: string
          description: Staff member ID.
        room_id:
          type: string
          description: Room ID.
        party_size:
          type: integer
          minimum: 1
          description: Party size for the reservation.
    lsk-reservation-serviceGoogleSlotDto:
      type: object
      description: A bookable time slot at a merchant. Used by booking endpoints (CreateBooking,
        UpdateBooking) where the merchant is identified inline rather than as a top-level
        field.
      required:
      - merchant_id
      - service_id
      - start_sec
      - duration_sec
      properties:
        merchant_id:
          type: string
          description: The merchant (restaurant) ID owning the slot.
        service_id:
          type: string
          description: The service ID. Must be the literal string "reservation"; other
            values are rejected with 400.
        start_sec:
          type: integer
          format: int64
          minimum: 0
          description: Start time of the appointment slot in seconds of UTC time since
            Unix epoch.
        duration_sec:
          type: integer
          format: int64
          minimum: 0
          description: Duration of the appointment slot in seconds.
        resources:
          "$ref": "#/components/schemas/lsk-reservation-serviceGoogleResourceIdsDto"
        confirmation_mode:
          allOf:
          - "$ref": "#/components/schemas/lsk-reservation-serviceGoogleConfirmationModeDto"
          description: Confirmation mode for the slot.
    lsk-reservation-serviceGoogleConfirmationModeDto:
      type: string
      description: How a booking is confirmed for a given slot.
      enum:
      - CONFIRMATION_MODE_UNSPECIFIED
      - CONFIRMATION_MODE_SYNCHRONOUS
      - CONFIRMATION_MODE_ASYNCHRONOUS
    lsk-reservation-serviceGoogleUserInformationDto:
      type: object
      description: Personal information about the user making the booking.
      required:
      - user_id
      - given_name
      - family_name
      - telephone
      - email
      properties:
        user_id:
          type: string
          description: Stable identifier for the user across bookings.
        given_name:
          type: string
          minLength: 1
          description: User's given (first) name.
        family_name:
          type: string
          minLength: 1
          description: User's family (last) name.
        telephone:
          type: string
          minLength: 1
          description: User's telephone number in E.164 format.
        email:
          type: string
          description: User's email address.
    lsk-reservation-serviceGoogleBookingStatusDto:
      type: string
      description: Current status of a booking.
      enum:
      - BOOKING_STATUS_UNSPECIFIED
      - CONFIRMED
      - PENDING_MERCHANT_CONFIRMATION
      - CANCELED
      - NO_SHOW
      - NO_SHOW_PENALIZED
      - FAILED
      - DECLINED_BY_MERCHANT
    lsk-reservation-serviceGoogleBookingFailureCauseDto:
      type: string
      description: Reason a booking attempt failed, mirroring Google's BookingFailure.Cause
        enum. Only the dining-relevant subset is produced by this service; payment,
        lease, and credit-card causes are accepted in the schema for completeness
        but are never returned. DEAL_UNAVAILABLE is deprecated by Google in favor
        of OFFER_UNAVAILABLE.
      enum:
      - CAUSE_UNSPECIFIED
      - SLOT_UNAVAILABLE
      - SLOT_ALREADY_BOOKED_BY_USER
      - LEASE_EXPIRED
      - OUTSIDE_CANCELLATION_WINDOW
      - PAYMENT_ERROR_CARD_TYPE_REJECTED
      - PAYMENT_ERROR_CARD_DECLINED
      - PAYMENT_OPTION_NOT_VALID
      - PAYMENT_ERROR
      - USER_CANNOT_USE_PAYMENT_OPTION
      - BOOKING_ALREADY_CANCELLED
      - BOOKING_NOT_CANCELLABLE
      - OVERLAPPING_RESERVATION
      - USER_OVER_BOOKING_LIMIT
      - DEAL_UNAVAILABLE
      - PAYMENT_REQUIRES_3DS1
      - OFFER_UNAVAILABLE
      - UNSUPPORTED_NAME
      - UNSUPPORTED_PHONE_NUMBER
      - BANNED_USER
    lsk-reservation-serviceGoogleBookingFailureDto:
      type: object
      description: Details of a booking failure. Returned alongside HTTP 200 when
        business logic prevents the booking.
      required:
      - cause
      properties:
        cause:
          "$ref": "#/components/schemas/lsk-reservation-serviceGoogleBookingFailureCauseDto"
        description:
          type: string
          description: Optional human-readable explanation of the failure.
    lsk-reservation-serviceGoogleBookingDto:
      type: object
      description: A successfully created or updated booking.
      required:
      - booking_id
      properties:
        booking_id:
          type: string
          description: Opaque booking identifier returned to Google. Encodes the restaurant
            ID and reservation ID so subsequent UpdateBooking calls can resolve the
            reservation without additional indexes.
        slot:
          "$ref": "#/components/schemas/lsk-reservation-serviceGoogleSlotDto"
        user_information:
          "$ref": "#/components/schemas/lsk-reservation-serviceGoogleUserInformationDto"
        status:
          "$ref": "#/components/schemas/lsk-reservation-serviceGoogleBookingStatusDto"
    lsk-reservation-serviceGoogleUpdateBookingDto:
      type: object
      description: The booking to update. The booking_id is always required. For cancellation,
        set status to CANCELED. For modification, provide a slot with the changed
        fields (start_sec + duration_sec for reschedule, or resources.party_size for
        party size change).
      required:
      - booking_id
      properties:
        booking_id:
          type: string
          description: Opaque booking identifier previously returned by CreateBooking.
            Encodes the restaurant ID and reservation ID.
        status:
          "$ref": "#/components/schemas/lsk-reservation-serviceGoogleBookingStatusDto"
        slot:
          "$ref": "#/components/schemas/lsk-reservation-serviceGoogleUpdateSlotDto"
    lsk-reservation-serviceGoogleUpdateSlotDto:
      type: object
      description: Updated slot fields for a booking modification. Google sends either
        start_sec + duration_sec (reschedule) or resources.party_size (party size
        change), not both. Omitted fields remain unchanged.
      properties:
        start_sec:
          type: integer
          format: int64
          description: Start time of the updated appointment slot in seconds of UTC
            time since Unix epoch.
        duration_sec:
          type: integer
          format: int64
          description: Duration of the updated appointment slot in seconds.
        resources:
          "$ref": "#/components/schemas/lsk-reservation-serviceGoogleResourceIdsDto"
    nightswatchClientDetailsDto:
      properties:
        accessTokenValidity:
          format: int32
          type: integer
        additionalInformation:
          additionalProperties:
            type: object
          type: object
        authorities:
          items:
            type: string
          type: array
          uniqueItems: true
        authorizedGrantTypes:
          items:
            enum:
            - authorization_code
            - refresh_token
            - password
            - client_credentials
            - implicit
            type: string
          type: array
          uniqueItems: true
        autoApprove:
          type: boolean
        autoApproveScopes:
          items:
            type: string
          type: array
          uniqueItems: true
        clientId:
          maxLength: 256
          minLength: 2
          type: string
        clientSecret:
          maxLength: 256
          minLength: 2
          type: string
        displayName:
          maxLength: 256
          minLength: 0
          type: string
        refreshTokenValidity:
          format: int32
          type: integer
        scopes:
          items:
            type: string
          type: array
          uniqueItems: true
        webServerRedirectUris:
          items:
            type: string
          type: array
          uniqueItems: true
      required:
      - clientId
      - clientSecret
      type: object
    nightswatchSortObject:
      type: object
    nightswatchAccessTokenDetailsDto:
      properties:
        clientId:
          type: string
        scope:
          items:
            type: string
          type: array
          uniqueItems: true
        username:
          type: string
      type: object
    nightswatch-oauth2ClientTokenIntrospectionBase:
      description: Base fields that are guaranteed in all the token introspection
        responses.
      type: object
      properties:
        active:
          type: boolean
          description: The token is only considered valid if this field is true.
          example: true
        client_id:
          example: example-api-client
          description: unique name to reference the client identity
          maxLength: 256
          minLength: 2
          type: string
        scope:
          example:
          - items
          - financial-api
          description: the list of scopes the token is valid for
          items:
            type: string
          type: array
        exp:
          type: integer
          format: int64
          description: The expiration time of the token in seconds since the Unix
            Epoch.
          example: 1701794198
      required:
      - active
      - client_id
      - scope
    nightswatch-oauth2ClientTokenIntrospectionBaseUser:
      type: object
      properties:
        user_name:
          type: string
          format: email
          description: |
            The username of the user associated with this token.
            It's usually the email address for user/staff.
          example: user@example.com
        lspd.user_id:
          type: integer
          format: int64
          description: The user id (staff id) of the user associated with this token.
          example: 123456
        authorities:
          items:
            type: string
          type: array
          description: The authorities granted to the OAuth client and/or the user.
          example:
          - ROLE_GLOBAL_ADMIN
          - ROLE_BO_BILLING_ADMIN
      required:
      - user_name
      - lspd.user_id
      - authorities
    nightswatch-oauth2ClientTokenIntrospectionBaseDevice:
      type: object
      properties:
        user_name:
          type: string
          description: |
            The username of the user associated with this token.
            For devices, it will look like "#DEVICE_ID#RANDOM_USERNAME".
          example: "#2#1NIXK1P6"
        authorities:
          items:
            type: string
          type: array
          description: |
            The authorities granted to the OAuth client.
            It will have ROLE_DEVICE in the list for devices (usually no other entry in that list).
          example:
          - ROLE_DEVICE
      required:
      - user_name
      - authorities
    nightswatch-oauth2ClientTokenIntrospectionOpaqueDevice:
      title: Opaque Device Token
      description: |
        An opaque token that was issued (and trusted by) Nightswatch for a device.
        This is usually the case for tokens issued to POS devices for the web extension or direct API calls from the
        POS device itself.
      allOf:
      - "$ref": "#/components/schemas/nightswatch-oauth2ClientTokenIntrospectionBase"
      - "$ref": "#/components/schemas/nightswatch-oauth2ClientTokenIntrospectionBaseDevice"
    nightswatch-oauth2ClientTokenIntrospectionOpaqueUser:
      title: Opaque User Token
      description: |
        An opaque token that was issued (and trusted by) Nightswatch to a user (staff).
        This is usually the case for tokens issued to users that allowed a third-party partner or first-party API
        access to their account/business location.
      allOf:
      - "$ref": "#/components/schemas/nightswatch-oauth2ClientTokenIntrospectionBase"
      - "$ref": "#/components/schemas/nightswatch-oauth2ClientTokenIntrospectionBaseUser"
    nightswatch-oauth2ClientTokenIntrospectionJwtUser:
      title: JWT User Token
      description: |
        A JWT token that was issued by AuthLS and trusted by Nightswatch to a user (staff).
        This is usually the case for tokens issued to users that logged in through the backoffice.
      allOf:
      - "$ref": "#/components/schemas/nightswatch-oauth2ClientTokenIntrospectionBase"
      - "$ref": "#/components/schemas/nightswatch-oauth2ClientTokenIntrospectionBaseUser"
      - type: object
        properties:
          sub:
            type: string
            description: |
              The subject of the token. Only available on JWT tokens. Should not be relied upon.
              Instead, use the `user_name` property which is guaranteed to be present and is the email address
              that was extracted from this representation.
            example: prefix|user@example.com
          azp:
            type: string
            description: |
              The authorized party of the token. Only available on JWT tokens. Should not be relied upon.
              It will looks like a big hexadecimal ID.
            example: deadbeef
          iss:
            type: string
            description: |
              The issuer of the token. Only available on JWT tokens. Should not be relied upon.
              It will be the URL of the AuthLS instance that issued the token and will be trusted by Nightswatch
              depending on the environment it's deployed in.
            example: https://accounts.stg.lightspeed.app/
          iat:
            type: integer
            format: int64
            description: |
              The issued at time of the token. Only available on JWT tokens. Should not be relied upon.
              Rather, use the `exp` property which is guaranteed to be present and is the expiration time of the
              token.
            example: 1701794198
        required:
        - sub
        - azp
        - iss
        - iat
    nightswatch-oauth2UserInfoAttributesDevice:
      type: object
      title: Device Attributes
      description: The attributes of the device associated with this token.
      properties:
        remoteAddress:
          type: string
          description: The IP address of the user associated with this token.
          example: 127.0.0.1
        sessionId:
          type: string
          nullable: true
          description: The session id of the user associated with this token. Usually
            null.
          example:
    nightswatch-oauth2UserInfoAttributesUser:
      type: object
      title: User Attributes
      description: The attributes of the user/staff associated with this token.
      properties:
        staff:
          type: object
          description: |-
            The staff attributes of the user associated with this token.
            As pulled from pos-backend.
          properties:
            roles:
              items:
                type: string
              type: array
              description: |-
                The roles of the user associated with this token.
                As pulled from pos-backend, without expanding the role hierarchy.
              example:
              - ROLE_GLOBAL_ADMIN
              - ROLE_BO_BILLING_ADMIN
            emailAddress:
              type: string
              description: The email address of the user associated with this token.
            firstName:
              type: string
              description: The first name of the user associated with this token.
            lastName:
              type: string
              description: The last name of the user associated with this token.
            userId:
              type: integer
              format: int64
              description: The user id (staff id) of the user associated with this
                token.
          required:
          - roles
          - emailAddress
          - firstName
          - lastName
          - userId
        passwordToken:
          type: string
          nullable: true
          description: Usually null. Should not be used.
          deprecated: true
          example:
        enabled:
          type: boolean
          description: Should be true. Should not be used.
          deprecated: true
          example: true
        password:
          type: string
          nullable: true
          description: Usually null. Should not be used.
          deprecated: true
          example:
        username:
          type: string
          description: |
            The username of the user associated with this token.
            It's usually the email address for user/staff.
          example: ''
        accountNonExpired:
          type: boolean
          description: Should be true. Should not be used.
          deprecated: true
        accountNonLocked:
          type: boolean
          description: Should be true. Should not be used.
          deprecated: true
        credentialsNonExpired:
          type: boolean
          description: Should be true. Should not be used.
          deprecated: true
      required:
      - staff
    open-table-integrationAccountExternalReferenceDto:
      properties:
        prefix:
          type: string
        reference:
          type: string
      type: object
    open-table-integrationCheckId:
      properties:
        check_ids:
          items:
            type: string
          type: array
      type: object
    open-table-integrationDeliveryInformationDto:
      properties:
        collectionCode:
          type: string
        deliveredTime:
          format: date-time
          type: string
        deliveryDueTime:
          format: date-time
          type: string
        deliveryInfo:
          type: string
        deliveryMode:
          enum:
          - COLLECTION
          - LOCAL
          - REMOTE
          type: string
        deliveryOrigin:
          type: string
        deliveryState:
          enum:
          - RECEIVED
          - IN_PRODUCTION
          - IN_DELIVERY
          - DELIVERED
          type: string
        deliveryTime:
          format: date-time
          type: string
        deviceName:
          type: string
        enabled:
          type: boolean
        id:
          format: int64
          type: integer
        prepaid:
          type: boolean
        productionDueTime:
          format: date-time
          type: string
      type: object
    open-table-integrationDeviceEventDto:
      properties:
        amount:
          format: double
          type: number
        clientId:
          format: int64
          type: integer
        deviceId:
          format: int64
          type: integer
        deviceName:
          type: string
        eventId:
          format: int32
          type: integer
        eventType:
          type: string
        eventTypeCode:
          type: string
        id:
          format: int64
          type: integer
        originUser:
          type: string
        period:
          format: int32
          type: integer
        text:
          type: string
        timestamp:
          format: date-time
          type: string
        uuid:
          type: string
      type: object
    open-table-integrationDiscountDto:
      properties:
        code:
          type: string
        description:
          type: string
        id:
          format: int64
          type: integer
        lossDiscount:
          type: boolean
        manualDiscount:
          type: boolean
        rate:
          type: number
        taxFree:
          type: boolean
      type: object
    open-table-integrationExtendedAccountSnapshotDto:
      properties:
        accountNumber:
          type: string
        accountObjectId:
          format: int64
          type: integer
        accountProfileCode:
          type: string
        accountProfileId:
          type: string
        accountProfileName:
          type: string
        businessLocationId:
          format: int64
          type: integer
        cancelled:
          type: boolean
        closeDate:
          format: date-time
          type: string
        consumerRecord:
          "$ref": "#/components/schemas/open-table-integrationRtConsumerRecordDto"
        coverCount:
          type: number
        currencyCode:
          type: string
        currentInsertionPhase:
          format: int32
          type: integer
        currentProductionPhase:
          format: int32
          type: integer
        deliveryInformation:
          "$ref": "#/components/schemas/open-table-integrationDeliveryInformationDto"
        deviceId:
          format: int64
          type: integer
        deviceIp:
          type: string
        deviceName:
          type: string
        discounts:
          items:
            "$ref": "#/components/schemas/open-table-integrationDiscountDto"
          type: array
        externalReferences:
          items:
            "$ref": "#/components/schemas/open-table-integrationAccountExternalReferenceDto"
          type: array
        gratuityAmount:
          format: double
          type: number
        id:
          format: int64
          type: integer
        latestExternalReferences:
          items:
            "$ref": "#/components/schemas/open-table-integrationAccountExternalReferenceDto"
          type: array
        name:
          type: string
        offset:
          format: int32
          type: integer
        openDate:
          format: date-time
          type: string
        orderMode:
          type: string
        originAccountId:
          format: int64
          type: integer
        originAccountNumber:
          type: string
        paidAmount:
          type: number
        paymentInProgress:
          type: boolean
        paymentLines:
          items:
            "$ref": "#/components/schemas/open-table-integrationPaymentLineSnapshotDto"
          type: array
        preTaxAmount:
          type: number
        receiptNumber:
          type: string
        serviceCharge:
          type: number
        staffEmail:
          type: string
        staffId:
          format: int64
          type: integer
        staffName:
          type: string
        status:
          type: string
        tableName:
          type: string
        taxAmount:
          type: number
        totalAmount:
          type: number
        totalDiscount:
          type: number
        transactionLines:
          items:
            "$ref": "#/components/schemas/open-table-integrationTransactionLineSnapshotDto"
          type: array
        type:
          type: string
        updateDate:
          format: date-time
          type: string
        uuid:
          type: string
      type: object
    open-table-integrationModifierDto:
      properties:
        name:
          type: string
        quantity:
          format: int64
          type: integer
      type: object
    open-table-integrationPaymentLineSnapshotDto:
      properties:
        accountId:
          format: int64
          type: integer
        active:
          type: boolean
        amount:
          type: number
        currencyCode:
          type: string
        date:
          format: date-time
          type: string
        deviceId:
          format: int64
          type: integer
        deviceIp:
          type: string
        deviceName:
          type: string
        externalReference:
          type: string
        gratuityAmount:
          format: double
          type: number
        id:
          format: int64
          type: integer
        paymentMethod:
          type: string
        paymentMethodDescription:
          type: string
        staffEmail:
          type: string
        staffId:
          format: int64
          type: integer
        staffName:
          type: string
      type: object
    open-table-integrationReferrer:
      properties:
        company:
          type: string
        first_name:
          type: string
        id:
          type: string
        last_name:
          type: string
        phone:
          type: string
      type: object
    open-table-integrationRtConsumerContactDto:
      properties:
        addressLine1:
          type: string
        addressLine2:
          type: string
        city:
          type: string
        companyName:
          type: string
        emailReceipts:
          type: boolean
        firstName:
          type: string
        fullName:
          type: string
        id:
          format: int64
          type: integer
        lastName:
          type: string
        phoneNumber1:
          type: string
        phoneNumber2:
          type: string
        salutation:
          type: string
        taxIdentifier:
          type: string
        zipCode:
          type: string
      type: object
    open-table-integrationRtConsumerDto:
      properties:
        contactInformation:
          "$ref": "#/components/schemas/open-table-integrationRtConsumerContactDto"
        creationDate:
          format: date-time
          type: string
        emailAddress:
          type: string
        firstSeenByBusinessId:
          format: int64
          type: integer
        gratuityAmount:
          format: double
          type: number
        id:
          format: int64
          type: integer
        language:
          type: string
        recordId:
          format: int64
          type: integer
        ticketCount:
          format: double
          type: number
        totalAmount:
          format: double
          type: number
      type: object
    open-table-integrationRtConsumerNotes:
      properties:
        creationDate:
          format: date-time
          type: string
        keyName:
          type: string
        value:
          type: string
      type: object
    open-table-integrationRtConsumerRecordDto:
      properties:
        consumer:
          "$ref": "#/components/schemas/open-table-integrationRtConsumerDto"
        consumerNotes:
          items:
            "$ref": "#/components/schemas/open-table-integrationRtConsumerNotes"
          type: array
        consumerRecordUUID:
          format: uuid
          type: string
        contactInformation:
          "$ref": "#/components/schemas/open-table-integrationRtConsumerContactDto"
        externalReferences:
          items:
            "$ref": "#/components/schemas/open-table-integrationRtExternalConsumerRecordDto"
          type: array
          uniqueItems: true
        id:
          format: int64
          type: integer
      type: object
    open-table-integrationRtExternalConsumerRecordDto:
      properties:
        key:
          type: string
        reference:
          type: string
      type: object
    open-table-integrationRtTax:
      properties:
        code:
          type: string
        description:
          type: string
        rate:
          format: double
          type: number
        taxIncluded:
          type: boolean
      type: object
    open-table-integrationTransactionLineSnapshotDto:
      properties:
        accountId:
          format: int64
          type: integer
        accountingGroupId:
          type: string
        accountingGroupName:
          type: string
        active:
          type: boolean
        activeTax:
          "$ref": "#/components/schemas/open-table-integrationRtTax"
        amount:
          type: number
        currencyCode:
          type: string
        date:
          format: date-time
          type: string
        deviceId:
          format: int64
          type: integer
        deviceIp:
          type: string
        deviceName:
          type: string
        discounts:
          items:
            "$ref": "#/components/schemas/open-table-integrationDiscountDto"
          type: array
        id:
          format: int64
          type: integer
        itemDescription:
          type: string
        itemId:
          format: int64
          type: integer
        itemSku:
          type: string
        modifiers:
          items:
            "$ref": "#/components/schemas/open-table-integrationModifierDto"
          type: array
        nameOverride:
          type: string
        parentLineId:
          format: int64
          type: integer
        quantity:
          type: number
        staffEmail:
          type: string
        staffId:
          format: int64
          type: integer
        staffName:
          type: string
        subLines:
          items:
            "$ref": "#/components/schemas/open-table-integrationTransactionLineSnapshotDto"
          type: array
        tags:
          type: string
        unitAmount:
          type: number
      type: object
    order-integrationStoreStatusEnum:
      type: string
      enum:
      - PAUSED
      - SSU_IN_PROGRESS
      - ACTIVE
      - PENDING
      - ACCESS_RESTRICTED
    order-integrationModifier:
      description: The modifiers of the item for this sale line
      properties:
        name:
          type: string
        quantity:
          format: int32
          type: integer
      type: object
    order-integrationOrderErrorsDto:
      description: Order errors
      properties:
        salesRestrictions:
          "$ref": "#/components/schemas/order-integrationSalesRestrictionsErrorDto"
      type: object
    order-integrationAccountLineItem:
      description: Collection of check items
      properties:
        active:
          deprecated: true
          type: boolean
        amountLessTax:
          description: The total price of the item without tax
          type: number
        amountWithTax:
          description: The total price of the item including tax
          type: number
        discountedAmount:
          description: The amount the item was discounted
          type: number
        id:
          description: The unique ID assigned to the sale line
          format: int64
          type: integer
        itemName:
          description: The name given to the item
          type: string
        itemSku:
          description: The SKU assigned to the item
          type: string
        modifiers:
          description: The modifiers of the item for this sale line
          items:
            "$ref": "#/components/schemas/order-integrationModifier"
          type: array
        parentId:
          format: int64
          type: integer
          writeOnly: true
        quantity:
          description: The quantity of the item for this sale line
          format: double
          type: number
        subLineItems:
          description: Collection of sub-lines
          items:
            "$ref": "#/components/schemas/order-integrationAccountLineItem"
          type: array
        taxIncluded:
          type: boolean
        timeOfTransactionUtc:
          description: Date/Time in UTC of this transaction
          format: date-time
          type: string
        unitAmount:
          description: The unit amount for a single item
          type: number
        uuid:
          description: The unique UUID assigned to the sale line
          type: string
      type: object
    order-integrationAccountPaymentLine:
      description: Collection of check items
      properties:
        accountCancelled:
          type: boolean
          writeOnly: true
        active:
          description: whether this payment line is active or not (i.e. has been cancelled)
          type: boolean
        amountPaid:
          description: Amount paid for this payment line
          type: number
        externalReference:
          description: Payment external reference
          type: string
        gratuityAmount:
          description: Tip payment amount
          type: number
        paymentDate:
          description: Date/Time in UTC of this payment
          format: date-time
          type: string
        paymentMethodCode:
          description: Payment method code for this payment line
          type: string
        paymentMethodDescription:
          description: Payment method for this payment line
          type: string
      type: object
    order-integrationAccountSnapshot:
      description: Related account (if the webhook is configured to provide it)
      properties:
        clientCount:
          description: The number of guests at the table
          format: int32
          type: integer
        closeDate:
          description: Date this account was closed in UTC
          format: date-time
          type: string
        currentAmount:
          description: The current total amount on the check
          type: number
        deviceId:
          format: int64
          type: integer
        id:
          type: string
          writeOnly: true
        identifier:
          type: string
          writeOnly: true
        ikaccountId:
          type: string
        name:
          description: The check name
          type: string
        number:
          format: int32
          type: integer
          writeOnly: true
        openDate:
          description: Date this account was opened in UTC
          format: date-time
          type: string
        paidAmount:
          description: The total of all payments on the check
          type: number
        paymentEntries:
          description: Collection of check items
          items:
            "$ref": "#/components/schemas/order-integrationAccountPaymentLine"
          type: array
        posId:
          format: int64
          type: integer
        salesEntries:
          description: Collection of check items
          items:
            "$ref": "#/components/schemas/order-integrationAccountLineItem"
          type: array
        serviceCharge:
          description: The service charge of the check
          type: number
        staffId:
          description: The unique ID of the staff member assigned to the check
          format: int64
          type: integer
        staffName:
          description: The name of the staff member assigned to the check
          type: string
        tableNumber:
          format: int32
          type: integer
        uuid:
          description: Account uuid
          type: string
      type: object
    order-integrationSalesRestrictionsErrorDto:
      properties:
        skus:
          items:
            type: string
          type: array
          uniqueItems: true
      type: object
    order-integrationOpeningHourDto:
      type: object
      required:
      - dayOfWeek
      - openingTime
      - closingTime
      properties:
        dayOfWeek:
          type: string
          enum:
          - Monday
          - Tuesday
          - Wednesday
          - Thursday
          - Friday
          - Saturday
          - Sunday
        openingTime:
          type: string
          format: time
        closingTime:
          type: string
          format: time
    order-integrationApiErrorField:
      type: object
      required:
      - name
      - error
      properties:
        name:
          type: string
          description: Field name
        error:
          type: string
          description: Field error message
    order-payVenueOnlineOrderingApiConfigurationDto:
      type: object
      properties:
        enabled:
          type: boolean
          nullable: false
          example: true
          description: A flag indicating if a business location has the Online Ordering
            API enabled
        orderProfileId:
          type: integer
          format: int64
          example: 12345
          description: Order Profile id
        staffId:
          type: integer
          format: int64
          example: 98765
          description: Staff id
    order-payVenuePosStatusDto:
      type: object
      properties:
        salesPeriod:
          type: string
          enum:
          - CLOSED
          - OPENED
          example: OPENED
          description: Sales period status of the location.
          nullable: false
        acceptingOnlineOrders:
          type: boolean
          example: true
          description: A flag indicating if a POS in the location has the option `Online
            Orders enabled` in `Control center`
          nullable: false
        availableDevices:
          type: boolean
          example: true
          description: A flag indicating if the location has devices running for accepting
            and processing online orders
          nullable: false
    order-payBackofficeOrderDto:
      type: object
      properties:
        receivedTime:
          description: Date and time in UTC when the order was received.
          example: '2025-05-06T16:26:29Z'
          format: date-time
          type: string
          nullable: false
        orderProfileId:
          description: Order profile (tag) ID of the order that could be used to identify
            the creator.
          example: 218931662950646
          type: integer
          format: int64
        thirdPartyReference:
          description: External ID of the order.
          example: TASK:OO-218931662946306-5776dc3b-a6ec-7db8-3b5d-4bd4d2d2dc88
          type: string
          nullable: false
        status:
          description: Current state of the order.
          nullable: false
          enum:
          - PENDING
          - ORDER_CREATED
          - READY_FOR_PICKUP
          - IN_DELIVERY
          - DELIVERED
          - UNSUCCESSFUL
          - CANCELLED
          - ORDER_UPDATED
          - ORDER_PAID
        deliveryMode:
          description: Order type
          enum:
          - LOCAL
          - COLLECTION
          - REMOTE
          nullable: false
        onlinePaymentAmount:
          description: Third party payment received with the order in cents (e.g.
            150 = €1.50) excluding tips.
          type: integer
          format: int32
          example: 150
        onlinePaymentCorrectedDifference:
          description: Corrected difference of online payment comparing to order's
            total due in cents (e.g. 1 for €0.01). Positive if payment was higher
            than order's amount due.
          example: 1
          type: integer
          format: int32
        onlinePaymentTipAmount:
          description: Tip in a third party payment in cents (e.g. 1000 for €10.00).
          example: 1000
          type: integer
          format: int32
        consumerRecordId:
          description: Consumer Record ID of the order
          type: integer
          format: int64
          example: 44955
        receiptId:
          description: ID of a receipt for the order
          example: R944366.54931
          type: string
        accountFiscalId:
          description: Fiscal ID of the created account
          example: A944366.42797
          type: string
        errorMessage:
          description: Error description if any
          example: the payment amount is greater than the amount due
          type: string
        errorMetadata:
          description: Error metadata if any
          type: string
        taskUuid:
          description: UUID of pos-task of the order
          example: bae98cd2-e4aa-4547-9a07-3cc4e2b50c09
          type: string
    orli-authenticationSessionDto:
      required:
      - sessionId
      - merchantId
      - merchantCode
      - shared
      - createdDate
      type: object
      properties:
        merchantId:
          type: string
        sessionId:
          type: string
        shared:
          type: boolean
          default: false
        merchantCode:
          type: string
        posCode:
          type: string
        deliveryTimeMinutes:
          type: integer
          format: int32
        deliveryZoneId:
          type: string
        minimumCartValueCents:
          type: integer
          format: int64
        deliveryFeeCents:
          type: integer
          format: int64
        deliveryAddress:
          type: string
        createdDate:
          type: string
          format: date-time
    orli-authenticationRedirectToken:
      type: object
      properties:
        token:
          type: string
        tokenName:
          type: string
    orli-configurationFeatureName:
      type: string
      enum:
      - ON_PREMISE
      - OFF_PREMISE
      - FULL_LEGACY
      x-enum-varnames:
      - ON_PREMISE
      - OFF_PREMISE
      - FULL_LEGACY
    orli-configurationFeatureStatus:
      type: string
      enum:
      - 'ON'
      - 'OFF'
      - PAST_DUE
      - SUSPENDED
      x-enum-varnames:
      - 'ON'
      - 'OFF'
      - PAST_DUE
      - SUSPENDED
    orli-configurationAddOnKey:
      type: string
      enum:
      - orderanywhere.full
      - orderanywhere.table
      - orderanywhere.offpremise
      x-enum-varnames:
      - ORDER_ANYWHERE_FULL
      - ORDER_ANYWHERE_TABLE
      - ORDER_ANYWHERE_OFF_PREMISE
    orli-configurationAddOnStatus:
      type: string
      enum:
      - 'On'
      - 'Off'
      - PastDue
      - Suspended
      x-enum-varnames:
      - 'ON'
      - 'OFF'
      - PAST_DUE
      - SUSPENDED
    orli-configurationAddOnDto:
      type: object
      required:
      - key
      - status
      properties:
        key:
          "$ref": "#/components/schemas/orli-configurationAddOnKey"
        status:
          "$ref": "#/components/schemas/orli-configurationAddOnStatus"
        trialData:
          "$ref": "#/components/schemas/orli-configurationAddOnTrialDataDto"
    orli-configurationGoogleAddressDto:
      type: object
      properties:
        addressLine1:
          type: string
        addressLine2:
          type: string
        city:
          type: string
        state:
          type: string
        zipCode:
          type: string
        country:
          type: string
    orli-configurationSortDirection:
      enum:
      - ASC
      - DESC
      default: ASC
      type: string
    orli-configurationDeliveryItem:
      type: object
      properties:
        name:
          type: string
        quantity:
          type: integer
          format: int32
        size:
          type: string
    orli-configurationPosProviderDto:
      enum:
      - K_SERIES
      - L_SERIES
      - O_SERIES
      - G_SERIES
      type: string
    orli-configurationCheckMerchantStatus:
      type: string
      enum:
      - SUCCESS
      - NOT_FOUND
      - DISABLED
    orli-configurationActivationOptionsDto:
      type: object
      properties:
        isTrial:
          type: boolean
        trialSuspendDate:
          format: date-time
          type: string
        trialPastDueDate:
          format: date-time
          type: string
    orli-configurationCommonMerchantDetailsDto:
      type: object
      required:
      - name
      - country
      - currency
      - timezone
      properties:
        dtoType:
          type: string
        merchantId:
          type: string
        name:
          type: string
        firstName:
          type: string
          maxLength: 255
        lastName:
          type: string
          maxLength: 255
        address1:
          maxLength: 255
          type: string
        address2:
          maxLength: 255
          type: string
        city:
          type: string
          maxLength: 127
        zip:
          type: string
          maxLength: 64
        state:
          type: string
          maxLength: 11
        country:
          type: string
          maxLength: 2
        defaultLanguage:
          maxLength: 3
          type: string
        currency:
          maxLength: 4
          minLength: 3
          type: string
        timezone:
          type: string
        phone:
          maxLength: 15
          type: string
        email:
          type: string
          format: email
        heroImageUrl:
          type: string
        tinyHeroImage:
          format: byte
          type: string
        logoDarkImageUrl:
          type: string
        logoLightImageUrl:
          type: string
        demoAccount:
          type: boolean
          default: false
        merchantContactMethodsList:
          additionalProperties:
            "$ref": "#/components/schemas/orli-configurationMerchantContactDto"
          type: object
        heroImageOffPremises:
          type: boolean
          default: true
        heroImageOnPremises:
          type: boolean
          default: false
        heroImageMenuBrowsing:
          type: boolean
          default: false
        openingHours:
          "$ref": "#/components/schemas/orli-configurationOperatingHoursDto"
        businessType:
          "$ref": "#/components/schemas/orli-configurationMerchantBusinessType"
    orli-configurationMerchantStatusEnum:
      enum:
      - EMPTY
      - TRIAL
      - PRODUCTION
      type: string
    orli-configurationTipType:
      enum:
      - TEN
      - TWELVE_POINT_FIVE
      - FIFTEEN
      - TWENTY
      - TWENTY_FIVE
      - CUSTOM
      type: string
    orli-configurationTipDto:
      properties:
        id:
          "$ref": "#/components/schemas/orli-configurationTipType"
        value:
          format: double
          type: number
        description:
          type: string
      type: object
    orli-configurationMerchantBusinessType:
      default: RESTAURANT
      enum:
      - RESTAURANT
      - CAFE
      - HOTEL
      - FINE_DINING
      - FAST_CASUAL_OR_QSR
      - BAR_OR_PUB
      - CATERING
      - COFFEE_SHOP
      - BAKERY
      - DINER
      - GROCERY
      - FESTIVAL
      - PUB
      - PIZZERIA
      - POP_UP
      - OTHER
      type: string
    orli-configurationMerchantContactType:
      enum:
      - EMAIL
      - WEB
      - PHONE
      - TWITTER
      - INSTAGRAM
      - FACEBOOK
      - TRIPADVISOR
      - GOOGLE_MY_BUSINESS
      - TIKTOK
      - WEBSITE
      - YELP
      - YOUTUBE
      - SNAPCHAT
      - PINTEREST
      type: string
    orli-configurationGoogleMenuInfoDto:
      type: object
      properties:
        items:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationGoogleMenuItemDto"
        sections:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationGoogleMenuSectionDto"
        menu:
          "$ref": "#/components/schemas/orli-configurationGoogleMenuDto"
    orli-configurationGoogleBusinessProfileDto:
      type: object
      properties:
        googleAccountId:
          type: string
        googleLocationId:
          type: string
        placeId:
          type: string
        reviewUrl:
          type: string
        tradeName:
          type: string
        address:
          "$ref": "#/components/schemas/orli-configurationGoogleAddressDto"
        phoneNumber:
          type: string
        mapsUrl:
          type: string
        createdAt:
          type: string
          format: instant
        lastSyncedAt:
          type: string
          format: instant
    orli-configurationGoogleMenuDto:
      type: object
      properties:
        menuId:
          type: string
        merchantId:
          type: string
        displayName:
          "$ref": "#/components/schemas/orli-configurationTextFieldDto"
        menuItemIds:
          type: array
          items:
            type: string
        menuSectionIds:
          type: array
          items:
            type: string
    orli-configurationGoogleMenuItemDto:
      type: object
      properties:
        menuItemId:
          type: string
        displayName:
          "$ref": "#/components/schemas/orli-configurationTextFieldDto"
        displayNameTranslations:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationTextFieldDto"
        offerSet:
          "$ref": "#/components/schemas/orli-configurationOfferSetDto"
    orli-configurationOfferSetDto:
      type: object
      properties:
        offers:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationOfferDto"
    orli-configurationOfferDto:
      type: object
      properties:
        price:
          "$ref": "#/components/schemas/orli-configurationFixedAmountDto"
    orli-configurationGoogleMenuSectionDto:
      type: object
      properties:
        menuSectionId:
          type: string
        displayName:
          "$ref": "#/components/schemas/orli-configurationTextFieldDto"
        menuItemIds:
          type: array
          items:
            type: string
    orli-configurationTextFieldDto:
      type: object
      properties:
        text:
          type: string
        languageCode:
          type: string
    orli-configurationServiceType:
      type: string
      enum:
      - DELIVERY
      - TAKEOUT
    orli-configurationServiceHoursDto:
      type: object
      properties:
        asapHours:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationAsapTimeWindowDto"
        advanceHours:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationAdvanceTimeWindowDto"
        orderableTime:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationTimeOfDayWindowDto"
    orli-configurationAsapTimeWindowDto:
      type: object
      properties:
        timeWindows:
          "$ref": "#/components/schemas/orli-configurationTimeOfDayWindowDto"
    orli-configurationAdvanceTimeWindowDto:
      type: object
      properties:
        timeWindows:
          "$ref": "#/components/schemas/orli-configurationTimeOfDayWindowDto"
        advanceBookingInterval:
          "$ref": "#/components/schemas/orli-configurationDurationIntervalDto"
    orli-configurationTimeOfDayWindowDto:
      type: object
      properties:
        timeWindows:
          "$ref": "#/components/schemas/orli-configurationTimeOfDayRangeDto"
        dayOfWeek:
          type: array
          items:
            type: string
            format: day
    orli-configurationTimeOfDayRangeDto:
      type: object
      properties:
        openTime:
          type: string
          format: local-time
        closeTime:
          type: string
          format: local-time
    orli-configurationDurationIntervalDto:
      type: object
      properties:
        min:
          type: string
          format: duration
        max:
          type: string
          format: duration
    orli-configurationFixedAmountDto:
      type: object
      properties:
        currencyCode:
          type: string
        units:
          type: integer
          format: int32
        nanos:
          type: integer
          format: int32
    orli-configurationDeliveryAreaDto:
      type: object
      properties:
        loops:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationLoopDto"
        circles:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationCircleDto"
    orli-configurationLoopDto:
      type: object
      properties:
        points:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationGeoPointDto"
        deliveryFee:
          "$ref": "#/components/schemas/orli-configurationDeliveryFeeDto"
    orli-configurationCircleDto:
      type: object
      properties:
        center:
          "$ref": "#/components/schemas/orli-configurationGeoPointDto"
        radius:
          format: int32
          type: integer
        deliveryFee:
          "$ref": "#/components/schemas/orli-configurationDeliveryFeeDto"
    orli-configurationGeoPointDto:
      type: object
      properties:
        lat:
          type: number
          format: double
        lon:
          type: number
          format: double
    orli-configurationDeliveryFeeDto:
      type: object
      properties:
        fixedAmount:
          "$ref": "#/components/schemas/orli-configurationFixedAmountDto"
    orli-configurationDeliveryPartnerName:
      type: string
      enum:
      - UBER
    orli-configurationDeliveryZoneTypeEnum:
      type: string
      enum:
      - RADIUS
      - SHAPE
      - UNKNOWN
    orli-configurationDeliveryType:
      enum:
      - MERCHANT_DELIVERY
      - PARTNER_DELIVERY
      type: string
    orli-configurationLocationDto:
      type: object
      required:
      - latitude
      - longitude
      properties:
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
    orli-configurationCustomerContactFieldDto:
      properties:
        contactType:
          enum:
          - EMAIL
          - FIRST_NAME
          - LAST_NAME
          - PHONE
          type: string
        isRequired:
          type: boolean
          default: false
        isVisible:
          type: boolean
          default: false
      type: object
    orli-configurationDisplayPreference:
      properties:
        key:
          type: string
        visible:
          type: boolean
      type: object
    orli-configurationCreateMerchantCodeDto:
      required:
      - offPremises
      - delivery
      - ordersEnabled
      - orderAheadEnabled
      - paymentEnabled
      - killSwitchEnabled
      - paymentMandatory
      - tipsEnabled
      - noteEnabled
      - noteMandatory
      - cutleryEnabled
      - curbsideEnabled
      - happyHourEnabled
      - menuId
      properties:
        hours:
          items:
            "$ref": "#/components/schemas/orli-configurationMenuHourShiftDto"
          type: array
          uniqueItems: true
        preparationTime:
          type: integer
          format: int32
        friendlyName:
          type: string
        menuId:
          type: string
        inPersonPaymentMethods:
          items:
            type: string
          type: array
          default: []
          uniqueItems: true
        merchantTips:
          items:
            "$ref": "#/components/schemas/orli-configurationMerchantTipDto"
          type: array
          default: []
        curbsideMessage:
          type: string
        customerContactFields:
          type: array
          default: []
          items:
            "$ref": "#/components/schemas/orli-configurationCustomerContactFieldDto"
        delivery:
          type: boolean
          default: false
        location:
          "$ref": "#/components/schemas/orli-configurationLocationDto"
        noteName:
          type: string
        noteDescription:
          type: string
        notifyMenuChangeBeforeMinutes:
          type: integer
          format: int32
          minimum: 0
          maximum: 255
          description: Number of minutes to notify before menu changes.
        ordersEnabled:
          type: boolean
          default: false
        orderAheadEnabled:
          type: boolean
          default: false
        offPremises:
          type: boolean
          default: false
        paymentEnabled:
          type: boolean
          default: false
        paymentMandatory:
          type: boolean
          default: false
        nbDaysAhead:
          format: int32
          type: integer
          default: 0
        tipsEnabled:
          type: boolean
          default: false
        killSwitchEnabled:
          type: boolean
          default: false
        noteEnabled:
          type: boolean
          default: false
        noteMandatory:
          type: boolean
          default: false
        maxOrdersPerTimeSlot:
          type: integer
          format: int32
        cutleryEnabled:
          type: boolean
          default: false
        curbsideEnabled:
          type: boolean
          default: false
        profileHoursEnabled:
          type: boolean
          default: false
        timeslotWindowMinutes:
          type: integer
          format: int32
        happyHourEnabled:
          type: boolean
          default: false
    orli-configurationUpdateMerchantCodeDto:
      allOf:
      - "$ref": "#/components/schemas/orli-configurationCreateMerchantCodeDto"
    orli-configurationMerchantConfig:
      required:
      - merchantId
      - timezone
      - flags
      - pos
      - payment
      properties:
        merchantId:
          type: string
        timezone:
          type: string
        currency:
          type: string
        heroImageUrl:
          type: string
        country:
          type: string
        defaultLanguage:
          type: string
        businessName:
          type: string
        pos:
          "$ref": "#/components/schemas/orli-configurationPosServiceConfig"
        payment:
          "$ref": "#/components/schemas/orli-configurationPaymentServiceConfig"
        location:
          "$ref": "#/components/schemas/orli-configurationLocationDto"
        merchantTips:
          items:
            "$ref": "#/components/schemas/orli-configurationMerchantTipDto"
          type: array
        flags:
          "$ref": "#/components/schemas/orli-configurationMerchantFlags"
        curbsideMessage:
          type: string
        noteName:
          type: string
        noteDescription:
          type: string
        customerContactFields:
          items:
            "$ref": "#/components/schemas/orli-configurationCustomerContactFieldDto"
          type: array
        notifyMenuChangeBeforeMinutes:
          type: integer
          format: int32
          minimum: 0
          maximum: 255
          description: Number of minutes to notify before menu changes.
        googlePlaceId:
          type: string
      type: object
    orli-configurationMerchantContactDto:
      required:
      - type
      - value
      properties:
        isSocial:
          type: boolean
        preferred:
          type: boolean
        type:
          "$ref": "#/components/schemas/orli-configurationMerchantContactType"
        value:
          minLength: 1
          pattern: "^.*\\S.*$"
          type: string
      type: object
    orli-configurationMerchantDetailsDto:
      allOf:
      - "$ref": "#/components/schemas/orli-configurationUpdateMerchantDetailsDto"
      - type: object
        required:
        - enabled
        - pos
        properties:
          pos:
            "$ref": "#/components/schemas/orli-configurationPosServiceConfig"
          enabled:
            type: boolean
            default: false
          status:
            "$ref": "#/components/schemas/orli-configurationMerchantStatusEnum"
          externalRefId:
            type: string
          activationOptions:
            "$ref": "#/components/schemas/orli-configurationActivationOptionsDto"
          features:
            type: array
            uniqueItems: true
            items:
              "$ref": "#/components/schemas/orli-configurationMerchantFeatureDto"
          createdDate:
            format: instant
            type: string
            readOnly: true
    orli-configurationMerchantFeatureDto:
      type: object
      properties:
        name:
          "$ref": "#/components/schemas/orli-configurationFeatureName"
        status:
          "$ref": "#/components/schemas/orli-configurationFeatureStatus"
        isTrial:
          type: boolean
        trialSuspendDate:
          type: string
          format: date-time
        trialPastDueDate:
          type: string
          format: date-time
    orli-configurationMerchantFlags:
      type: object
      properties:
        ordersEnabled:
          type: boolean
        orderAheadEnabled:
          type: boolean
        delivery:
          type: boolean
        partnerDelivery:
          type: boolean
        nbDaysAhead:
          format: int32
          type: integer
        paymentEnabled:
          type: boolean
        paymentMandatory:
          type: boolean
        offPremises:
          type: boolean
        killSwitchEnabled:
          type: boolean
        onlineOrdersEnabled:
          type: boolean
        tipsEnabled:
          type: boolean
        noteEnabled:
          type: boolean
        noteMandatory:
          type: boolean
        cutleryEnabled:
          type: boolean
        curbsideEnabled:
          type: boolean
        childTablesEnabled:
          type: boolean
        enabled:
          type: boolean
        maxOrdersPerTimeSlot:
          type: number
          format: int32
        orderWebFeedbackEnabled:
          type: boolean
        orderEmailFeedbackEnabled:
          type: boolean
        courierTipsEnabled:
          type: boolean
      required:
      - ordersEnabled
      - orderAheadEnabled
      - delivery
      - partnerDelivery
      - nbDaysAhead
      - paymentEnabled
      - paymentMandatory
      - offPremises
      - killSwitchEnabled
      - onlineOrdersEnabled
      - tipsEnabled
      - noteEnabled
      - noteMandatory
      - cutleryEnabled
      - curbsideEnabled
      - childTablesEnabled
      - enabled
      - orderWebFeedbackEnabled
      - orderEmailFeedbackEnabled
      - courierTipsEnabled
    orli-configurationMerchantProvision:
      properties:
        done:
          type: boolean
        externalRefId:
          type: string
        merchantId:
          type: string
        overrideConfig:
          type: boolean
        provider:
          enum:
          - K_SERIES
          - L_SERIES
          - O_SERIES
          - G_SERIES
          type: string
      type: object
    orli-configurationMerchantTipDto:
      properties:
        defaultSelected:
          type: boolean
        tipType:
          "$ref": "#/components/schemas/orli-configurationTipType"
      type: object
    orli-configurationMetadata:
      properties:
        current:
          "$ref": "#/components/schemas/orli-configurationPageInfo"
        next:
          "$ref": "#/components/schemas/orli-configurationPageInfo"
        sorting:
          "$ref": "#/components/schemas/orli-configurationSortInfo"
        total:
          format: int64
          type: integer
      type: object
    orli-configurationOpeningInfoDto:
      required:
      - nextShifts
      properties:
        currentShift:
          "$ref": "#/components/schemas/orli-configurationOperatingHourShiftDto"
        localDateTime:
          format: zoned-date-time
          type: string
        nextShifts:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationOperatingHourShiftDto"
          default: []
        nextShift:
          "$ref": "#/components/schemas/orli-configurationOperatingHourShiftDto"
        open:
          type: boolean
        ordersEnabled:
          type: boolean
      type: object
    orli-configurationMenuHourShiftDto:
      type: object
      properties:
        open:
          type: boolean
          default: true
        name:
          type: string
        day:
          type: string
          format: day
        end:
          type: string
          format: local-time
        start:
          type: string
          format: local-time
        menuId:
          type: string
      required:
      - day
      - start
      - end
    orli-configurationOperatingHourShiftDto:
      type: object
      properties:
        menuId:
          type: string
        open:
          type: boolean
          default: true
        name:
          type: string
        day:
          type: string
          format: day
        end:
          type: string
          format: local-time
        start:
          type: string
          format: local-time
      required:
      - day
      - start
      - end
    orli-configurationOperatingHoursDto:
      properties:
        profileHours:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationOperatingHourShiftDto"
          default: []
          uniqueItems: true
        hours:
          items:
            "$ref": "#/components/schemas/orli-configurationOperatingHourShiftDto"
          type: array
          default: []
          uniqueItems: true
        id:
          format: int32
          type: integer
        name:
          type: string
      type: object
    orli-configurationHolidayHourShiftDto:
      type: object
      required:
      - start
      - end
      properties:
        end:
          type: string
          format: local-time
        start:
          type: string
          format: local-time
    orli-configurationHolidayHourDto:
      properties:
        intervals:
          items:
            "$ref": "#/components/schemas/orli-configurationHolidayHourShiftDto"
          type: array
        open:
          type: boolean
        name:
          type: string
        startDate:
          format: date
          type: string
        endDate:
          format: date
          type: string
      required:
      - open
      - startDate
      - endDate
      type: object
    orli-configurationOrderAheadDateResponse:
      properties:
        date:
          format: date
          type: string
        day:
          format: day
          type: string
        hasSlots:
          type: boolean
          default: false
        nDaysAhead:
          format: int32
          type: integer
          default: 0
        ndaysAhead:
          format: int32
          type: integer
          default: 0
      type: object
    orli-configurationOrderAheadTimeSlotDto:
      properties:
        alreadyPlacedOrdersCount:
          format: int64
          type: integer
        asap:
          type: boolean
        availableOrdersCount:
          format: int64
          type: integer
        end:
          format: zoned-date-time
          type: string
        start:
          format: zoned-date-time
          type: string
      type: object
    orli-configurationPageInfo:
      properties:
        limit:
          format: int32
          type: integer
        offset:
          format: int64
          type: integer
      type: object
    orli-configurationPageable:
      properties:
        last:
          type: boolean
        pageNumber:
          format: int32
          type: integer
        pageSize:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalElements:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    orli-configurationPaymentServiceConfig:
      properties:
        inPersonPaymentEnabled:
          type: boolean
        scanAndPayEnabled:
          type: boolean
        providers:
          items:
            type: string
          type: array
      type: object
    orli-configurationPosServiceConfig:
      required:
      - provider
      - inPersonPaymentEnabled
      - onlineOrdersEnabled
      - happyHourEnabled
      properties:
        provider:
          "$ref": "#/components/schemas/orli-configurationPosProviderDto"
        menuId:
          type: string
        paymentMethodCode:
          type: string
        preparationTime:
          format: int32
          type: integer
        inPersonPaymentEnabled:
          type: boolean
        onlineOrdersEnabled:
          type: boolean
        happyHourEnabled:
          type: boolean
        inPersonPaymentMethods:
          type: array
          uniqueItems: true
          items:
            type: string
      type: object
    orli-configurationQrCodeConfigDto:
      properties:
        backgroundColor:
          type: string
        code:
          type: string
        displayBusinessLogo:
          type: boolean
        displayTableNumber:
          type: boolean
        font:
          type: string
        headerText:
          type: string
        id:
          type: string
        layout:
          type: string
      required:
      - layout
      - font
      type: object
    orli-configurationSortInfo:
      properties:
        sortBy:
          type: string
        sortDirection:
          "$ref": "#/components/schemas/orli-configurationSortDirection"
      type: object
    orli-configurationSortable:
      properties:
        sortBy:
          type: string
        sortDirection:
          "$ref": "#/components/schemas/orli-configurationSortDirection"
      type: object
    orli-configurationUpdateMerchantDetailsDto:
      allOf:
      - "$ref": "#/components/schemas/orli-configurationCommonMerchantDetailsDto"
      - type: object
        properties:
          showReviewsStats:
            type: boolean
          orderWebFeedbackEnabled:
            type: boolean
          orderEmailFeedbackEnabled:
            type: boolean
          availableTips:
            type: array
            uniqueItems: true
            items:
              "$ref": "#/components/schemas/orli-configurationTipDto"
    orli-configurationAddOnMerchantInfoDto:
      type: object
      properties:
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
    orli-configurationAddOnTrialDataDto:
      type: object
      properties:
        isTrial:
          type: boolean
        pastDueAt:
          type: string
          format: date-time
        suspendedAt:
          type: string
          format: date-time
    orli-configurationSalesOperationStatus:
      type: string
      enum:
      - OK
      - ERR
      - RETRY
    orli-configurationCreateTableTagMappingDto:
      type: object
      properties:
        tagId:
          type: string
          pattern: "^[0-9a-fA-F-]{36}$"
        merchantCode:
          type: string
        tableId:
          type: string
        floorPlanId:
          type: string
      required:
      - tagId
      - merchantCode
      - tableId
      - floorPlanId
    orli-configurationTableTagMappingDto:
      allOf:
      - "$ref": "#/components/schemas/orli-configurationCreateTableTagMappingDto"
      - type: object
        properties:
          tableName:
            type: string
          codeFriendlyName:
            type: string
    orli-configurationPromotionTypeEnum:
      type: string
      enum:
      - PERCENTAGE_DISCOUNT
      - BUY_1_GET_1_FREE
      - PROFILE_WIDE_DISCOUNT
      x-enum-varnames:
      - PERCENTAGE_DISCOUNT
      - BUY_1_GET_1_FREE
      - PROFILE_WIDE_DISCOUNT
    orli-configurationPromotionLifecycleStateEnum:
      type: string
      description: |
        Lifecycle state of a promotion derived from active flag and dates.
        - SCHEDULED: startDate > now (future promotion)
        - ACTIVE: startDate <= now <= endDate AND active=true
        - ENDED: endDate < now OR active=false
      enum:
      - SCHEDULED
      - ACTIVE
      - ENDED
      x-enum-varnames:
      - SCHEDULED
      - ACTIVE
      - ENDED
    orli-configurationDeletePromotionAction:
      type: string
      enum:
      - deleted
      - archived
      description: |
        The action performed on the promotion:
        - deleted: SCHEDULED promotion was hard deleted from the database
        - archived: ENDED promotion was soft deleted (archived flag set to true)
    orli-configurationConditionType:
      type: string
      enum:
      - ITEM_SKU
      - MERCHANT_CODE
      x-enum-varnames:
      - ITEM_SKU
      - MERCHANT_CODE
    orli-configurationRewardType:
      type: string
      enum:
      - PERCENTAGE_DISCOUNT
      x-enum-varnames:
      - PERCENTAGE_DISCOUNT
    orli-configurationPromotionConditionDto:
      type: object
      properties:
        id:
          type: string
        conditionType:
          "$ref": "#/components/schemas/orli-configurationConditionType"
        conditionValue:
          type: string
      required:
      - id
      - conditionType
      - conditionValue
    orli-configurationPromotionRewardDto:
      type: object
      properties:
        id:
          type: string
        rewardType:
          "$ref": "#/components/schemas/orli-configurationRewardType"
        targetSku:
          type: string
          nullable: true
        discountPercentage:
          type: number
          format: decimal
      required:
      - id
      - rewardType
    orli-configurationPromotionDto:
      type: object
      properties:
        id:
          type: string
        minimumCartValue:
          type: number
          format: decimal
          default: 0
        merchantCode:
          type: string
          minLength: 8
          maxLength: 8
          pattern: "^[A-Z]{8}$"
        name:
          type: string
        promotionType:
          "$ref": "#/components/schemas/orli-configurationPromotionTypeEnum"
        lifecycleState:
          "$ref": "#/components/schemas/orli-configurationPromotionLifecycleStateEnum"
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        active:
          type: boolean
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
        conditions:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationPromotionConditionDto"
        rewards:
          type: array
          items:
            "$ref": "#/components/schemas/orli-configurationPromotionRewardDto"
      required:
      - id
      - merchantCode
      - name
      - promotionType
      - lifecycleState
      - startDate
      - endDate
      - active
      - minimumCartValue
      - conditions
      - rewards
    orli-configurationPromotionDiscountRequest:
      type: object
      description: |
        Type-specific discount configuration. Exactly one nested object should be provided
        based on the `promotionType` value in the parent request:
          - percentageDiscount   -> PERCENTAGE_DISCOUNT
          - bogoDiscount         -> BUY_1_GET_1_FREE
          - profileWideDiscount  -> PROFILE_WIDE_DISCOUNT
      properties:
        percentageDiscount:
          "$ref": "#/components/schemas/orli-configurationPercentageDiscountRequest"
        bogoDiscount:
          "$ref": "#/components/schemas/orli-configurationBogoDiscountRequest"
        profileWideDiscount:
          "$ref": "#/components/schemas/orli-configurationProfileWideDiscountRequest"
    orli-configurationProfileWideDiscountRequest:
      type: object
      description: |
        Configuration for PROFILE_WIDE_DISCOUNT promotions.
        Applies the discount to all eligible items in the profile identified by the
        parent request's `merchantCode`.
      properties:
        discountPercentage:
          type: number
          description: Percentage discount to apply (1-100 inclusive, supports decimals
            like 12.5)
          minimum: 1
          maximum: 100
          example: 15
      required:
      - discountPercentage
    orli-configurationPercentageDiscountRequest:
      type: object
      description: Configuration for PERCENTAGE_DISCOUNT promotions
      properties:
        discountPercentage:
          type: number
          description: Percentage discount to apply (1-100 inclusive, supports decimals
            like 12.5)
          minimum: 1
          maximum: 100
          example: 20
        skus:
          type: array
          items:
            type: string
            minLength: 1
            pattern: "^.*\\S.*$"
          minItems: 1
          maxItems: 150
          uniqueItems: true
          description: List of item SKUs to apply the discount to (max 150)
          example:
          - P01
          - P02
      required:
      - discountPercentage
      - skus
    orli-configurationBogoDiscountRequest:
      type: object
      description: Configuration for BUY_1_GET_1_FREE promotions
      properties:
        skus:
          type: array
          items:
            type: string
            minLength: 1
            pattern: "^.*\\S.*$"
          minItems: 1
          maxItems: 150
          uniqueItems: true
          description: List of item SKUs for the BOGO promotion (max 150)
          example:
          - B01
      required:
      - skus
    orli-mylsPaymentDetailsResponse:
      type: object
      properties:
        paymentDetailsId:
          type: string
          description: Payment details ID (numeric string)
        alias:
          type: string
        friendlyName:
          type: string
        token:
          type: string
        isDefault:
          type: boolean
        expYear:
          type: integer
          format: int64
        expMonth:
          type: integer
          format: int64
    orli-mylsPaymentMethodResponse:
      type: object
      properties:
        paymentMethodId:
          type: string
        name:
          type: string
        customerId:
          type: string
        paymentDetails:
          type: array
          default: []
          items:
            "$ref": "#/components/schemas/orli-mylsPaymentDetailsResponse"
    orli-mylsAddressDto:
      properties:
        id:
          format: int64
          type: integer
        addressText:
          maxLength: 2000
          type: string
        entranceInfo:
          maxLength: 300
          minLength: 0
          type: string
        floorInfo:
          maxLength: 300
          minLength: 0
          type: string
        apartmentInfo:
          maxLength: 300
          minLength: 0
          type: string
        dropOffInstructions:
          maxLength: 500
          minLength: 0
          type: string
        name:
          maxLength: 255
          minLength: 0
          type: string
        isDefault:
          type: boolean
          writeOnly: true
        default:
          type: boolean
      type: object
      required:
      - addressText
    orli-mylsConsumerOrderDto:
      properties:
        orderId:
          type: string
        tableNumber:
          format: int32
          type: integer
        orderDate:
          format: date-time
          type: string
        estimatedDeliveryTime:
          format: date-time
          type: string
        collectionTime:
          format: date-time
          type: string
        state:
          type: string
        lastPaymentError:
          type: string
        merchantCode:
          type: string
        currency:
          type: string
        tipAmountCents:
          format: int64
          type: integer
        amountDueCents:
          format: int64
          type: integer
        deliveryFeeCents:
          format: int64
          type: integer
        offPremise:
          type: boolean
        failedReason:
          type: string
        collectionCode:
          type: string
        paymentInPerson:
          type: boolean
        delivery:
          type: boolean
        items:
          items:
            "$ref": "#/components/schemas/orli-mylsOrderItemDto"
          type: array
        payments:
          items:
            "$ref": "#/components/schemas/orli-mylsOrderPaymentDto"
          type: array
        displayableTableNumber:
          type: string
        reviewToken:
          type: string
        merchantName:
          type: string
        logoDarkImageUrl:
          type: string
        logoLightImageUrl:
          type: string
      type: object
    orli-mylsOrderItemDto:
      properties:
        sku:
          type: string
        name:
          type: string
        quantity:
          format: int32
          type: integer
        unitAmountCents:
          format: int64
          type: integer
        modifiers:
          items:
            "$ref": "#/components/schemas/orli-mylsModifierDto"
          type: array
        subItems:
          items:
            "$ref": "#/components/schemas/orli-mylsOrderSubItemDto"
          type: array
      type: object
    orli-mylsOrderSubItemDto:
      properties:
        sku:
          type: string
        name:
          type: string
        quantity:
          format: int32
          type: integer
        unitAmountCents:
          format: int64
          type: integer
        originalUnitAmountCents:
          description: Original unit price before discount (null if no discount applied)
          format: int64
          type: integer
        discountPercentage:
          description: Discount percentage inherited from parent combo item (null
            if no discount applied)
          type: number
        modifiers:
          items:
            "$ref": "#/components/schemas/orli-mylsModifierDto"
          type: array
      type: object
    orli-mylsModifierDto:
      properties:
        name:
          type: string
        identifier:
          type: string
      type: object
    orli-mylsOrderPaymentDto:
      properties:
        attemptDate:
          format: date-time
          type: string
        orderAmountCents:
          format: int64
          type: integer
        tipAmountCents:
          format: int64
          type: integer
      type: object
    orli-mylsMetadata:
      properties:
        current:
          "$ref": "#/components/schemas/orli-mylsPageInfo"
        next:
          "$ref": "#/components/schemas/orli-mylsPageInfo"
        sorting:
          "$ref": "#/components/schemas/orli-mylsSortInfo"
        total:
          format: int64
          type: integer
      type: object
    orli-mylsPageInfo:
      properties:
        limit:
          format: int32
          type: integer
        offset:
          format: int64
          type: integer
      type: object
    orli-mylsSortInfo:
      properties:
        sortBy:
          type: string
        sortDirection:
          enum:
          - ASC
          - DESC
          type: string
      type: object
    orli-paymentPaymentProviderName:
      enum:
      - STRIPE
      - ADYEN
      - DEV
      type: string
    orli-paymentAmount:
      properties:
        currency:
          type: string
        value:
          format: int64
          type: integer
      type: object
    orli-paymentBrowserInfo:
      properties:
        acceptHeader:
          type: string
        colorDepth:
          format: int32
          type: integer
        javaEnabled:
          type: boolean
        language:
          type: string
        screenHeight:
          format: int32
          type: integer
        screenWidth:
          format: int32
          type: integer
        timeZoneOffset:
          format: int32
          type: integer
        userAgent:
          type: string
      type: object
    orli-paymentCheckoutMetadata:
      properties:
        collectionCode:
          type: string
        locationPrefix:
          type: string
        merchantId:
          type: string
        orderId:
          type: string
        sessionId:
          type: string
      type: object
    orli-paymentCustomerCardResponse:
      required:
      - cardId
      - globalUserId
      properties:
        brand:
          type: string
        cardId:
          type: string
        isDefault:
          type: boolean
        isDeleted:
          type: boolean
        lastFourDigits:
          type: string
        month:
          format: int64
          type: integer
        year:
          format: int64
          type: integer
        globalUserId:
          type: string
      type: object
    orli-paymentPaymentDetails:
      properties:
        cardId:
          type: string
        customerId:
          type: string
      type: object
    orli-paymentPaymentMethod:
      properties:
        applePayToken:
          type: string
        brand:
          type: string
        encryptedCardNumber:
          type: string
        encryptedExpiryMonth:
          type: string
        encryptedExpiryYear:
          type: string
        encryptedSecurityCode:
          type: string
        googlePayToken:
          type: string
        holderName:
          type: string
        issuer:
          type: string
        type:
          type: string
        storedPaymentMethodId:
          type: string
        ownerName:
          type: string
        iban:
          type: string
      required:
      - type
      type: object
    orli-paymentRiskData:
      properties:
        clientData:
          type: string
      type: object
    orli-posAccountActivityDto:
      properties:
        activityType:
          enum:
          - ITEM_ADDED
          - ITEM_REMOVED
          - PAYMENT_ADDED
          - PAYMENT_REMOVED
          - ACCOUNT_OPENED
          - ACCOUNT_CLOSED
          type: string
        amount:
          format: int64
          type: integer
        description:
          type: string
        paymentMethod:
          type: string
        productName:
          type: string
        quantity:
          format: int32
          type: integer
        reportedAt:
          format: date-time
          type: string
        totalAmount:
          format: int64
          type: integer
      type: object
    orli-posAddSubItemDto:
      properties:
        sid:
          format: int32
          type: integer
        modifiers:
          items:
            "$ref": "#/components/schemas/orli-posModifier"
          type: array
        name:
          type: string
          minLength: 1
        quantity:
          format: int32
          type: integer
        sku:
          type: string
          minLength: 1
        stepName:
          type: string
        stepSku:
          type: string
      required:
      - name
      - quantity
      - sku
      type: object
    orli-posAmount:
      properties:
        currency:
          type: string
        value:
          format: int64
          type: integer
      type: object
    orli-posAccountLineItem:
      description: Collection of check items
      properties:
        active:
          deprecated: true
          type: boolean
        amountLessTax:
          description: The total price of the item without tax
          type: number
        amountWithTax:
          description: The total price of the item including tax
          type: number
        discountedAmount:
          description: The amount the item was discounted
          type: number
        id:
          description: The unique ID assigned to the sale line
          format: int64
          type: integer
        itemName:
          description: The name given to the item
          type: string
        itemSku:
          description: The SKU assigned to the item
          type: string
        modifiers:
          description: The modifiers of the item for this sale line
          items:
            "$ref": "#/components/schemas/orli-posModifier"
          type: array
        parentId:
          format: int64
          type: integer
          writeOnly: true
        quantity:
          description: The quantity of the item for this sale line
          format: double
          type: number
        subLineItems:
          description: Collection of sub-lines
          items:
            "$ref": "#/components/schemas/orli-posAccountLineItem"
          type: array
        taxIncluded:
          type: boolean
        timeOfTransactionUtc:
          description: Date/Time in UTC of this transaction
          format: date-time
          type: string
        unitAmount:
          description: The unit amount for a single item
          type: number
        uuid:
          description: The unique UUID assigned to the sale line
          type: string
      type: object
    orli-posAccountPaymentLine:
      description: Collection of check items
      properties:
        accountCancelled:
          type: boolean
          writeOnly: true
        active:
          description: whether this payment line is active or not (i.e. has been cancelled)
          type: boolean
        amountPaid:
          description: Amount paid for this payment line
          type: number
        externalReference:
          description: Payment external reference
          type: string
        gratuityAmount:
          description: Tip payment amount
          type: number
        paymentDate:
          description: Date/Time in UTC of this payment
          format: date-time
          type: string
        paymentMethodCode:
          description: Payment method code for this payment line
          type: string
        paymentMethodDescription:
          description: Payment method for this payment line
          type: string
      type: object
    orli-posAccountSnapshot:
      description: Related account (if the webhook is configured to provide it)
      properties:
        clientCount:
          description: The number of guests at the table
          format: int32
          type: integer
        closeDate:
          description: Date this account was closed in UTC
          format: date-time
          type: string
        currentAmount:
          description: The current total amount on the check
          type: number
        deviceId:
          format: int64
          type: integer
        id:
          type: string
          writeOnly: true
        identifier:
          type: string
          writeOnly: true
        ikaccountId:
          type: string
        name:
          description: The check name
          type: string
        number:
          format: int32
          type: integer
          writeOnly: true
        openDate:
          description: Date this account was opened in UTC
          format: date-time
          type: string
        paidAmount:
          description: The total of all payments on the check
          type: number
        paymentEntries:
          description: Collection of check items
          items:
            "$ref": "#/components/schemas/orli-posAccountPaymentLine"
          type: array
        posId:
          format: int64
          type: integer
        salesEntries:
          description: Collection of check items
          items:
            "$ref": "#/components/schemas/orli-posAccountLineItem"
          type: array
        serviceCharge:
          description: The service charge of the check
          type: number
        staffId:
          description: The unique ID of the staff member assigned to the check
          format: int64
          type: integer
        staffName:
          description: The name of the staff member assigned to the check
          type: string
        tableNumber:
          format: int32
          type: integer
        uuid:
          description: Account uuid
          type: string
      type: object
    orli-posSalesRestrictionsErrorDto:
      properties:
        skus:
          items:
            type: string
          type: array
          uniqueItems: true
      type: object
    orli-posOrderErrorsDto:
      description: Order errors
      properties:
        salesRestrictions:
          "$ref": "#/components/schemas/orli-posSalesRestrictionsErrorDto"
      type: object
    orli-posBillStatementTaxLineDto:
      properties:
        description:
          type: string
        itemId:
          type: string
        postTaxAmountCents:
          format: int64
          type: integer
        preTaxAmountCents:
          format: int64
          type: integer
        rateDescription:
          type: string
        taxAmountCents:
          format: int64
          type: integer
        taxCode:
          type: string
        taxIncluded:
          type: boolean
        taxName:
          type: string
        taxRate:
          format: double
          type: number
      type: object
    orli-posBrowserInfo:
      properties:
        acceptHeader:
          type: string
        colorDepth:
          format: int32
          type: integer
        javaEnabled:
          type: boolean
        language:
          type: string
        screenHeight:
          format: int32
          type: integer
        screenWidth:
          format: int32
          type: integer
        timeZoneOffset:
          format: int32
          type: integer
        userAgent:
          type: string
      type: object
    orli-posModificationDto:
      type: object
      description: |
        Represents a price modification applied to a cart item from a promotion.
        Contains the original and modified prices, discount percentage, and promotion details.
      properties:
        originalUnitPrice:
          type: number
          description: The original unit price in cents before the modification was
            applied
        modifiedUnitPrice:
          type: number
          description: The unit price in cents after the modification was applied
        discountPercentage:
          type: number
          description: The percentage discount applied (e.g., 20 for 20% off, 100
            for BOGO free item)
        quantity:
          type: integer
          format: int32
          description: The number of items this modification applies to
        promotionId:
          type: string
          description: The ID of the promotion that applied this modification
        promotionType:
          type: string
          description: 'The type of promotion (e.g., "PERCENTAGE_DISCOUNT", "BUY_1_GET_1_FREE").

            '
        promotionName:
          type: string
          description: The display name of the promotion
      required:
      - originalUnitPrice
      - modifiedUnitPrice
      - discountPercentage
      - quantity
    orli-posCartItemDto:
      properties:
        sid:
          format: int32
          type: integer
        itemId:
          type: string
        modifications:
          type: array
          default: []
          items:
            "$ref": "#/components/schemas/orli-posModificationDto"
        modifiers:
          items:
            "$ref": "#/components/schemas/orli-posModifier"
          type: array
        name:
          type: string
        quantity:
          minimum: 1
          format: int32
          type: integer
        rawImageUrl:
          type: string
        sku:
          type: string
        squareImageUrl:
          type: string
        previewImageUrl:
          type: string
        texts:
          items:
            "$ref": "#/components/schemas/orli-posItemText"
          type: array
        unitAmountCents:
          format: int64
          type: integer
        totalAmountCents:
          format: int64
          type: integer
        totalAmountCentsBeforePromotion:
          format: int64
          type: integer
        totalAmountCentsDiscountPromotion:
          format: int64
          type: integer
          default: 0
      required:
      - name
      - quantity
      - sku
      - unitAmountCents
      - totalAmountCents
      - totalAmountCentsBeforePromotion
      - totalAmountCentsDiscountPromotion
      type: object
    orli-posCustomerDto:
      properties:
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        phoneNumber:
          type: string
      type: object
    orli-posNotificationDto:
      discriminator:
        propertyName: type
      properties:
        businessLocationId:
          description: The business location id related to this notification
          format: int64
          type: integer
        ikentooAccountId:
          deprecated: true
          format: int64
          type: integer
        ikentooAccountIdentifier:
          type: string
        reason:
          description: Reason for failure if there is one
          type: string
        thirdPartyReference:
          description: Third-party reference you provided when the order or payment
            was placed.
          type: string
        type:
          description: The type of notification
          type: string
      type: object
    orli-posIntegrator:
      type: string
      enum:
      - GOOGLE
    orli-posItemText:
      properties:
        description:
          type: string
        friendlyDisplayName:
          type: string
        locale:
          type: string
      type: object
    orli-posLocalTime:
      properties:
        hour:
          format: int32
          type: integer
        minute:
          format: int32
          type: integer
        nano:
          format: int32
          type: integer
        second:
          format: int32
          type: integer
      type: object
    orli-posMenuDeal:
      allOf:
      - "$ref": "#/components/schemas/orli-posMenuEntry"
      - properties:
          containsAlcohol:
            type: boolean
          alcoholPercentage:
            type: number
          allergenCodes:
            items:
              type: string
            type: array
            uniqueItems: true
          directItems:
            items:
              "$ref": "#/components/schemas/orli-posMenuItem"
            type: array
          name:
            type: string
          productionInstructions:
            items:
              "$ref": "#/components/schemas/orli-posModifierGroup"
            type: array
          rawImageUrl:
            type: string
          sid:
            format: int32
            type: integer
          sku:
            type: string
          squareImageUrl:
            type: string
          previewImageUrl:
            type: string
          steps:
            items:
              "$ref": "#/components/schemas/orli-posMenuDealGroup"
            type: array
          texts:
            items:
              "$ref": "#/components/schemas/orli-posItemText"
            type: array
          unitPriceCents:
            format: int64
            type: integer
        type: object
      type: object
    orli-posMenuDealGroup:
      properties:
        items:
          items:
            "$ref": "#/components/schemas/orli-posMenuItem"
          type: array
        multiSelectionPermitted:
          type: boolean
        mustSelectAnItem:
          type: boolean
        name:
          type: string
        sku:
          type: string
        texts:
          items:
            "$ref": "#/components/schemas/orli-posItemText"
          type: array
      type: object
    orli-posMenuGroup:
      allOf:
      - "$ref": "#/components/schemas/orli-posMenuEntry"
      - properties:
          name:
            type: string
        type: object
      type: object
    orli-posMenuItem:
      allOf:
      - "$ref": "#/components/schemas/orli-posMenuEntry"
      - properties:
          containsAlcohol:
            type: boolean
          alcoholPercentage:
            type: number
          allergenCodes:
            items:
              type: string
            type: array
            uniqueItems: true
          name:
            type: string
          productionInstructions:
            items:
              "$ref": "#/components/schemas/orli-posModifierGroup"
            type: array
          rawImageUrl:
            type: string
          sid:
            format: int32
            type: integer
          sku:
            type: string
          squareImageUrl:
            type: string
          previewImageUrl:
            type: string
          texts:
            items:
              "$ref": "#/components/schemas/orli-posItemText"
            type: array
          unitPriceCents:
            format: int64
            type: integer
        type: object
      type: object
    orli-posMenuEntry:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
      required:
      - type
      type: object
    orli-posMerchantContactDto:
      properties:
        isSocial:
          type: boolean
        preferred:
          type: boolean
        type:
          enum:
          - EMAIL
          - WEB
          - PHONE
          - TWITTER
          - INSTAGRAM
          - FACEBOOK
          - TRIPADVISOR
          - GOOGLE_MY_BUSINESS
          - TIKTOK
          - WEBSITE
          - YELP
          - YOUTUBE
          - SNAPCHAT
          - PINTEREST
          type: string
        value:
          type: string
      type: object
    orli-posMerchantEntryDto:
      properties:
        id:
          type: string
        name:
          type: string
      required:
      - id
      - name
      type: object
    orli-posMetadata:
      properties:
        current:
          "$ref": "#/components/schemas/orli-posPageInfo"
        next:
          "$ref": "#/components/schemas/orli-posPageInfo"
        sorting:
          "$ref": "#/components/schemas/orli-posSortInfo"
        total:
          format: int64
          type: integer
      type: object
    orli-posModifier:
      properties:
        sid:
          format: int32
          type: integer
        identifier:
          type: string
        modifierGroupId:
          format: int32
          type: integer
        name:
          type: string
        unitPriceCents:
          format: int64
          type: integer
      type: object
    orli-posModifierGroup:
      properties:
        id:
          format: int32
          type: integer
        instructions:
          items:
            "$ref": "#/components/schemas/orli-posModifier"
          type: array
        maxSelectedAmount:
          format: int32
          type: integer
        minSelectedAmount:
          format: int32
          type: integer
        multiSelectionPermitted:
          type: boolean
        name:
          type: string
      type: object
    orli-posOaData:
      properties:
        amountCents:
          format: int64
          type: integer
        country:
          type: string
        currency:
          type: string
        customerName:
          type: string
        orderCollectionTime:
          format: date-time
          type: string
        orderId:
          format: uuid
          type: string
        paymentRef:
          type: string
          minLength: 1
        paymentType:
          enum:
          - order
          - snp
          type: string
        marketingOptIn:
          type: boolean
          description: Whether the consumer opted in to marketing communications
        sendAccountCreationEmail:
          type: boolean
        tipCents:
          format: int64
          type: integer
        paidSaleLines:
          type: array
          items:
            type: string
      required:
      - paymentRef
      - paymentType
      type: object
    orli-posOperatingHourShiftDto:
      properties:
        day:
          enum:
          - MONDAY
          - TUESDAY
          - WEDNESDAY
          - THURSDAY
          - FRIDAY
          - SATURDAY
          - SUNDAY
          type: string
        end:
          "$ref": "#/components/schemas/orli-posLocalTime"
        id:
          format: int32
          type: integer
        overnightSecondPart:
          type: boolean
        start:
          "$ref": "#/components/schemas/orli-posLocalTime"
      type: object
    orli-posOperatingHoursDto:
      properties:
        hours:
          items:
            "$ref": "#/components/schemas/orli-posOperatingHourShiftDto"
          type: array
        id:
          format: int32
          type: integer
        name:
          type: string
      type: object
    orli-posOrderCountRequest:
      properties:
        asap:
          type: boolean
        end:
          format: date-time
          type: string
        start:
          format: date-time
          type: string
      type: object
    orli-posOrderCountResponse:
      properties:
        alreadyPlacedOrdersCount:
          format: int64
          type: integer
        asap:
          type: boolean
        end:
          format: date-time
          type: string
        start:
          format: date-time
          type: string
      type: object
    orli-posOrderItemDescriptionDto:
      properties:
        description:
          type: string
        localeCode:
          type: string
      type: object
    orli-posOrderItemDto:
      properties:
        descriptions:
          items:
            "$ref": "#/components/schemas/orli-posOrderItemDescriptionDto"
          type: array
        itemId:
          type: string
        name:
          type: string
        quantity:
          format: int32
          type: integer
        sku:
          type: string
        unitAmountCents:
          format: int64
          type: integer
        originalUnitAmountCents:
          description: Original unit price before discount
          format: int64
          type: integer
        discountPercentage:
          description: Discount percentage inherited from parent combo item
          type: number
        promotionId:
          type: string
          description: The ID of the promotion applied to this order item
      type: object
    orli-posOrderPaymentDto:
      properties:
        attemptDate:
          format: date-time
          type: string
        orderAmountCents:
          format: int64
          type: integer
        state:
          enum:
          - PENDING
          - CONFIRMED
          - CAPTURED
          - ABORTED
          - FAILED
          - REFUNDED
          type: string
        tipAmountCents:
          format: int64
          type: integer
      type: object
    orli-posOrderStatementDto:
      properties:
        amountDueCents:
          format: int64
          type: integer
        lines:
          items:
            "$ref": "#/components/schemas/orli-posOrderStatementLineDto"
          type: array
        name:
          type: string
        salesAmountCents:
          format: int64
          type: integer
        taxAmountCents:
          format: int64
          type: integer
        taxIncluded:
          type: boolean
        taxLines:
          items:
            "$ref": "#/components/schemas/orli-posOrderStatementTaxLineDto"
          type: array
        tipAmountCents:
          format: int64
          type: integer
        deliveryFeeCents:
          type: integer
          format: int64
      type: object
    orli-posOrderStatementLineDto:
      properties:
        grossUnitAmountCents:
          format: int64
          type: integer
        modifiers:
          items:
            type: string
          type: array
        name:
          type: string
        quantity:
          format: int32
          type: integer
        totalAmountCents:
          format: int64
          type: integer
        sku:
          type: string
        unitAmountCents:
          format: int64
          type: integer
      type: object
    orli-posOrderStatementTaxLineDto:
      properties:
        description:
          type: string
        postTaxAmountCents:
          format: int64
          type: integer
        preTaxAmountCents:
          format: int64
          type: integer
        rateDescription:
          type: string
        taxAmountCents:
          format: int64
          type: integer
        taxCode:
          type: string
        taxIncluded:
          type: boolean
        taxName:
          type: string
        taxRate:
          type: number
      type: object
    orli-posPageInfo:
      properties:
        limit:
          format: int32
          type: integer
        offset:
          format: int64
          type: integer
      type: object
    orli-posPaymentReport:
      properties:
        merchantId:
          type: string
        paymentId:
          type: string
        orderTotal:
          format: int64
          type: integer
        tipAmount:
          format: int64
          type: integer
        paymentValue:
          format: int64
          type: integer
        paymentMethod:
          type: string
        attemptDate:
          format: date-time
          type: string
        paymentType:
          enum:
          - order
          - snp
          type: string
        paymentStatus:
          enum:
          - PENDING
          - CONFIRMED
          - CAPTURED
          - ABORTED
          - FAILED
          - AUTHORIZED
          - REFUNDED
          type: string
        posOrderId:
          type: string
        oaOrderId:
          type: string
        transactionType:
          enum:
          - TABLE
          - PICKUP
          - DELIVERY
          - SNP
          type: string
      type: object
    orli-posPaymentCheckoutDataRequest:
      properties:
        shopperIp:
          type: string
        shopperEmail:
          type: string
        amount:
          "$ref": "#/components/schemas/orli-posAmount"
        browserInfo:
          "$ref": "#/components/schemas/orli-posBrowserInfo"
        clientStateDataIndicator:
          type: boolean
        merchantAccount:
          type: string
          minLength: 1
        origin:
          type: string
        paymentMethod:
          "$ref": "#/components/schemas/orli-posPaymentMethod"
        providerName:
          enum:
          - STRIPE
          - ADYEN
          - DEV
          type: string
        reference:
          type: string
          minLength: 1
        returnUrl:
          type: string
          minLength: 1
        riskData:
          "$ref": "#/components/schemas/orli-posRiskData"
        shopperInteraction:
          type: string
          minLength: 1
        store:
          type: string
          minLength: 1
      required:
      - amount
      - merchantAccount
      - paymentMethod
      - providerName
      - reference
      - returnUrl
      - shopperInteraction
      - store
      type: object
    orli-posPaymentDto:
      properties:
        abortDate:
          format: date-time
          type: string
        amountDueCents:
          format: int64
          type: integer
        attemptDate:
          format: date-time
          type: string
        captureDate:
          format: date-time
          type: string
        confirmationDate:
          format: date-time
          type: string
        createdDate:
          format: date-time
          type: string
        currency:
          type: string
        customerName:
          type: string
        error:
          type: string
        failDate:
          format: date-time
          type: string
        merchantCode:
          type: string
        merchantId:
          type: string
        paymentId:
          type: string
        paymentProvider:
          type: string
        refundDate:
          format: date-time
          type: string
        sessionId:
          type: string
        status:
          enum:
          - PENDING
          - CONFIRMED
          - CAPTURED
          - ABORTED
          - FAILED
          - REFUNDED
          type: string
        tableNumber:
          format: int32
          type: integer
        tipAmountCents:
          format: int64
          type: integer
        paidSaleLines:
          type: array
          items:
            type: string
      type: object
    orli-posPaymentMetadata:
      properties:
        pspReference:
          type: string
      type: object
    orli-posPaymentMethod:
      properties:
        applePayToken:
          type: string
        brand:
          type: string
        encryptedCardNumber:
          type: string
        encryptedExpiryMonth:
          type: string
        encryptedExpiryYear:
          type: string
        encryptedSecurityCode:
          type: string
        googlePayToken:
          type: string
        holderName:
          type: string
        issuer:
          type: string
        type:
          type: string
      required:
      - type
      type: object
    orli-posMerchantOrderDto:
      properties:
        statement:
          "$ref": "#/components/schemas/orli-posOrderStatementDto"
        deliveryAddress:
          type: string
        deliveryFeeCents:
          format: int64
          type: integer
        amountDueCents:
          format: int64
          type: integer
        cartDate:
          format: date-time
          type: string
        collectionCode:
          type: string
        collectionTime:
          format: date-time
          type: string
        effectiveDate:
          format: date-time
          type: string
        consumer:
          "$ref": "#/components/schemas/orli-posCustomerDto"
        consumerUuid:
          type: string
        estimatedDeliveryTime:
          format: date-time
          type: string
        failedReason:
          type: string
        items:
          items:
            "$ref": "#/components/schemas/orli-posOrderItemDto"
          type: array
        lastPaymentError:
          type: string
        lastPaymentErrorCode:
          type: string
        merchantCode:
          type: string
        name:
          type: string
        note:
          type: string
        offPremise:
          type: boolean
        orderDate:
          format: date-time
          type: string
        orderId:
          type: string
        paymentInPerson:
          type: boolean
        payments:
          items:
            "$ref": "#/components/schemas/orli-posOrderPaymentDto"
          type: array
        posOrderId:
          type: string
        profileName:
          type: string
        requestCurbside:
          type: boolean
        requestCutlery:
          type: boolean
        state:
          enum:
          - DRAFT
          - READY
          - PAY_ATTEMPT
          - PAID
          - SENT
          - CONFIRMED
          - PAID_ABORTED
          - ABORTED
          - FAILED
          - CANCELLED
          - PAY_FAILED
          type: string
        tableNumber:
          format: int32
          type: integer
        tipAmountCents:
          format: int64
          type: integer
      type: object
    orli-posOrdersRollupDailyDto:
      type: object
      properties:
        date:
          type: string
          format: date
        count:
          type: integer
          format: int64
    orli-posOrdersRollupDto:
      type: object
      properties:
        count:
          type: integer
          format: int64
      anyOf:
      - "$ref": "#/components/schemas/orli-posOrdersRollupDailyDto"
      - "$ref": "#/components/schemas/orli-posOrdersRollupHourlyDto"
    orli-posOrdersRollupHourlyDto:
      type: object
      properties:
        date:
          type: string
          format: date
        time:
          "$ref": "#/components/schemas/orli-posLocalTime"
        count:
          type: integer
          format: int64
    orli-posRiskData:
      properties:
        clientData:
          type: string
      type: object
    orli-posSortInfo:
      properties:
        sortBy:
          type: string
        sortDirection:
          enum:
          - ASC
          - DESC
          type: string
      type: object
    orli-posTableDto:
      properties:
        active:
          type: boolean
        clientCount:
          format: int32
          type: integer
        code:
          type: string
        name:
          type: string
        reference:
          type: string
        tableNumber:
          format: int32
          type: integer
      type: object
    orli-posPosClientConsumerOrderDto:
      properties:
        orderId:
          type: string
        tableNumber:
          format: int32
          type: integer
        orderDate:
          format: date-time
          type: string
        estimatedDeliveryTime:
          format: date-time
          type: string
        collectionTime:
          format: date-time
          type: string
        state:
          type: string
        lastPaymentError:
          type: string
        lastPaymentErrorCode:
          type: string
        merchantCode:
          type: string
        currency:
          type: string
        amountDueCents:
          format: int64
          type: integer
        deliveryFeeCents:
          format: int64
          type: integer
        offPremise:
          type: boolean
        failedReason:
          type: string
        collectionCode:
          type: string
        paymentInPerson:
          type: boolean
        delivery:
          type: boolean
        items:
          items:
            "$ref": "#/components/schemas/orli-posOrderItemDto"
          type: array
        payments:
          items:
            "$ref": "#/components/schemas/orli-posOrderPaymentDto"
          type: array
        displayableTableNumber:
          type: string
        reviewToken:
          type: string
        merchantName:
          type: string
        logoDarkImageUrl:
          type: string
        logoLightImageUrl:
          type: string
      type: object
    orli-posRecommendationItemDto:
      properties:
        sku:
          type: string
      required:
      - sku
      type: object
    pms-apiBusinessLocationId:
      description: The unique identifier for the business location.
      type: integer
      format: int64
      example: 45454565682155
    pms-apiGetProvider:
      properties:
        id:
          description: The unique identifier for the provider.
          type: integer
          format: int64
          example: 3012455645
        name:
          description: The name of the PMS provider.
          type: string
        apiKey:
          description: The API key for the PMS provider.
          type: string
          example: fake-secret
        businessLocationId:
          description: The unique identifier for the business location.
          type: integer
          format: int64
          example: 45454565682155
        endpoint:
          description: The endpoint of the PMS provider. This is where Lightspeed
            will send PMS requests.
          type: string
          example: http://integration.com/pms/endpoint
        features:
          description: The optional features that the PMS provider supports. See the
            [Integration Guide](https://api-portal.lsk.lightspeed.app/category/property-management-systems)
            for more details.
          items:
            "$ref": "#/components/schemas/pms-apiProviderFeature"
          type: array
          uniqueItems: true
      type: object
    pms-apiProviderId:
      description: The unique identifier for the provider.
      type: integer
      format: int64
      example: 3012455645
    pms-apiProviderName:
      description: The name of the PMS provider.
      type: string
      minLength: 1
      maxLength: 255
      example: My PMS Provider
    pms-apiProviderEndpoint:
      description: The endpoint of the PMS provider. This is where Lightspeed will
        send PMS requests.
      type: string
      minLength: 1
      maxLength: 255
      example: http://integration.com/pms/endpoint
    pms-apiProviderApiKey:
      description: The API key for the PMS provider.
      type: string
      minLength: 1
      maxLength: 255
      example: fake-secret
    pms-apiProviderFeatures:
      type: array
      uniqueItems: true
      description: The optional features that the PMS provider supports. See the [Integration
        Guide](https://api-portal.lsk.lightspeed.app/category/property-management-systems)
        for more details.
      items:
        "$ref": "#/components/schemas/pms-apiProviderFeature"
    pms-apiProviderFeature:
      type: string
      enum:
      - SEARCH_BY_NAME
      - MIRRORING
      - PARTIAL_PAYMENTS
      - MULTI_PAYMENTS
      - SERVICE_CHARGE
      - ENRICHED_PAYLOAD
      example: MIRRORING
    pms-apiRevenueCenterId:
      example: 343243933
      description: The unique identifier for the revenue center.
      type: integer
      format: int64
    pms-apiRevenueCenterName:
      example: Bar
      description: The name of the revenue center.
      type: string
    pms-apiPmsParameterDefinition:
      type: object
      properties:
        provider:
          type: string
        category:
          "$ref": "#/components/schemas/pms-apiPmsParameterCategory"
        name:
          type: string
        type:
          type: string
          enum:
          - SELECT
          - STRING
          - LONG
        mandatory:
          type: boolean
        includeInContext:
          type: boolean
    pms-apiPmsParameterCategory:
      type: string
      enum:
      - POS_CONFIGURATION
      - PAYMENT_METHOD
      - ACCOUNTING_GROUP
      - TAX
      - DEVICE
      - AUTHENTICATION
    pms-apiPmsParameterOption:
      type: object
      properties:
        key:
          type: string
        value:
          type: string
        active:
          type: boolean
    pms-apiErrorResponse:
      type: object
      properties:
        status:
          type: string
        timestamp:
          type: string
          format: date-time
        message:
          type: string
        apiSubExceptions:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
              rejectedValue:
                type: object
              message:
                type: string
    pms-integrationSalesWebhookDto:
      type: object
      properties:
        name:
          type: string
          description: Name of the transaction
        openDate:
          type: string
          format: date-time
          description: The date and time when the transaction was opened in UTC
          example: '2021-01-01T00:00:00Z'
        closeDate:
          type: string
          format: date-time
          description: The date and time when the transaction was closed in UTC
          example: '2021-01-01T00:00:00Z'
        covers:
          type: number
          description: The number of covers (guests) in this transaction.
          example: 2
        ownerId:
          type: integer
          format: int64
          description: The ID of the POS user (staff) who owns this transaction
          example: 12345
        ownerName:
          type: string
          description: The name of the POS user (staff) who owns this transaction
          example: John Doe
        deviceId:
          type: integer
          format: int64
          description: The ID of the device on which the transaction was started
          example: 12345
        businessExternalReference:
          type: string
          description: Client name
          example: quickbooks-123
        apiKey:
          type: string
          description: API Key.
          example: quickbooks-key-345
        receiptId:
          type: string
          description: Receipt ID
          example: R51.3
        fiscId:
          type: string
          description: 'Unique identifier for the transaction, can be used this for
            any identification purposes.

            '
          example: A1234.5
        uuid:
          type: string
          description: |
            A b64 encoded uuid which also act as unique identifier for the transaction,
            also can be used for any identification purposes.
          example: xfe9ldKWSfW8VrAYUcnvGA==
        initialAccountId:
          type: string
          description: |
            Initial Account ID, if any.
            This is used to correlate the transaction with the initial account, such on REFUND or VOID.
          example: A1234.1
        identifier:
          deprecated: true
          type: string
          description: Refer to the non null value of either the fiscId or uuid as
            fallback.
          example: A1234.5
        revenueCenterId:
          type: integer
          format: int64
          description: Revenue Center (POS Configuration) ID
          example: 94489280528
        revenueCenterName:
          type: string
          description: Revenue Center (POS Configuration) Name
          example: Fixed POS
        transactions:
          type: array
          items:
            "$ref": "#/components/schemas/pms-integrationPmsTransactionWebhookDto"
        payments:
          type: array
          items:
            "$ref": "#/components/schemas/pms-integrationPmsPaymentWebhookDto"
        serviceCharge:
          "$ref": "#/components/schemas/pms-integrationPmsServiceChargeWebhookDto"
    pms-integrationPmsTaxLineWebhookDto:
      type: object
      properties:
        taxId:
          type: string
          description: The tax identifier.
          example: '12345'
        taxName:
          type: string
          description: The name of the tax.
          example: VAT 10%
        taxAmount:
          type: number
          description: The amount of the tax.
          example: 1.0
        taxRate:
          type: number
          description: The rate of the tax.
          example: 1.1
        taxIncluded:
          type: boolean
          description: Whether the tax is included in the price (VAT).
          example: true
    pms-integrationPmsTransactionWebhookDto:
      type: object
      properties:
        unitAmount:
          type: number
          description: The price of single item.
          example: 10.0
        quantity:
          type: number
          description: 'The quantity of the items. Negative quantity indicates a refund/cancellation/void.

            '
          example: 2.0
        amount:
          type: number
          description: The total pre-tax amount of this transaction sale line.
          example: 20.0
        description:
          type: string
          description: The item name
          example: French Fries
        staffId:
          type: integer
          format: int64
          description: The ID of the POS user (staff) who processed this transaction
            line
          example: 6
        staffName:
          type: string
          description: The name of the POS user (staff) who processed this transaction
            line
          example: John Doe
        groupId:
          type: integer
          format: int64
          description: Lightspeed accounting group id which the item belongs to.
          example: 25769803810
        groupName:
          type: string
          description: Lightspeed accounting group name which the item belongs to.
          example: Food
        taxId:
          deprecated: true
          type: integer
          format: int64
          description: Deprecated, refer to taxLines.
          example: 12345
        taxName:
          deprecated: true
          type: string
          description: Deprecated, refer to taxLines.
          example: VAT 10%
        taxRate:
          deprecated: true
          type: number
          description: The tax rate of the items.
          example: 1.1
        taxIncluded:
          deprecated: true
          type: boolean
          description: Deprecated, refer to taxLines.
          example: true
        sku:
          type: string
          description: The SKU of the items.
          example: F07
        type:
          type: string
          enum:
          - Sale
          - LineDiscount
          - AccountDiscount
          - PercentItem
          description: The type of the transaction line.
        serviceChargeContribution:
          type: number
          description: The amount of the service charge contribution.
          example: 4.5
        taxLines:
          type: array
          items:
            "$ref": "#/components/schemas/pms-integrationPmsTaxLineWebhookDto"
    pms-integrationPmsServiceChargeWebhookDto:
      type: object
      properties:
        amount:
          type: number
          description: The amount of the service charge.
          example: 1.0
        type:
          type: string
          enum:
          - UNTAXED
          - APPORTIONED
          description: The type of the service charge.
          example: UNTAXED
    pms-integrationPmsPaymentWebhookDto:
      type: object
      properties:
        paymentDate:
          type: string
          format: date-time
          description: The date and time when the payment was made in UTC
          example: '2021-01-01T00:00:00Z'
        staffId:
          type: integer
          format: int64
          description: The ID of the POS user (staff) who processed this payment
          example: 6
        staffName:
          type: string
          description: The name of the POS user (staff) who processed this payment
          example: John Doe
        gratuity:
          type: number
          description: The amount of the gratuity (tips).
          example: 1.0
        amount:
          type: number
          description: The total amount of the received payment.
          example: 66.0
        methodName:
          type: string
          description: The name of the payment method.
          example: MEWS
        methodCode:
          type: string
          description: The code of the payment method.
          example: IKPMS
        reservationId:
          type: string
          description: The reservation ID of the payment.
          example: '001'
    pms-integrationErrorWebhookDto:
      type: object
      description: |
        The error response body content should follow this schema.
        If the response body content does not follow this schema, only the status code will be sent.
        All other property beside customerErrorMessage will be ignored.
      properties:
        customerErrorMessage:
          type: string
          maxLength: 50
          example: Network failure
          description: |
            The error message that will be sent and printed at the POS.
            Length should not exceed 50 characters to avoid truncation.
    pms-integrationTransactionStateDto:
      description: |
        The PMS Charges Transaction state information
        The transaction can be an actual PMS Room Charge or a mirroring transaction.
      type: object
      properties:
        receiptId:
          type: string
          description: The receipt identifier of the transaction
          example: R51.3
        state:
          "$ref": "#/components/schemas/pms-integrationTransactionStateEnum"
        pmsConsumers:
          type: array
          description: 'PMS Guests information

            '
          items:
            "$ref": "#/components/schemas/pms-integrationPmsConsumerDto"
        transactionId:
          type: string
          description: The fiscal identifier of the transaction
          example: A1234.5
        transactionUuid:
          type: string
          description: The uuid of the transaction
          example: 4dd30456-a6b3-48ed-b435-46fd472a1234
        requestStates:
          type: array
          items:
            "$ref": "#/components/schemas/pms-integrationRequestStateDto"
        totalAmount:
          type: number
          description: The total amount of the transaction
          example: 100.0
        openDate:
          type: string
          format: date-time
          description: The date and time when the transaction was opened in UTC
          example: '2021-01-01T00:00:00Z'
        closeDate:
          type: string
          format: date-time
          description: The date and time when the transaction was closed in UTC
          example: '2021-01-01T00:00:00Z'
        isPmsCharge:
          type: boolean
          description: Whether the transaction is a PMS charge (Room Charge) instead
            of mirroring transaction.
          example: true
        isPosSide:
          type: boolean
          description: Whether the transaction is a POS side PMS.
          example: false
    pms-integrationPmsConsumerDto:
      type: object
      properties:
        paymentUuid:
          type: string
          description: The payment UUID linked to the guest
          example: f55f59cc-9a4d-489a-a57b-1c77161d9be8
        reservationId:
          type: string
          description: The reservation ID of the guest. Can be a room number, uuid,
            or any string depend on what provided by the PMS.
          example: '101'
        name:
          type: string
          description: The name of the guest.
          example: John Doe
        room:
          type: string
          description: The guest room number
          example: '101'
    pms-integrationTransactionStateEnum:
      type: string
      description: The state of the request
      example: SUCCESS
      enum:
      - INIT
      - BUILDING_REQUESTS
      - REQUESTS_CREATED
      - SUCCESS
      - FAILURE
      - CONFIG_FAILURE
      - INVALID_TX_FAILURE
      - SYSTEM_FAILURE
      - TIMEOUT
    pms-integrationRequestStateDto:
      type: object
      allOf:
      - "$ref": "#/components/schemas/pms-integrationRequestIdDto"
      properties:
        description:
          type: string
          description: The description of the request
        responseCode:
          type: integer
          description: The response code of the request
          example: 200
        updatedTime:
          type: string
          format: date-time
          description: The date and time when the request was updated in UTC
        requestState:
          "$ref": "#/components/schemas/pms-integrationRequestStateEnum"
    pms-integrationRequestIdDto:
      type: object
      properties:
        transactionUuid:
          type: string
          description: The transaction UUID
          example: f55f59cc-9a4d-489a-a57b-1c77161d9be8
        uuid:
          type: string
          description: |
            This could be the transaction UUID, like at LsPms or MEWS or the payment/sales line UUID like at Navision.
            Not unique on its own, but unique in combination with the requestType and transactionUuid.
          example: f55f59cc-9a4d-489a-a57b-1c77161d9be8
        requestType:
          "$ref": "#/components/schemas/pms-integrationRequestTypeEnum"
    pms-integrationRequestStateEnum:
      type: string
      description: The state of the request
      example: SUCCESS
      enum:
      - PENDING
      - SUCCESS
      - FAILURE
      - TIMEOUT
    pms-integrationRequestTypeEnum:
      type: string
      description: The type of the request
      example: MEWS_ORDER
      enum:
      -
      - APALEO_ACCOUNT
      - LSPMS_ACCOUNT
      - NAVISION_TRANSACTION
      - NAVISION_TRANSACTION_LINE_DISCOUNT
      - NAVISION_TRANSACTION_ACCOUNT_DISCOUNT
      - NAVISION_TRANSACTION_SURCHARGE
      - NAVISION_PAYMENT
      - MEWS_OUTLET_BILL
      - MEWS_ORDER
      - MEWS_CHARGE
      - MEWS_EXTERNAL_PAYMENT
      - MEWS_EXTERNAL_PAYMENT_TIP
    pms-integrationRetryChargesDto:
      type: object
      discriminator:
        propertyName: type
        mapping:
          byRequest: "#/components/schemas/pms-integrationRetryChargesByRequestDto"
          byTransaction: "#/components/schemas/pms-integrationRetryChargesByTransactionDto"
      required:
      - type
      description: 'Parameter and configuration to retry failed PMS charges.

        '
      properties:
        type:
          "$ref": "#/components/schemas/pms-integrationRetryChargeTypeEnum"
        config:
          "$ref": "#/components/schemas/pms-integrationRetryChargesConfigDto"
    pms-integrationRetryChargesConfigDto:
      type: object
      nullable: true
      description: |
        The configuration for the retry charges.
        If not provided, the default configuration value will be used.
      properties:
        sendPosTaskNotificationOnFailureRetry:
          type: boolean
          default: false
          description: |
            Whether to send POS task notification on failure retry.
            If true, POS task notification will be sent.
            Task notification message format will be based on the transaction itself.
          example: false
        maxRetryCount:
          type: integer
          default: 1
          minimum: 1
          maximum: 3
          description: |
            The number of retry count if the execution still failure.
            The maximum retry count is 3.
          example: 1
    pms-integrationRetryChargeTypeEnum:
      type: string
      description: The type of the retry request
      example: byRequest
      enum:
      - byRequest
      - byTransaction
    pms-integrationSortDirectionEnum:
      type: string
      description: The direction to sort the charges
      example: asc
      default: desc
      enum:
      - asc
      - desc
    pms-integrationTimeRangeFilter:
      type: object
      properties:
        startDate:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00Z'
          description: |
            The start date of the items to be processed.
            The date should be in UTC.
        endDate:
          type: string
          format: date-time
          example: '2024-05-31T00:00:00Z'
          description: |
            The end date of the items to be processed.
            The date should be in UTC
    pms-integrationPageMetadata:
      type: object
      properties:
        total:
          type: integer
          format: int64
          description: The total amount of elements.
          example: 500
        totalPages:
          type: integer
          format: int32
          description: The total number of total pages.
          example: 5
        current:
          type: object
          properties:
            page:
              type: integer
              format: int32
              description: The current page number.
            pageSize:
              type: integer
              format: int32
              description: The total number of elements in the current page.
    pms-integrationPmsReservationDto:
      type: object
      properties:
        roomId:
          type: string
          description: The room id
          example: '101'
        roomDescription:
          type: string
          description: The room description
        clientName:
          type: string
          description: The name of the guest
          example: John Doe
        reservationId:
          type: string
          description: The reservation ID of the guest. Can be a room number, uuid,
            or any string depend on what provided by the PMS.
          example: '101'
        blocked:
          type: boolean
          example: true
        creditLimit:
          type: number
          example: 100.0
    pos-config-apiDeviceTypeEnum:
      type: string
      enum:
      - POS
      - BackOffice
      - CustomerDisplay
      - TimeClock
      - KitchenDisplay
      - Ghost
    pos-config-apiDeviceShortDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        deviceType:
          "$ref": "#/components/schemas/pos-config-apiDeviceTypeEnum"
        isActive:
          type: boolean
        sharingScore:
          type: integer
          format: int32
    pos-config-apiDeviceLiteDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        deviceType:
          "$ref": "#/components/schemas/pos-config-apiDeviceTypeEnum"
        isActive:
          type: boolean
        sharingScore:
          type: integer
          format: int32
        status:
          "$ref": "#/components/schemas/pos-config-apiPosDeviceStatusDto"
    pos-config-apiPosDeviceStatusDto:
      type: object
      required:
      - configurationStatus
      properties:
        configurationStatus:
          enum:
          - RELOAD_REQUESTED
          - OUT_OF_SYNC
          - UP_TO_DATE
          type: string
        lastSynchronized:
          format: date-time
          type: string
    pos-config-apiPosConfigurationAccountProfilesDto:
      type: object
      properties:
        enabledAccountProfiles:
          description: Account profiles selected for configuration. AKA availableTagsIds
          type: array
          items:
            type: integer
            format: int64
        directSalesAccountProfileId:
          description: Account profile for direct sales. AKA defaultTagId
          type: integer
          format: int64
        tableOrderingAccountProfileId:
          description: Account profile for table ordering. AKA accountTagId
          type: integer
          format: int64
        directAskForAccountProfile:
          description: Require users to select an account profile for direct sales.
            When you enable this feature, the user has to select an order type for
            the sale, such as “Happy hour” or “Takeaway.” AKA directAskForTag
          type: boolean
        noDoneButtonAskAccountProfile:
          description: Skip confirmation when selecting account profile for direct
            sales. From the previous point, the validation step for the selection
            of the direct sales account profile is skipped. AKA noDoneButtonAskTag
          type: boolean
        remainOnCurrentOrderAfterSend:
          description: Remain on current order after tapping Send. Each time an order
            is sent, the cash register is by default in a waiting state for a new
            order. By activating this function, the booking order is called again
            and waits for new bookings. This is useful for businesses that offer goods
            and/or services before asking for payment. AKA reloadAccountOnCommit
          type: boolean
    pos-config-apiPosConfigurationMenuSettingsDto:
      type: object
      properties:
        menuId:
          description: Link menu to this POS configuration. AKA defaultMenuId
          type: integer
          format: int64
        showAllCapsNamesOnMainMenuButtonNames:
          description: Show button names for main menu screens in all caps. AKA showUppercaseNamesOnGroupButtons
          type: boolean
        showAllCapsNamesOnItemButtonNames:
          description: Show buttons names for items in all caps. AKA showUppercaseNamesOnItemButtons
          type: boolean
        showItemSearchButton:
          description: Show item search button on order screen. To quickly find items
            on the POS, display the item search button at the bottom of your Order
            screen. AKA showSearchButton
          type: boolean
    pos-config-apiPosConfigurationDiscountsAndLoyaltyCardsDto:
      type: object
      properties:
        discountsIds:
          description: Selected discounts Ids. AKA availableDiscountsIds
          type: array
          items:
            type: integer
            format: int64
        process3rdPartyQRCodes:
          description: Process 3rd-party QR codes. AKA serverSideLoyalty
          type: boolean
        loyaltyConsumerCardsMustBeIdentified:
          description: Users must link a loyalty card to a customer. Requires you
            to link loyalty cards to a customer record.
          type: boolean
    pos-config-apiPosConfigurationScreenSaverDto:
      type: object
      properties:
        screenSaver:
          description: Show a black screensaver when the POS is inactive.
          type: boolean
        screenSaverUsePhotos:
          description: Show photos from the POS device as a screensaver. When enabled,
            the screensaver includes photos on the POS device.
          type: boolean
    pos-config-apiPosConfigurationFloorPlanDto:
      type: object
      properties:
        floorPlanIds:
          description: Selected floor plans Ids. AKA availableSalesPointIds
          type: array
          items:
            type: integer
            format: int64
    pos-config-apiPosConfigurationOrderScreenDto:
      type: object
      properties:
        printEachDuplicateItemSeparateOnReceipt:
          description: Keep duplicate items separate on order screen. Even if there
            are multiple orders of the same item, each item will appear as a separate
            line on the customer receipt. AKA transactionNoMerge
          type: boolean
        mergeLineDetails:
          description: Merge duplicates with different production instructions onto
            one item line on order screen. Allows multiple-ordered items with production
            instructions to be merged on the same line. For instance, if a customer
            orders two lattes prepared two different ways, Latte will appear as one
            line with two separate production instructions underneath.
          type: boolean
        automaticTransactionForEachItem:
          description: Create automatic transactions for each item. The POS will print
            separate production tickets for each item. AKA singleItemReceipt
          type: boolean
        showTaxOnScreen:
          description: Show actual tax rate next to item name. On the POS Order screen,
            a tax rate is displayed next to the order item’s name.
          type: boolean
        deleteOnlyLastItem:
          description: Users can only delete the last item entered on the POS. This
            mode makes it impossible to delete items that are already sent on the
            POS. AKA secureRetailMode
          type: boolean
        lockScreenOnOpenDrawer:
          description: Lock order screen when cash drawer opens. When enabled, the
            POS order screen will lock when the cash drawer opens.
          type: boolean
        allowPutDirectSalesOnHold:
          description: The option lets pause an active order tied to the direct sale.
            The On Hold will appear after activating this function. AKA enableOnHoldButton
          type: boolean
    pos-config-apiPosConfigurationReportingDto:
      type: object
      properties:
        transactionTagIds:
          description: Select tags to allowed to apply to transactions.
          type: array
          items:
            type: integer
            format: int64
        reportIncludeItems:
          deprecated: true
          description: Include item details under product heading in POS reports.
            Include item statistics on POS reports.
          type: boolean
        reportDetailType:
          description: Select how item details under product heading in POS reports
            should look like.
          type: string
          enum:
          - NONE
          - ACCOUNTING_GROUPS
          - ACCOUNTING_GROUPS_AND_ITEMS
    pos-config-apiPosConfigurationStockDto:
      type: object
      required:
      - stockTransfers
      properties:
        stockTransfers:
          description: Stock transfers
          type: array
          items:
            "$ref": "#/components/schemas/pos-config-apiPosConfigurationStockTransferItemDto"
    pos-config-apiPosConfigurationStockTransferItemDto:
      type: object
      properties:
        transferFromStockId:
          type: integer
          format: int64
        transferToStockId:
          type: integer
          format: int64
    pos-config-apiPosConfigurationGeneralSettingsDto:
      type: object
      properties:
        accountProfiles:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationAccountProfilesDto"
        menuSettings:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationMenuSettingsDto"
        discountsAndLoyaltyCards:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationDiscountsAndLoyaltyCardsDto"
        screenSaver:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationScreenSaverDto"
        floorPlans:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationFloorPlanDto"
        orderScreen:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationOrderScreenDto"
        reporting:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationReportingDto"
        stock:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationStockDto"
        pmsParameterValues:
          type: array
          items:
            "$ref": "#/components/schemas/pos-config-apiPmsParameterValueDto"
    pos-config-apiPosConfigurationTableOptionsDto:
      type: object
      properties:
        defaultNumberOfCovers:
          description: Default number of covers for new orders. Enter the number of
            seats you want to assign to each table by default. AKA defaultClientCount
          type: integer
          format: int32
        defaultScreenAfterLogin:
          description: Select default screen to display after login. Select which
            screen to display right after login.
          type: string
          enum:
          - REGISTER
          - TABLE
          - ORDERS
        createDirectOrders:
          description: Create direct orders by default. This setting can be activated
            to be sure that you are not working in direct sales mode when processing
            orders. Instead, the cash register will open order with the name Direct.
            This is helpful if you wish to allow users to run tabs or edit an order
            before processing payment. By default, orders are opened with Direct Sale
            mode; unless they are assigned to a table or given a name, a user will
            need to process the payment for that order before opening another. AKA
            createDirectAccounts
          type: boolean
        numberOfDirectOrdersToCreate:
          description: Number of direct orders to create. Can only be set when Create
            direct orders if enabled. AKA directAccountsCount
          type: integer
          format: int32
        allowDirectSales:
          description: Allow direct sales. Users aren't required to assign an order
            to a table or a tab. Select this setting to allow pay-at-order flows on
            the POS. When enabled, orders can be opened in Direct Sale mode, but always
            assigned a table or name if dine-in is required. In Direct Sale mode,
            payments have to be completed immediately after sending an order to a
            prep station. AKA allowDirectSale
          type: boolean
        allowZeroCovers:
          description: Allow zero covers.
          type: boolean
        reserveTablesWhenOpened:
          description: Automatically reserve tables when opened. AKA commitEmptyTable
          type: boolean
        restrictedCoverNumberChange:
          description: Only managers can change the number of covers. Only managers
            can change guest counts. AKA disableCoverChange
          type: boolean
        restrictedTableTransfer:
          description: Only managers can transfer a table to another user. Managers
            are only permitted to transfer tables between employees.
          type: boolean
        requestContinuationButton:
          description: Show 'Fire course' button on order screen. Displays the button
            for firing the next course on the POS Order screen.
          type: boolean
        forbidAccessToOthersTables:
          description: Limits order taking to the user in charge of the table. Users
            cannot access tables opened by other users. AKA accountObjectProtection
          type: boolean
        startCoursingWithZero:
          description: User can start with course 0 (e.g. drinks) before starting
            with course 1 (e.g. starters)
          type: boolean
        enableDirectItems:
          description: User can fire items directly with direct items section.
          type: boolean
        autoFireFirstCourse:
          description: Allows user to configure if first course is automatically fired.
          type: boolean
    pos-config-apiPosConfigurationTableManagementDto:
      type: object
      properties:
        enableFullTableManagement:
          description: Enable full table management. AKA enableTableManagement
          type: boolean
        basicTableManagement:
          description: Enable basic table management. AKA trivialTableManagement
          type: boolean
        enableGroupOrdering:
          description: Enable the group ordering feature.
          type: boolean
        groupOrderingLowerTimeLimit:
          description: The lower time limit for group ordering.
          type: integer
          format: int32
        groupOrderingUpperTimeLimit:
          description: The upper time limit for group ordering.
          type: integer
          format: int32
        tableOptions:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationTableOptionsDto"
    pos-config-apiPosConfigurationPaymentMethodsDto:
      type: object
      properties:
        paymentMethodIds:
          description: Selected payment methods Ids. AKA availablePaymentMethodIds
          type: array
          items:
            type: integer
            format: int64
        defaultPaymentMethodId:
          description: Default payment method Id.
          type: integer
          format: int64
        alternatePaymentMethodId:
          description: Second payment method Id.
          type: integer
          format: int64
        preselectedPaymentMethodId:
          description: Preselected payment method Id.
          type: integer
          format: int64
    pos-config-apiPosConfigurationPaymentOptionsDto:
      type: object
      properties:
        amountPaidNotificationDuration:
          description: Select duration of amount paid notification. The amount is
            displayed as a banner at the POS after selecting the payment method. AKA
            showLargeAmountOnPay
          type: integer
          format: int32
        enableRefundOnPOS:
          description: Allow refund processing on POS. Users can process refunds on
            the POS. This is useful for processing returns and a deposit for glass
            bottles. AKA enableReturn
          type: boolean
        disableAutoChangeCalculationOnCash:
          description: Deactivate automatic change calculation on cash transactions.
            If this function is enabled, the change is not calculated automatically
            for cash payments. AKA disableChangeOnCash
          type: boolean
        allowSkipPaymentAmount:
          description: Skip amount prompt at payment. The totals screen isn't displayed,
            so you can finish the order quicker.
          type: boolean
        enableAdvancedCheckSplitting:
          description: Enable advanced check splitting. When selected, users can more
            easily divide and split bills on the POS app. Please note, the device
            must be using version 4.1.9 of the POS (K) app or later to use this feature.
            AKA enableAdvancedBillSplitting
          type: boolean
        captureSignatureOnTerminal:
          description: Capture signature when supported on terminal. When enabled,
            this allows for on-screen signatures (when supported by the payment terminal).
            AKA signOnScreenCreditCard
          type: boolean
        keypadNoCents:
          description: Allow only whole amounts on the payment keypad. Does not display
            options for entering cents on the keyboard.
          type: boolean
        activateQRCodeMoneyBackOnMealVoucher:
          description: Activate money back on meal vouchers. QR code generated to
            give holders a credit for the difference.
          type: boolean
    pos-config-apiPosConfigurationPredefinedTipAmountDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        amount:
          description: tip value in cents
          type: integer
          format: int32
          minimum: 1
    pos-config-apiPosConfigurationPredefinedTipPercentageDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
        percentage:
          description: tip percentage in percent * 100
          type: integer
          format: int32
          minimum: 1
    pos-config-apiPosConfigurationTipsDto:
      type: object
      properties:
        enableTippingOnTerminal:
          description: Enable tipping when supported on terminal. If your digital
            payment terminal offers direct tip adding, you can make use of it by enabling
            this feature. AKA askGratuityCreditCard
          type: boolean
        allowTippingAtPayment:
          description: Allow tipping at payment. Allows the user to add tips at the
            payment. AKA gratuityEnabled
          type: boolean
        allowTippingAfterPayment:
          description: Allows you to accept and tally tips after the receipt is paid.
            AKA deferredGratuity
          type: boolean
        enableGuestFacingTipping:
          description: Enable tipping for tap to pay on iPhone
          type: boolean
          default: false
        enablePredefinedTips:
          description: Enable showing predefined tip suggestion in the POS
          type: boolean
          default: false
        showPredefinedTipsOnPrintedReceipts:
          description: Show predefined tip suggestion on printed receipts
          type: boolean
          default: false
        showPredefinedTipsOnLsPayTerminals:
          description: Show predefined tip suggestion on LS Pay terminals
          type: boolean
          default: false
        calculateTipForTaxes:
          "$ref": "#/components/schemas/pos-config-apiTipCalculationMode"
        calculateTipForDiscounts:
          "$ref": "#/components/schemas/pos-config-apiTipCalculationMode"
        predefinedTipAmounts:
          description: Predefine some (3) tip amounts for users to quickly select
            from
          type: array
          items:
            "$ref": "#/components/schemas/pos-config-apiPosConfigurationPredefinedTipAmountDto"
          maxItems: 3
        predefinedTipPercentages:
          description: Predefine some (3) tip percentages for users to quickly select
            from
          type: array
          items:
            "$ref": "#/components/schemas/pos-config-apiPosConfigurationPredefinedTipPercentageDto"
          maxItems: 3
        predefinedTipsOption:
          description: show only amounts or only percentages or amounts below and
            percentages above a threshold
          type: string
          enum:
          - AMOUNTS
          - PERCENTAGES
          - THRESHOLD
        predefinedTipsThreshold:
          description: amount above which tips are shown as a percentage
          type: integer
          format: int32
    pos-config-apiPosConfigurationPaymentsDto:
      type: object
      properties:
        paymentMethods:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationPaymentMethodsDto"
        paymentOptions:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationPaymentOptionsDto"
        tips:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationTipsDto"
    pos-config-apiPosConfigurationProductionCentersDto:
      type: object
      properties:
        printOnProductionCenterIds:
          description: Production centers Ids for printing. AKA inverted doNotPrintOnProdCenterIds
          type: array
          items:
            type: integer
            format: int64
    pos-config-apiPosConfigurationAirprintDto:
      type: object
      properties:
        enableAirPrint:
          description: Enable AirPrint. This feature requires the use of an AirPrint-compatible
            printer.
          type: boolean
        airPrintDraftReceipt:
          description: Use AirPrint for draft receipts. This feature requires the
            use of an AirPrint compatible printer and activating the previous option.
            This function is useful, for example, if you print custom invoices.
          type: boolean
    pos-config-apiPosConfigurationPrintingDto:
      type: object
      properties:
        productionCenters:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationProductionCentersDto"
        airprint:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationAirprintDto"
    pos-config-apiPosConfigurationPrintingReceiptsDto:
      type: object
      properties:
        defaultPrinterProfileId:
          description: Default printing profile Id for receipts.
          type: integer
          format: int64
        defaultDraftsPrinterProfileId:
          description: Default printing profile Id used for draft receipts. AKA defaultNotePrinterProfileId
          type: integer
          format: int64
        autoPrintReceiptOnPaidOrders:
          description: Automatically print receipt on paid orders. The POS will print
            automatically a receipt when the account is closed and paid. AKA printReceiptOnCommit
          type: boolean
        autoPrintReceiptOnPaidTableOrders:
          description: Automatically print receipt on paid table orders. Automatically
            prints a receipt for table payments after payment. AKA printReceiptForTables
          type: boolean
        autoPrintReceiptWhenCardPaymentReceiptPrinted:
          description: Automatically print receipt when card payment receipts are
            printed. Automatically prints a receipt when a card payment receipt is
            printed as well. AKA printReceiptWhenSlip
          type: boolean
        autoPrintCardPaymentReceipts:
          description: Automatically print card payment receipts. POS will print a
            card payment receipt automatically if payment is processed by the POS.
            AKA alwaysPrintSlip
          type: boolean
        autoPrintReceiptWhenDeliverySlipsPrinted:
          description: Automatically print receipt when delivery slips are printed.
            POS will print a corresponding receipt automatically in addition to the
            delivery slip. AKA printReceiptWhenDelivery
          type: boolean
        printDraftReceiptsOnlyOnce:
          description: Print draft receipts only once. To prevent unnecessary wastage,
            a draft receipt can only be printed once. AKA singleDraftReceipt
          type: boolean
        printReceiptForEachPartialPayment:
          description: Print receipt for each partial payment. This function prints
            a receipt for each partial payment instead of printing a total receipt
            after the last partial payment for a split. AKA printPayReceipt
          type: boolean
    pos-config-apiPosConfigurationCustomizeReceiptsDto:
      type: object
      properties:
        receiptShowZeroPriceItems:
          description: Show items that have no price as free on customer receipts.
            With this function, items discounted by you to zero will be indicated
            on the receipt with the price FOR FREE instead of 0.00 €/£/$.
          type: boolean
        showConsumerAddressOnReceipt:
          description: Show customer address on receipts. Useful and/or necessary
            for deliveries. Displays the customer or delivery address.
          type: boolean
        showConsumerNameOnReceipt:
          description: Show customer name on receipts. Useful and/or necessary for
            take-away and deliveries. Displays the client's name.
          type: boolean
        showAccountProfileOnReceipt:
          description: Show the account profile on receipts. Display the account profile
            (order type) on the client receipt. AKA printTagOnReceipt
          type: boolean
        printPreTaxTotalOnReceipt:
          description: Show pre-tax total on receipt. Allows displaying the price
            without taxes on the client receipt. AKA printTaxExcludedTotalOnReceipt
          type: boolean
        printLargeTransactionLinesOnReceipt:
          description: Print transaction lines on receipt in large font. Increases
            the size of the item rows printed on the client receipt. AKA doubleHeightLines
          type: boolean
        printLargeTotalOnReceipt:
          description: Print total on receipt in large font. Allows you to enlarge
            the size of the total on the client's receipt. AKA largeTotalLine
          type: boolean
        printLargeServerNameOnReceipt:
          description: Print server name on receipt in large font. Displays the service
            name for the client. AKA largeStatusLine
          type: boolean
        forceIncludeDeliveryOnReceipt:
          description: Include delivery information on printed receipts. When you
            enable this function, the receipt will contain your customer's information
            for the delivery.
          type: boolean
        taxOnDraftReceipt:
          description: Include tax rate on draft receipts. To display the VAT on the
            draft receipts (the account is still open).
          type: boolean
        showCoversOnReceipt:
          description: Include cover count on receipts. Displays the number of customers
            for this order.
          type: boolean
        hidePriceOnCompDiscount:
          description: Don't include price on receipt when applying a comp discount.
            If this option is enabled, no price or information will be printed behind
            a 100 % discounted item.
          type: boolean
        receiptMergeSubItems:
          description: Group sub-items on receipts. When enabled, sub-items can be
            grouped together on receipts.
          type: boolean
        showDivisionHint:
          description: Divide the draft receipt total by the number of covers and
            print this on the receipt. Divide the final draft receipt total by the
            number of seats on the transaction and print this information on the receipt.
          type: boolean
        perSeatReceipt:
          description: Group items on receipt by seat. Allows you to group items by
            customer.
          type: boolean
        receiptNoMerge:
          description: Give each duplicate item its own line on receipts. Keep every
            item separate on the customer receipt. Even if there are multiple orders
            of the same item, each item will appear as a separate line on the customer
            receipt.
          type: boolean
        showReceiptHistoryForRefunds:
          description: Show receipt history on refund receipts. When enabled, the
            refund receipt will contain the complete receipt history.
          type: boolean
    pos-config-apiPosConfigurationDigitalReceiptsDto:
      type: object
      properties:
        enableDigitalReceipt:
          description: Enable digital receipts which lets customers download a digital
            receipt by scanning a QR code on the POS.
          type: boolean
    pos-config-apiPosConfigurationReceiptsDto:
      type: object
      properties:
        printingReceipts:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationPrintingReceiptsDto"
        customizeReceipts:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationCustomizeReceiptsDto"
        digitalReceipts:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationDigitalReceiptsDto"
    pos-config-apiPosConfigurationCustomizeDocketsDto:
      type: object
      properties:
        orderTicketShowContinuationItems:
          description: Print order summary on each continuation docket. In case you
            had to order several courses if this function is enabled all courses will
            be printed according to your order history.
          type: boolean
        orderTicketPrintPrice:
          description: Show the price of items on production dockets. Displays the
            price of the items on the production ticket.
          type: boolean
        orderTicketSeparator:
          description: Separate items with a divider on production dockets. Displays
            a line between order items.
          type: boolean
        showSubLinesInRed:
          description: 'Print sub-items in red. Prints sub-items in red (messages,
            side dishes, extras). NOTE: This settings requires a compatible printer
            with a red ink ribbon.'
          type: boolean
        noPrintForeignLines:
          description: Only print items and sub-items assigned to a production center.
            Only print items configured for the production center.
          type: boolean
        sortDocketLines:
          description: Sort items alphabetically by accounting group on production
            dockets. Sort lines on order tickets.
          type: boolean
        sortDocketLinesBySeat:
          description: Sort items by seat on production dockets. Sort lines (by seat)
            on order tickets.
          type: boolean
        mergeDuplicateItems:
          description: Show duplicate items as one line on production dockets. Merge
            duplicate items on production dockets. Allow multiple items to display
            as one line on order tickets, rather than individually. AKA smartDocket
          type: boolean
        docketShortLines:
          description: Shorten lines on production dockets. When enabled, lines can
            be shortened the lines on the order ticket.
          type: boolean
        singleItemOrderTicket:
          description: Print one item per production docket.
          type: boolean
        seatDetailsOnDocket:
          description: Show seat details on dockets. AKA perSeatOrderTicket
          type: boolean
        printAccountProfile:
          description: Show account profile on production dockets. AKA printTagOnDocket
          type: boolean
        docketCutBetweenCourses:
          description: Cut production dockets into separate courses.
          type: boolean
        printFloorPlanName:
          description: Print floor plan name on production dockets. AKA printSalesPointOnDocket
          type: boolean
        showConsumerAddressOnDocket:
          description: Show customer address on docket.
          type: boolean
        printCoversOnDocket:
          description: Print covers number on docket
          type: boolean
        printDocketOnTableTransfer:
          description: Print production docket when transferring table
          type: boolean
    pos-config-apiPosConfigurationProductionDocketsDto:
      type: object
      properties:
        customizeDockets:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationCustomizeDocketsDto"
    pos-config-apiPosConfigurationPosUserRulesDto:
      type: object
      properties:
        userIds:
          description: Available staffs Ids. AKA availableStaffIds
          type: array
          items:
            type: integer
            format: int64
        allowCancelAnyItem:
          description: Allow managers to cancel sent items. Management may cancel
            orders already sent to the production stations (Bar/Kitchen).
          type: boolean
        pincodeMenuButtonsProtection:
          description: Protect selection of menu buttons with manager pincode. AKA
            pincodeProtection
          type: boolean
        sendOrdersOnLogout:
          description: Send open orders on logout. Enable automatically sending the
            entered order to the appropriate production stations if the user logs
            out before sending the items. AKA commitOnLogout
          type: boolean
        showAllReceipts:
          description: Show receipts created by other users on the receipt screen.
            Allows you to view the receipts of other users.
          type: boolean
        blockClockOutWhenOpenTables:
          description: Users must settle open orders before clocking out. When enabled,
            open orders must be settled before closing a shift.
          type: boolean
        managersCannotOwnOrders:
          description: Managers cannot create or edit new orders. Members of POS's
            Manager user group cannot create new orders. AKA managerCannotOwnTransactions
          type: boolean
    pos-config-apiPosConfigurationAutomaticLogoutDto:
      type: object
      properties:
        autoLogoutMinutes:
          description: Set time for automatic user logout from the POS. Specify a
            time in minutes for when a user will be automatically logged out from
            the POS. AKA autoLogout
          type: integer
          format: int32
        forceLogoutAfterOrderUpdate:
          description: Log user out after order updates. When enabled, users are automatically
            logged out of the Order screen after processing a transaction. AKA forceLogout
          type: boolean
    pos-config-apiPosConfigurationPosUserSettingsDto:
      type: object
      properties:
        posUserRules:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationPosUserRulesDto"
        automaticLogout:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationAutomaticLogoutDto"
    pos-config-apiTimedEventsSettingsDto:
      type: object
      properties:
        eventNotificationMinutesBeforeStart:
          type: integer
          format: int32
          description: Minutes before the event to trigger notification on POS
    pos-config-apiPosConfigurationWriteDto:
      type: object
      properties:
        generalSettings:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationGeneralSettingsDto"
        tableManagement:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationTableManagementDto"
        payments:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationPaymentsDto"
        printing:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationPrintingDto"
        receipts:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationReceiptsDto"
        productionDockets:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationProductionDocketsDto"
        posUserSettings:
          "$ref": "#/components/schemas/pos-config-apiPosConfigurationPosUserSettingsDto"
        timedEvents:
          "$ref": "#/components/schemas/pos-config-apiTimedEventsSettingsDto"
    pos-config-apiPmsParameterValueDto:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
          description: Name of the PMS parameter value
          example: MEWS
        value:
          type: string
        options:
          type: array
          items:
            type: object
            properties:
              key:
                type: string
              value:
                type: string
        definition:
          type: object
          properties:
            provider:
              type: string
            type:
              type: string
              enum:
              - SELECT
              - STRING
              - LONG
            mandatory:
              type: boolean
    pos-config-apiLoginTokenBaseDto:
      type: object
      properties:
        description:
          type: string
          minLength: 0
          maxLength: 64
          description: The description of the token
        posConfigurationId:
          type: integer
          format: int64
          description: The POS configuration id
        deviceRole:
          "$ref": "#/components/schemas/pos-config-apiDeviceTypeEnum"
        remainingCredit:
          type: integer
          format: int32
          description: The remaining credit of the token, null if unlimited.
        forcePassive:
          type: boolean
          default: false
          description: Force the device to be passive
        noSharing:
          type: boolean
          default: false
          description: Force the device to not do any transaction sharing
        expirationDate:
          format: date-time
          type: string
          description: The expiration date of the token
      required:
      - description
      - posConfigurationId
    pos-config-apiTipCalculationMode:
      description: Calculate tip before/after taxes/discounts/...
      type: string
      enum:
      - BEFORE
      - AFTER
      default: AFTER
    pos-config-apiTimedMenuDto:
      type: object
      properties:
        activeDays:
          type: array
          items:
            "$ref": "#/components/schemas/pos-config-apiDayOfWeek"
          maxItems: 7
          minItems: 1
          uniqueItems: true
        endDate:
          type: string
          format: date
        endTime:
          type: string
          format: time
        id:
          type: integer
          format: int64
        menuId:
          type: integer
          format: int64
        name:
          type: string
        startDate:
          type: string
          format: date
        startTime:
          type: string
          format: time
      required:
      - activeDays
      - startDate
      - menuId
      - name
    pos-config-apiDayOfWeek:
      type: string
      enum:
      - MONDAY
      - TUESDAY
      - WEDNESDAY
      - THURSDAY
      - FRIDAY
      - SATURDAY
      - SUNDAY
    preferences-apiApiError:
      properties:
        code:
          type: string
        detail:
          type: string
        title:
          type: string
      type: object
    preferences-apiJsonDocument:
      type: object
      additionalProperties: true
    pulse-reporting-serviceUser:
      type: object
      additionalProperties: false
      required:
      - userId
      - firstName
      - lastName
      - email
      - authorities
      properties:
        userId:
          description: User ID
          type: integer
          format: int64
        firstName:
          description: First name
          type: string
        lastName:
          description: Last name
          type: string
        email:
          description: Email address
          type: string
        authorities:
          description: User authorities
          type: array
          items:
            type: string
    pulse-reporting-serviceUserBusiness:
      type: object
      additionalProperties: false
      required:
      - id
      - name
      - locale
      - status
      - currency
      - locations
      properties:
        id:
          description: Business ID
          type: integer
          format: int64
        name:
          description: Business Name
          type: string
        locale:
          description: Locale
          type: string
        status:
          description: Status
          type: string
        currency:
          description: Currency code
          type: string
        locations:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-reporting-serviceUserBusinessLocation"
    pulse-reporting-serviceUserBusinessLocation:
      type: object
      additionalProperties: false
      required:
      - id
      - name
      - timezone
      - country
      - startOfDay
      - active
      properties:
        id:
          description: Location ID
          type: integer
          format: int64
        name:
          description: Business location name
          type: string
        timezone:
          description: Business location timezone
          type: string
        country:
          description: Business location country
          type: string
        startOfDay:
          description: Start of day for the business location
          type: integer
          format: int64
        active:
          description: Business location active
          type: boolean
    pulse-reporting-serviceSalesRevenueRecord:
      type: object
      additionalProperties: false
      required:
      - interval
      - salesAmount
      properties:
        interval:
          description: The interval label (e.g. hour, day, week, month)
          type: string
        salesAmount:
          description: Cumulative sales amount up to this interval
          type: number
          format: double
    pulse-reporting-serviceSalesIntervalsData:
      type: object
      additionalProperties: false
      required:
      - intervalFrom
      - intervalTo
      - amount
      - contributionPercent
      properties:
        intervalFrom:
          description: Start of the interval
          type: string
          format: date-time
        intervalTo:
          description: End of the interval
          type: string
          format: date-time
        amount:
          description: Sales amount for this interval
          type: number
          format: double
        contributionPercent:
          description: This interval's contribution as a fraction of total (sums to
            1.0)
          type: number
          format: double
    pulse-reporting-serviceTopItem:
      type: object
      additionalProperties: false
      required:
      - name
      - amount
      - sold
      properties:
        name:
          description: Item name
          type: string
        amount:
          description: Total sales amount (dollars)
          type: number
          format: double
        sold:
          description: Quantity sold
          type: integer
          format: int64
    pulse-reporting-serviceAccountingGroupIntervalData:
      type: object
      additionalProperties: false
      required:
      - intervalFrom
      - intervalTo
      - top
      - others
      - amount
      properties:
        intervalFrom:
          description: Start of the interval
          type: string
          format: date-time
        intervalTo:
          description: End of the interval
          type: string
          format: date-time
        top:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-reporting-serviceAccountingGroupSaleRecord"
        others:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-reporting-serviceAccountingGroupSaleRecord"
        amount:
          description: Total sales amount for this interval
          type: number
          format: double
    pulse-reporting-serviceAccountingGroupTotals:
      type: object
      additionalProperties: false
      required:
      - top
      - others
      properties:
        top:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-reporting-serviceAccountingGroupSaleRecord"
        others:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-reporting-serviceAccountingGroupSaleRecord"
    pulse-reporting-serviceAccountingGroupSaleRecord:
      type: object
      additionalProperties: false
      required:
      - accountingGroupId
      - accountingGroupName
      - amount
      - contributionPercent
      properties:
        accountingGroupId:
          description: Accounting group identifier
          type: string
        accountingGroupName:
          description: Accounting group name
          type: string
        amount:
          description: Sales amount
          type: number
          format: double
        contributionPercent:
          description: Contribution as a fraction (0.45 means 45%)
          type: number
          format: double
    pulse-reporting-servicePosUserIntervalData:
      type: object
      additionalProperties: false
      required:
      - intervalFrom
      - intervalTo
      - top
      - others
      - amount
      properties:
        intervalFrom:
          description: Start of the interval
          type: string
          format: date-time
        intervalTo:
          description: End of the interval
          type: string
          format: date-time
        top:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-reporting-servicePosUserSaleRecord"
        others:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-reporting-servicePosUserSaleRecord"
        amount:
          description: Total sales amount for this interval
          type: number
          format: double
    pulse-reporting-servicePosUserTotals:
      type: object
      additionalProperties: false
      required:
      - top
      - others
      properties:
        top:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-reporting-servicePosUserSaleRecord"
        others:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-reporting-servicePosUserSaleRecord"
    pulse-reporting-servicePosUserSaleRecord:
      type: object
      additionalProperties: false
      required:
      - posUserId
      - posUserName
      - amount
      - contributionPercent
      properties:
        posUserId:
          description: POS user identifier
          type: string
        posUserName:
          description: POS user display name
          type: string
        amount:
          description: Sales amount
          type: number
          format: double
        contributionPercent:
          description: Contribution as a fraction (0.45 means 45%)
          type: number
          format: double
    pulse-reporting-serviceSalesAnalysisRecord:
      type: object
      additionalProperties: false
      required:
      - amount
      - diffAmount
      - diffPercent
      - favorabilityIsPositive
      properties:
        amount:
          type: number
          format: double
        diffAmount:
          type: number
          format: double
        diffPercent:
          type: number
          format: double
        favorabilityIsPositive:
          type: boolean
    pulse-reporting-serviceLocationContribution:
      type: object
      additionalProperties: false
      required:
      - sales
      properties:
        sales:
          "$ref": "#/components/schemas/pulse-reporting-serviceLocationAnalysisRecord"
    pulse-reporting-serviceLocationAnalysisRecord:
      type: object
      additionalProperties: false
      required:
      - amount
      - diffAmount
      - diffPercent
      - favorabilityIsPositive
      - contributionPercent
      properties:
        amount:
          type: number
          format: double
        diffAmount:
          type: number
          format: double
        diffPercent:
          type: number
          format: double
        favorabilityIsPositive:
          type: boolean
        contributionPercent:
          type: number
          format: double
    pulse-serviceProblemDetail:
      type: object
      description: RFC 7807 Problem Details for HTTP APIs
      properties:
        type:
          type: string
          description: A URI reference that identifies the problem type
          example: about:blank
        title:
          type: string
          description: A short, human-readable summary of the problem type
          example: Invalid Request
        status:
          type: integer
          description: The HTTP status code
          example: 400
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence
          example: The request is invalid
        instance:
          type: string
          description: A URI reference that identifies the specific occurrence
          example: "/checklists/v1/admin/business-location/123/checklist-definitions"
        details:
          type: string
          description: Additional details about the error
          example: Validation failed for field 'name'
      required:
      - status
      - title
    pulse-serviceCheckListItemDto:
      type: object
      properties:
        message:
          type: string
          description: Test string response
          example: Hello, World!
    pulse-serviceChecklistDefinitionBasic:
      type: object
      required:
      - name
      - tasks
      - dueTime
      - dueDays
      - userTags
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
          description: Name of the checklist definition
          example: Daily Opening Checklist
        tasks:
          type: array
          minItems: 1
          maxItems: 255
          description: List of checklist tasks
          items:
            "$ref": "#/components/schemas/pulse-serviceChecklistTaskDefinitionCreate"
        dueTime:
          type: string
          minLength: 5
          maxLength: 8
          description: Time when the checklist is due
          example: '09:00:00'
        dueDays:
          type: array
          uniqueItems: true
          description: Days of the week when the checklist is due (two-letter abbreviations)
          items:
            type: string
          example:
          - Mo
          - We
          - Fr
        roles:
          type: array
          uniqueItems: true
          deprecated: true
          description: Roles (POS user group) ids responsible for the checklist. Deprecated
            - use userTags instead
          items:
            type: string
          example:
          - '10'
          - '11'
        visibility:
          "$ref": "#/components/schemas/pulse-serviceVisibilityEnumDto"
        notifications:
          "$ref": "#/components/schemas/pulse-serviceChecklistNotificationsDto"
        userTags:
          type: array
          uniqueItems: true
          description: User tag IDs associated with this checklist
          minItems: 1
          items:
            type: integer
            format: int64
          example:
          - 1
          - 2
          - 3
        businessLocationIds:
          type: array
          uniqueItems: true
          description: List of business location IDs where the checklist applies.
          items:
            type: integer
            format: int64
          example:
          - 123
          - 456
    pulse-serviceChecklistTaskDefinitionCreate:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
          description: Name of the task
          example: Clean the entrance area
        description:
          type: string
          default: ''
          maxLength: 500
          description: Detailed description of the task
          example: Clean all glass surfaces and sweep the floor at the entrance
        index:
          type: integer
          format: int32
          maximum: 32767
          description: Deprecated! Index of the task. Used for sorting the task list
          example: 1
        temperature:
          "$ref": "#/components/schemas/pulse-serviceTemperatureDefinitionDto"
        multiChoice:
          "$ref": "#/components/schemas/pulse-serviceMultiChoiceDefinitionDto"
        shortAnswerRequired:
          type: boolean
          default: false
          description: Flag if short answer is required for the task
          example: true
        imageRequired:
          type: boolean
          default: false
          description: Flag if image is required for the task
          example: false
        signatureRequired:
          type: boolean
          default: false
          description: Flag if signature is required for the task
          example: false
        count:
          "$ref": "#/components/schemas/pulse-serviceCountDefinitionDto"
    pulse-serviceChecklistNotificationsDto:
      type: object
      properties:
        onCompleteEmail:
          "$ref": "#/components/schemas/pulse-serviceChecklistNotificationSettingsDto"
        onLateIncompleteEmail:
          "$ref": "#/components/schemas/pulse-serviceChecklistNotificationSettingsDto"
    pulse-serviceChecklistNotificationSettingsDto:
      type: object
      properties:
        enabled:
          type: boolean
          default: false
          description: Flag indicating if this notification type is enabled
          example: true
        recipients:
          type: array
          description: List of notification recipients
          items:
            "$ref": "#/components/schemas/pulse-serviceChecklistNotificationRecipientDto"
    pulse-serviceChecklistNotificationRecipientDto:
      type: object
      required:
      - userId
      properties:
        userId:
          type: integer
          format: int64
          description: User ID of the notification recipient
          example: 12345
    pulse-serviceChecklistTaskDefinitionFull:
      allOf:
      - "$ref": "#/components/schemas/pulse-serviceChecklistTaskDefinitionCreate"
      - type: object
        properties:
          id:
            type: integer
            format: int64
            description: Unique identifier for the checklist task
            example: 1
    pulse-serviceChecklistTaskInstanceDto:
      type: object
      required:
      - id
      - name
      - description
      - completed
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier for the checklist task
          example: 1
        name:
          type: string
          description: Name of the task
          example: Clean the entrance area
        description:
          type: string
          description: Detailed description of the task
          example: Clean all glass surfaces and sweep the floor at the entrance
        index:
          type: integer
          format: int32
          description: Deprecated. Index of the task. Used for sorting the task list
          example: 1
        completed:
          type: boolean
          description: Whether the task is completed
          example: false
        updateTime:
          type: string
          format: date-time
          description: Date and time when the task was last updated
          example: '2023-07-10T08:45:00Z'
        temperature:
          "$ref": "#/components/schemas/pulse-serviceTemperatureInstanceDto"
        multiChoice:
          "$ref": "#/components/schemas/pulse-serviceMultiChoiceInstanceDto"
        shortAnswer:
          "$ref": "#/components/schemas/pulse-serviceShortAnswerInstanceDto"
        image:
          "$ref": "#/components/schemas/pulse-serviceTaskInstanceImageDto"
        signature:
          "$ref": "#/components/schemas/pulse-serviceTaskInstanceSignatureDto"
        comment:
          type: string
          description: Optional comment. No more than 1024 characters.
          example: The task is finished in time
        count:
          "$ref": "#/components/schemas/pulse-serviceCountInstanceDto"
        userId:
          type: integer
          format: int64
          description: id of user/staff member who completed the task
          example: 123
    pulse-serviceChecklistInstanceShortDto:
      type: object
      required:
      - id
      - name
      - dueTime
      - completed
      - tasksTotal
      - tasksCompleted
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier for the checklist instance
          example: 1
        name:
          type: string
          description: Name of the checklist instance
          example: Daily Opening Checklist
        dueTime:
          type: string
          format: date-time
          description: Date and time when the checklist is due
          example: '2023-07-10T09:00:00Z'
        completed:
          type: boolean
          description: Whether the checklist is completed
          example: false
        tasksTotal:
          type: integer
          format: int32
          description: Total number of tasks in the checklist instance
          example: 5
        tasksCompleted:
          type: integer
          format: int32
          description: Number of completed tasks in the checklist instance
          example: 2
        completedTime:
          type: string
          format: date-time
          description: Date and time when the checklist was completed
          example: '2023-07-10T09:30:00Z'
        visibility:
          "$ref": "#/components/schemas/pulse-serviceVisibilityEnumDto"
        userTagIds:
          type: array
          uniqueItems: true
          description: User tag IDs associated with this checklist
          items:
            type: integer
            format: int64
          example:
          - 1
          - 2
          - 3
    pulse-serviceTemperatureDefinitionDto:
      type: object
      required:
      - unit
      properties:
        unit:
          "$ref": "#/components/schemas/pulse-serviceTemperatureUnitEnumDto"
        minValue:
          type: number
          format: double
          description: Minimum temperature value
          example: 2.0
        maxValue:
          type: number
          format: double
          description: Maximum temperature value
          example: 8.0
    pulse-serviceCountDefinitionDto:
      type: object
      required:
      - unit
      - parValue
      properties:
        unit:
          "$ref": "#/components/schemas/pulse-serviceCountUnitEnumDto"
        parValue:
          type: number
          format: double
          description: Current par value
          example: 5.0
    pulse-serviceTemperatureInstanceDto:
      allOf:
      - "$ref": "#/components/schemas/pulse-serviceTemperatureDefinitionDto"
      - type: object
        properties:
          value:
            type: number
            format: double
            description: Current temperature value
            example: 5.0
          timestamp:
            type: string
            format: date-time
            description: Timestamp when the temperature was taken
            example: '2025-10-16T09:30:00Z'
          source:
            "$ref": "#/components/schemas/pulse-serviceTemperatureSourceEnumDto"
    pulse-serviceCountInstanceDto:
      allOf:
      - "$ref": "#/components/schemas/pulse-serviceCountDefinitionDto"
      - type: object
        properties:
          value:
            type: number
            format: double
            description: Current count
            example: 5.0
    pulse-serviceTemperatureInstanceSubmitDto:
      type: object
      properties:
        value:
          type: number
          format: double
          description: Current temperature value
          example: 5.0
        timestamp:
          type: string
          format: date-time
          description: Timestamp when the temperature was taken
          example: '2025-10-16T09:30:00Z'
        source:
          "$ref": "#/components/schemas/pulse-serviceTemperatureSourceEnumDto"
    pulse-serviceTemperatureSourceEnumDto:
      type: string
      enum:
      - MANUAL
      - BLUETOOTH
      description: Temperature source
      example: MANUAL
    pulse-serviceTemperatureUnitEnumDto:
      type: string
      enum:
      - C
      - F
      description: Temperature unit
      example: C
    pulse-serviceCountUnitEnumDto:
      type: string
      enum:
      - POUND
      - OUNCE
      - QUART
      - EACH
      - LITER
      - KILOGRAM
      - CASE
      - PINT
      - CUP
      - UNIT
      description: Count unit
      example: POUND
    pulse-serviceVisibilityEnumDto:
      type: string
      enum:
      - ALL_DAY
      - AM
      - PM
      description: visibility settings for each checklist (ALL_DAY / AM / PM), so
        that staff only see the relevant checklists based on the time of day.
      example: ALL_DAY
      default: ALL_DAY
    pulse-serviceImageUploadDto:
      type: object
      required:
      - type
      properties:
        type:
          "$ref": "#/components/schemas/pulse-serviceFileUploadTypeDto"
        imageData:
          type: string
          format: byte
          description: Base64-encoded compressed image data. If type is 'UPLOAD' -
            this field must not be null If type is 'KEEP' - this field will be ignored
        metadata:
          "$ref": "#/components/schemas/pulse-serviceImageMetadataDto"
    pulse-serviceImageMetadataDto:
      type: object
      properties:
        contentType:
          type: string
          description: MIME type of the image
          example: image/jpeg
        originalSizeMB:
          type: number
          format: double
          description: Original image size in megabytes before compression
          example: 2.45
        compressedSizeMB:
          type: number
          format: double
          description: Image size in megabytes after compression (only present if
            image was compressed)
          example: 0.98
        compressionTimeMs:
          type: number
          format: double
          description: Time taken to compress the image in milliseconds (only present
            if image was compressed)
          example: 125.5
    pulse-serviceSignatureUploadDto:
      type: object
      required:
      - type
      properties:
        type:
          "$ref": "#/components/schemas/pulse-serviceFileUploadTypeDto"
        signatureData:
          type: string
          format: byte
          description: Base64-encoded signature image data. If type is 'UPLOAD' -
            this field must not be null If type is 'KEEP' - this field will be ignored
    pulse-serviceFileUploadTypeDto:
      type: string
      enum:
      - UPLOAD
      - KEEP
    pulse-serviceMultiChoiceDefinitionDto:
      type: object
      required:
      - type
      properties:
        type:
          "$ref": "#/components/schemas/pulse-serviceMultiChoiceTypeEnumDto"
        options:
          type: array
          description: List of choice options
          minItems: 2
          items:
            "$ref": "#/components/schemas/pulse-serviceMultiChoiceOptionDto"
    pulse-serviceMultiChoiceTypeEnumDto:
      type: string
      enum:
      - EMBEDDED
      - REFERENCE
      description: Type of multi-choice definition. REFERENCE is not supported yet
      example: EMBEDDED
    pulse-serviceMultiChoiceInstanceDto:
      allOf:
      - "$ref": "#/components/schemas/pulse-serviceMultiChoiceDefinitionDto"
      - type: object
        properties:
          selectedOption:
            "$ref": "#/components/schemas/pulse-serviceMultiChoiceOptionDto"
    pulse-serviceMultiChoiceOptionDto:
      type: object
      required:
      - value
      properties:
        value:
          type: string
          description: Option value
          example: 'Yes'
          minLength: 1
    pulse-serviceMultiChoiceSubmitDto:
      type: object
      required:
      - selectedOption
      properties:
        selectedOption:
          "$ref": "#/components/schemas/pulse-serviceMultiChoiceOptionDto"
    pulse-serviceShortAnswerInstanceDto:
      type: object
      properties:
        value:
          type: string
          description: The short answer value
          example: All surfaces cleaned
    pulse-serviceTaskInstanceImageDto:
      type: object
      properties:
        imageUrl:
          type: string
          description: Signed URL of the image that can be accessed to view the uploaded
            image
          example: http://s3/pulse/checklists/images/1/2025-05-05/image-a81bc81b-dead-4e5d-abff-90865d1e13b1.jpeg
        imageKey:
          type: string
          description: Plain (not signed) URL of the image stored in S3. This is the
            permanent reference to the image file and differs from imageUrl which
            is a temporary signed URL.
          example: pulse/checklists/images/1/2025-05-05/image-a81bc81b-dead-4e5d-abff-90865d1e13b1.jpeg
    pulse-serviceTaskInstanceSignatureDto:
      type: object
      properties:
        signatureUrl:
          type: string
          description: Signed URL of the signature that can be accessed to view the
            uploaded signature
          example: http://s3/pulse/checklists/signatures/1/2025-05-05/signature-a81bc81b-dead-4e5d-abff-90865d1e13b1.jpeg
        signatureKey:
          type: string
          description: Plain (not signed) URL of the signature stored in S3. This
            is the permanent reference to the signature file and differs from signatureUrl
            which is a temporary signed URL.
          example: pulse/checklists/signatures/1/2025-05-05/signature-a81bc81b-dead-4e5d-abff-90865d1e13b1.jpeg
    pulse-serviceChecklistReportScoringDto:
      type: object
      required:
      - definitionId
      - definitionName
      - instancesTotal
      - instancesCompleted
      - tasksTotal
      - tasksCompleted
      properties:
        definitionId:
          type: integer
          format: int64
          description: Unique identifier of the checklist definition
          example: 1
        definitionName:
          type: string
          description: Name of the checklist definition
          example: Morning checklist
        dueTime:
          type: string
          description: Time when the checklist is due
          example: '09:00:00'
        instancesTotal:
          type: integer
          format: int32
          description: Total number of checklist instances
          example: 10
        instancesCompleted:
          type: integer
          format: int32
          description: Number of completed checklist instances
          example: 7
        tasksTotal:
          type: integer
          format: int32
          description: Total number of tasks across all instances
          example: 50
        tasksCompleted:
          type: integer
          format: int32
          description: Number of completed tasks across all instances
          example: 35
        userTagIds:
          type: array
          uniqueItems: true
          description: User tag IDs associated with this checklist
          items:
            type: integer
            format: int64
          example:
          - 1
          - 2
          - 3
    pulse-serviceScheduledReportConfigDto:
      type: object
      required:
      - enabled
      - reportType
      - schedule
      properties:
        enabled:
          type: boolean
          description: Whether checkpoint reports are enabled
          example: true
        reportType:
          type: string
          enum:
          - CHECKPOINT
          - DAILY
          - WEEKLY
          description: Type of report schedule
          example: CHECKPOINT
        schedule:
          "$ref": "#/components/schemas/pulse-serviceReportScheduleDto"
    pulse-serviceReportScheduleDto:
      type: object
      properties:
        times:
          type: array
          uniqueItems: true
          items:
            type: string
            pattern: "^([01]?[0-9]|2[0-3]):[0-5][0-9]$"
          description: Times of day for checkpoint emails (HH:MM format)
          example:
          - '11:00'
          - '14:30'
          - '17:00'
          - '22:30'
          maxItems: 10
        recipients:
          type: array
          uniqueItems: true
          items:
            type: integer
            format: int64
          description: List of user IDs as email recipients
          maxItems: 20
        locationRecipients:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-serviceLocationRecipientsDto"
          description: List of location-based recipients. Only used for DAILY and
            WEEKLY reports.
          maxItems: 20
    pulse-serviceLocationRecipientsDto:
      type: object
      required:
      - businessLocationId
      - enabled
      - recipients
      properties:
        businessLocationId:
          type: integer
          format: int64
          description: Business location ID
          example: 123
        enabled:
          type: boolean
          description: Whether this location's recipients are enabled for the report
          default: false
          example: false
        recipients:
          type: array
          uniqueItems: true
          items:
            type: integer
            format: int64
          description: List of user IDs as email recipients for this location
          maxItems: 20
          example:
          - 100
          - 200
          - 300
    pulse-serviceChecklistInstancesLocationSummary:
      type: object
      required:
      - businessLocationId
      - totalTasks
      - completedTasks
      properties:
        businessLocationId:
          type: integer
          format: int64
          description: Business location identifier
          example: 123
        totalTasks:
          type: integer
          format: int64
          description: Total number of tasks for this location
          example: 125
        completedTasks:
          type: integer
          format: int64
          description: Number of completed tasks for this location
          example: 100
    pulse-serviceChecklistDefinitionLiteDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier for the checklist definition
          example: 1
        name:
          type: string
          description: Name of the checklist definition
          example: Daily Opening Checklist
        businessLocationIds:
          type: array
          uniqueItems: true
          description: List of business location IDs where the checklist applies
          items:
            type: integer
            format: int64
          example:
          - 123
          - 456
        userTags:
          type: array
          uniqueItems: true
          description: User tag IDs associated with this checklist
          items:
            type: integer
            format: int64
          example:
          - 1
          - 2
          - 3
        dueDays:
          type: array
          uniqueItems: true
          description: Days of the week when the checklist is due (two-letter abbreviations)
          items:
            type: string
          example:
          - Mo
          - We
          - Fr
        dueTime:
          type: string
          description: Time when the checklist is due
          example: '09:00'
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when the checklist definition was last updated
          example: '2025-10-16T09:30:00Z'
    pulse-serviceUserTagDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The id of the tag
          example: 1234
        name:
          type: string
          maxLength: 255
          description: The name of the tag
          example: Bartender
    pulse-serviceUserTagWithUserIdsDto:
      allOf:
      - "$ref": "#/components/schemas/pulse-serviceUserTagDto"
      - type: object
        properties:
          staffIds:
            type: array
            description: Ids of staff associated with specific tag
            items:
              type: integer
              format: int64
            example:
            - 123
            - 456
    pulse-serviceUserTagLiteDto:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 255
          description: The name of the user tag.
          example: Bartender
    pulse-servicePageDto:
      type: object
      properties:
        data:
          type: object
          description: The data content of the page - specific structure defined by
            each endpoint
        metadata:
          "$ref": "#/components/schemas/pulse-servicePageInfo"
    pulse-servicePageInfo:
      type: object
      properties:
        page:
          type: integer
          example: 0
          description: The current page number (0-based)
        size:
          type: integer
          example: 30
          description: The number of elements in the page
        totalElements:
          type: integer
          format: int64
          example: 150
          description: The total number of elements
        totalPages:
          type: integer
          example: 5
          description: The total number of pages
    pulse-serviceUserTagSummaryDto:
      type: object
      required:
      - id
      - name
      - userCount
      - checklistDefinitionCount
      properties:
        id:
          type: integer
          format: int64
          description: The id of the tag
          example: 1234
        name:
          type: string
          description: The name of the tag
          example: Bartender
        userCount:
          type: integer
          format: int64
          description: Number of users assigned to this tag
          example: 5
        checklistDefinitionCount:
          type: integer
          format: int64
          description: Number of checklist definitions using this tag
          example: 3
    pulse-serviceFeatureUpdateStatusDto:
      type: object
      required:
      - key
      - status
      properties:
        key:
          type: string
          maxLength: 255
          description: Feature identifier/name
          example: pulse.taskmanagement
        status:
          "$ref": "#/components/schemas/pulse-serviceFeatureStatusEnumUpdateDto"
        trialData:
          "$ref": "#/components/schemas/pulse-serviceTrialDataDto"
    pulse-serviceFeatureStatusEnumUpdateDto:
      type: string
      enum:
      - 'On'
      - 'Off'
      - PastDue
      - Suspended
      description: Feature status
    pulse-serviceTrialDataDto:
      type: object
      properties:
        isTrial:
          type: boolean
          description: Boolean flag indicating trial status
        pastDueAt:
          type: string
          format: date-time
          description: ISO 8601 datetime when trial expires
          example: '2025-12-31T23:59:59Z'
        suspendedAt:
          type: string
          format: date-time
          description: ISO 8601 datetime when feature was suspended (optional)
          example: '2025-01-15T10:30:00Z'
    pulse-serviceLocationFeaturesDto:
      type: object
      required:
      - features
      properties:
        businessLocationId:
          type: integer
          format: int64
          description: Business location ID
        features:
          type: array
          items:
            "$ref": "#/components/schemas/pulse-serviceFeatureStatusDto"
          description: List of features with their statuses
    pulse-serviceFeatureStatusDto:
      type: object
      required:
      - name
      - status
      - enabled
      properties:
        name:
          type: string
          description: Feature name
          example: CHECKLISTS
        status:
          "$ref": "#/components/schemas/pulse-serviceFeatureStatusEnumDto"
        enabled:
          type: boolean
          description: Whether the feature is enabled (false if status is OFF, true
            otherwise)
          example: true
    pulse-serviceFeatureStatusEnumDto:
      type: string
      enum:
      - 'ON'
      - 'OFF'
      - PAST_DUE
      - SUSPENDED
      description: Feature status
    quebec-fiscalLightspeedInfo:
      type: object
      properties:
        applicationIdentifier:
          example: '0000000000003201'
          type: string
          pattern: "^[0-9A-Fa-f]+$"
        applicationVersionIdentifier:
          example: 0000000000003FA1
          type: string
          pattern: "^[0-9A-Fa-f]+$"
        applicationCertificationCode:
          example: RBC202306005
          type: string
          pattern: "^[A-Za-z]{3}[0-9]{9}$"
        partnerIdentifier:
          example: 0000000000000C23
          type: string
          pattern: "^[0-9A-Fa-f]+$"
    quebec-fiscalTotalsRequest:
      type: object
      required:
      - year
      - timezone
      properties:
        year:
          type: integer
          format: int32
          minimum: 2000
          maximum: 2999
        timezone:
          type: string
          example: America/New_York
    quebec-fiscalTotalsData:
      type: object
      required:
      - transactionsCount
      - paymentTransactionsCount
      - transactionsTotal
      - transactionsSubTotal
      - adjustmentsTotal
      - totalAmountDue
      - gst
      - qst
      properties:
        transactionsCount:
          type: integer
          format: int64
        paymentTransactionsCount:
          type: integer
          format: int64
        transactionsSubTotal:
          type: integer
          format: int64
        transactionsTotal:
          type: integer
          format: int64
        adjustmentsTotal:
          type: integer
          format: int64
        totalAmountDue:
          type: integer
          format: int64
        gst:
          type: integer
          format: int64
        qst:
          type: integer
          format: int64
    quebec-fiscalFiscalReportDto:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
          example: '2024-01-01T00:00:00'
        documentNumber:
          type: string
        generatedById:
          type: string
        generatedByName:
          type: string
        deviceName:
          type: string
        deviceId:
          type: string
        fiscalYear:
          type: integer
          format: int32
        prints:
          type: array
          items:
            type: string
        texts:
          type: array
          items:
            type: string
        qrCodes:
          type: array
          items:
            type: string
    quebec-fiscalPagination:
      type: object
      properties:
        size:
          type: integer
          format: int32
        nextToken:
          type: string
          example: '1234567890'
          description: continuation token for pagination
    quebec-fiscalReceiptFiscalDataDto:
      type: object
      properties:
        receiptUuid:
          type: string
        fiscalData:
          "$ref": "#/components/schemas/quebec-fiscalFiscalData"
    quebec-fiscalFiscalData:
      type: object
      properties:
        transactionDate:
          type: string
        transactionNumber:
          type: string
        machineIdentifier:
          type: string
    reporting-serviceAccount:
      description: Data of the response
      nullable: true
      properties:
        accountDiscountAmounts:
          "$ref": "#/components/schemas/reporting-serviceDiscountAmounts"
        accountOriginId:
          description: Unique identifier for this account's parent
          type: string
        accountRefId:
          description: The original account this account is based from
          example: A12345.6
          type: string
        accountType:
          description: The type of account
          example: UPDATE
          type: string
        closeDate:
          description: String representing the date the account was closed
          example: '2021-04-06T07:04:08.014Z'
          type: string
        coversPow2:
          description: The number of covers associated with this account to the power
            of 2
          example: 400
          format: int32
          type: integer
        customer:
          "$ref": "#/components/schemas/reporting-serviceCustomer"
        gratuity:
          description: The total amount of gratuity on this account in cents as an
            integer
          example: 100
          format: int32
          type: integer
        hasTransfer:
          description: States if this Account has an Item Transferred to another Account
          type: boolean
        lineDiscountAmounts:
          "$ref": "#/components/schemas/reporting-serviceDiscountAmounts"
        meta:
          "$ref": "#/components/schemas/reporting-serviceMeta"
        onlineOrder:
          "$ref": "#/components/schemas/reporting-serviceOnlineOrder"
        owner:
          "$ref": "#/components/schemas/reporting-serviceStaff"
        payments:
          description: Contains payments information relating to the account
          items:
            "$ref": "#/components/schemas/reporting-servicePayment"
          type: array
        receiptTotal:
          description: Net sales  in cents as an integer
          example: 500
          format: int32
          type: integer
        salesPointName:
          description: The name of the sales point associated with this account
          example: Principal
          type: string
        salesPointObjId:
          description: The id of the sales point associated with this account
          example: '1718753610897'
          type: string
        tableNumber:
          description: The table number associated with this account
          example: 4
          format: int32
          type: integer
        taxAmount:
          description: The total amount of tax on this account as a String
          example: "-0.5"
          type: string
        transactions:
          description: Contains transaction information relating to the account
          items:
            "$ref": "#/components/schemas/reporting-serviceTransaction"
          type: array
      type: object
    reporting-serviceBaseWidgetRowDto:
      properties:
        name:
          type: string
        netSalesInCents:
          "$ref": "#/components/schemas/reporting-serviceTaxableAmountDto"
      type: object
    reporting-serviceBestHour:
      description: Best Hour
      properties:
        hour:
          type: string
        receiptsCount:
          format: int64
          type: integer
      type: object
    reporting-serviceBestSellingItem:
      properties:
        amountInCents:
          format: int64
          type: integer
        id:
          format: int64
          type: integer
        name:
          type: string
      type: object
    reporting-serviceBestSellingItems:
      description: Data of the response
      nullable: true
      properties:
        items:
          items:
            "$ref": "#/components/schemas/reporting-serviceBestSellingItem"
          type: array
      type: object
    reporting-serviceComparableAmount:
      properties:
        amountInCents:
          format: int64
          type: integer
        compareTo:
          "$ref": "#/components/schemas/reporting-serviceCompareToAmount"
      type: object
    reporting-serviceComparableAmountOverTime:
      properties:
        amountInCents:
          format: int64
          nullable: true
          type: integer
        compareToAmountInCents:
          format: int64
          nullable: true
          type: integer
        compareToDateTime:
          example: '2020-09-28T15:09:38-05:00'
          format: date-time
          type: string
        compareToRanking:
          description: Impression stars for compare to date
          format: int32
          maximum: 5
          minimum: 0
          type: integer
        compareToWeather:
          description: Weather rank for compare to date
          format: int32
          maximum: 6
          minimum: 0
          type: integer
        dateTime:
          example: '2020-09-28T15:09:38-05:00'
          format: date-time
          type: string
        ranking:
          description: Impression stars
          format: int32
          maximum: 5
          minimum: 0
          type: integer
        weather:
          description: Weather rank
          format: int32
          maximum: 6
          minimum: 0
          type: integer
      type: object
    reporting-serviceComparableCount:
      properties:
        compareTo:
          "$ref": "#/components/schemas/reporting-serviceCompareToCount"
        count:
          format: int64
          type: integer
      type: object
    reporting-serviceCompareToAmount:
      properties:
        amountInCents:
          format: int64
          type: integer
        percentDiff:
          type: number
      type: object
    reporting-serviceCompareToCount:
      properties:
        count:
          format: int64
          type: integer
        percentDiff:
          type: number
      type: object
    reporting-serviceCustomer:
      description: Contains customer information associated with the ticket
      properties:
        addressLine1:
          description: First line of consumer record address
          example: 32 Some Street
          type: string
        addressLine2:
          description: Second line of consumer record address
          example: Some Area
          type: string
        city:
          description: City of consumer record address
          example: Arlington
          type: string
        emailAddress:
          description: Consumer record email address
          example: joe@soap.com
          type: string
        firstName:
          description: Consumer record first name
          example: Joe
          type: string
        id:
          description: Unique identifier for this consumer record.
          example: '12345634567'
          type: string
        lastName:
          description: Consumer record last name
          example: Soap
          type: string
        phoneNumber1:
          description: Consumer record first phone number
          example: '848305036539'
          type: string
        phoneNumber2:
          description: Consumer record second phone number
          example: '534605036539'
          type: string
        state:
          description: State of consumer record address
          example: Virginia
          type: string
        zipCode:
          description: Consumer record zip code
          example: '234567'
          type: string
      type: object
    reporting-serviceDiscount:
      description: Object describing the Account Level Discount applied to this Transaction.
      properties:
        discountCode:
          description: The short code for discount applied to this Sale.
          example: 10PCT
          type: string
        discountComp:
          description: Financial amount this Sale has been Comped by.  Whole number
            by factor 100.
          example: 1000
          format: int32
          type: integer
        discountId:
          description: The discount identifier of the discount applied to this Sale.
          example: '116848880255009'
          type: string
        discountName:
          description: The name of discount applied to this Sale.  Whole number by
            factor 100.
          example: 10% discount
          type: string
        discountRegular:
          description: Financial amount this Sale has of a regular discount.  Whole
            number by factor 100.
          example: 1000
          format: int32
          type: integer
        discountType:
          description: The type of discount applied to this Sale.  Whole number by
            factor 100.
          example: DISCOUNT
          type: string
        discountVoid:
          description: Financial amount this Sale has been Voided.  Whole number by
            factor 100.
          example: 1000
          format: int32
          type: integer
      type: object
    reporting-serviceDiscountAmounts:
      description: An object containing the line total amounts of this account
      properties:
        discountComp:
          description: The total comp discount amount on this account in cents as
            an int
          example: 5000
          format: int32
          type: integer
        discountLoss:
          description: The total loss discount amount on this account in cents as
            an int
          example: 5000
          format: int32
          type: integer
        discountRegular:
          description: The total regular discount amount on this account in cents
            as an int
          example: 5000
          format: int32
          type: integer
        discountTotal:
          description: The total discount amount on this account in cents as an int
          example: 5000
          format: int32
          type: integer
      type: object
    reporting-serviceEmployeeReport:
      description: Data of the response
      nullable: true
      properties:
        collectedPerPaymentType:
          description: Collected per payment type
          items:
            "$ref": "#/components/schemas/reporting-servicePaymentTypeAmount"
          type: array
        grossSalesGrossAmountInCents:
          description: Gross sales gross amount in cents (including discounts and
            service charges, excluding voids)
          format: int64
          type: integer
        grossSalesNetAmountInCents:
          description: Gross sales Net amount in cents (including discounts and service
            charges, excluding voids)
          format: int64
          type: integer
        id:
          description: Employee id
          type: string
        name:
          description: Employee name
          type: string
        netSalesGrossAmountInCents:
          description: Net sales gross amount in cents
          format: int64
          type: integer
        netSalesNetAmountInCents:
          description: Net sales net amount in cents
          format: int64
          type: integer
        tipsByPaymentType:
          description: Tips per payment method
          items:
            "$ref": "#/components/schemas/reporting-servicePaymentTypeTips"
          type: array
        totalCollectedGrossAmountInCents:
          description: Total collected gross amount in cents
          format: int64
          type: integer
        totalCollectedNetAmountInCents:
          description: Total collected net amount in cents
          format: int64
          type: integer
        totalCollectedPerPaymentType:
          description: Total collected per payment type
          format: int64
          type: integer
        totalCollectedTipsByPaymentType:
          description: Total collected tips per payment method
          format: int64
          type: integer
      type: object
    reporting-serviceEmployeeReportByGroup:
      description: Data of the response
      nullable: true
      properties:
        groupReports:
          items:
            "$ref": "#/components/schemas/reporting-serviceGroupReport"
          type: array
        total:
          description: Total result
          format: int32
          type: integer
      type: object
    reporting-serviceEmployeeSummary:
      description: Data of the response
      nullable: true
      properties:
        bestHour:
          "$ref": "#/components/schemas/reporting-serviceBestHour"
        hoursWorkedInMinutes:
          description: Hours worked in minutes
          format: int64
          type: integer
        id:
          description: Employee id
          type: string
        name:
          description: Full name of employee
          type: string
        netSalesGrossAmountPerHourInCents:
          description: Gross average sales per working hour amount in cents
          format: int64
          type: integer
        netSalesGrossAmountPerReceiptInCents:
          description: Gross average sales per receipt amount in cents
          format: int64
          type: integer
        netSalesNetAmountPerHourInCents:
          description: Net average sales per working hour amount in cents
          format: int64
          type: integer
        netSalesNetAmountPerReceiptInCents:
          description: Net average sales per receipt amount in cents
          format: int64
          type: integer
        receiptsCount:
          description: Receipts count
          format: int32
          type: integer
      type: object
    reporting-serviceError:
      description: Errors of the response
      nullable: true
      properties:
        code:
          maxLength: 256
          type: string
        detail:
          type: string
        title:
          type: string
      required:
      - code
      type: object
    reporting-serviceFilterEntities:
      description: Data of the response
      nullable: true
      properties:
        accountProfiles:
          description: List of account profiles
          items:
            "$ref": "#/components/schemas/reporting-serviceFilterEntity"
          type: array
        accountingGroups:
          description: List of accounting groups
          items:
            "$ref": "#/components/schemas/reporting-serviceFilterEntity"
          type: array
        devices:
          description: List of devices
          items:
            "$ref": "#/components/schemas/reporting-serviceFilterEntity"
          type: array
        staffs:
          description: List of staffs
          items:
            "$ref": "#/components/schemas/reporting-serviceFilterEntity"
          type: array
        statisticGroupCategories:
          description: List of statistic group categories
          items:
            description: List of statistic group categories
            type: string
          type: array
      type: object
    reporting-serviceFilterEntity:
      description: List of account profiles
      properties:
        id:
          type: string
        name:
          type: string
      type: object
    reporting-serviceGroupReport:
      properties:
        grossSalesGrossAmountInCents:
          description: Gross sales gross amount in cents (including discounts and
            service charges, excluding voids)
          format: int64
          type: integer
        grossSalesNetAmountInCents:
          description: Gross sales Net amount in cents (including discounts and service
            charges, excluding voids)
          format: int64
          type: integer
        id:
          description: Group id
          type: string
        name:
          description: Group name
          type: string
        netSalesGrossAmountInCents:
          description: Net sales gross amount in cents
          format: int64
          type: integer
        netSalesNetAmountInCents:
          description: Net sales net amount in cents
          format: int64
          type: integer
        totalSalesGrossAmountInCents:
          description: Total sales gross amount in cents (including discounts and
            voids, excluding service charges)
          format: int64
          type: integer
        totalSalesNetAmountInCents:
          description: Total sales Net amount in cents (including discounts and voids,
            excluding service charges)
          format: int64
          type: integer
      type: object
    reporting-serviceGiftCardOperationsResponse:
      type: object
      properties:
        executionTimeInMs:
          description: Time taken by elasticsearch to execute the query
          format: int32
          type: integer
        timedOut:
          description: if the ES query request timed out
          type: boolean
        total:
          description: Total number of operations matching the query
          format: int64
          type: integer
        operations:
          description: List of gift card operations
          items:
            "$ref": "#/components/schemas/reporting-serviceGiftCardOperation"
          type: array
    reporting-serviceGiftCardOperation:
      type: object
      properties:
        giftAccountId:
          description: Gift account identifier
          type: string
          example: '1110704312549378'
        giftCardId:
          description: Gift card identifier
          type: string
          example: GC123456
        refillPaymentMethod:
          description: Payment method used for refill
          type: string
          example: Credit Card
        consumerRecordUUID:
          description: Consumer record UUID
          type: string
          example: 550e8400-e29b-41d4-a716-446655440000
        staffName:
          description: Name of the staff member who performed the operation
          type: string
          example: Manager
        fiscDate:
          description: Fiscal date of the operation
          type: string
          format: date-time
          example: '2023-08-24T08:25:07.064Z'
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss.SSSX")'
        paid:
          description: Amount paid in the operation
          type: number
          format: double
          example: 1300
        locationName:
          description: Name of the source location
          type: string
          example: Happy
        tip:
          description: Tip amount
          type: number
          format: double
          example: 0
    reporting-serviceItem:
      description: Object describing the Item in this Transaction.
      properties:
        accountingGroupName:
          description: This Category of this Item.
          example: Food
          type: string
        itemId:
          description: The item identifier.
          example: '116488103002179'
          type: string
        itemName:
          description: The name of the item.
          example: '116488103002179'
          type: string
        parentLineReferenceItemId:
          description: The identifier of this items parent.  If there is none this
            is null.
          example: '116488103002173'
          type: string
        qtyPow4:
          description: The quantity of the item. Whole number by factor 10000.
          example: 10000
          format: int32
          type: integer
        totalPrice:
          description: The Total Price of this Item. Whole number by factor 100.
          example: 1000
          format: int32
          type: integer
        type:
          description: This Type of this Transaction.eg 'SALE', 'VOID' or 'REFUND.
          example: SALE
          type: string
        typeReversal:
          description: This Type of this Transaction.eg 'SALE', 'VOID' or 'REFUND.
          type: boolean
        unitAmount:
          description: The amount of the item sold. Whole number by factor 100.
          example: 1000
          format: int32
          type: integer
        unitPrice:
          description: The Total Price of this Item. Whole number by factor 100.
          example: 1000
          format: int32
          type: integer
      type: object
    reporting-serviceLabourReport:
      properties:
        discountedAmountInCents:
          description: All discounted (discount, loss, offered, returned) items amount
            in cents
          format: int64
          type: integer
        discountedQuantity:
          description: All discounted (discount, loss, offered, returned) quantities
            rounded to 2 decimals for fractional quantities
          format: double
          type: number
        grossSalesGrossAmountInCents:
          description: Gross sales gross amount in cents (including discounts and
            service charges, excluding voids)
          format: int64
          type: integer
        grossSalesNetAmountInCents:
          description: Gross sales Net amount in cents (including discounts and service
            charges, excluding voids)
          format: int64
          type: integer
        hoursWorkedInMinutes:
          description: Hours worked in minutes
          format: int64
          type: integer
        id:
          description: Staff id
          type: string
        name:
          description: Staff name
          type: string
        netSalesGrossAmountInCents:
          description: Net sales gross amount in cents
          format: int64
          type: integer
        netSalesGrossAmountPerHourInCents:
          description: Gross average sales per working hour amount in cents
          format: int64
          type: integer
        netSalesGrossAmountPerReceiptInCents:
          description: Gross average sales per receipt amount in cents
          format: int64
          type: integer
        netSalesNetAmountInCents:
          description: Net sales net amount in cents
          format: int64
          type: integer
        netSalesNetAmountPerHourInCents:
          description: Net average sales per working hour amount in cents
          format: int64
          type: integer
        netSalesNetAmountPerReceiptInCents:
          description: Net average sales per receipt amount in cents
          format: int64
          type: integer
        receiptsCount:
          description: Receipts count
          format: int32
          type: integer
        serviceChargesAmountInCents:
          description: service charge amount in cents
          format: int64
          type: integer
        tipsAmountInCents:
          description: Tips amount in cents
          format: int64
          type: integer
        totalCollectedGrossAmountInCents:
          description: Total collected gross amount in cents
          format: int64
          type: integer
        totalCollectedNetAmountInCents:
          description: Total collected net amount in cents
          format: int64
          type: integer
        totalSalesGrossAmountInCents:
          description: Total sales gross amount in cents (including discounts and
            voids, excluding service charges)
          format: int64
          type: integer
        totalSalesNetAmountInCents:
          description: Total sales Net amount in cents (including discounts and voids,
            excluding service charges)
          format: int64
          type: integer
        voidAmountInCents:
          description: Void amount in cents
          format: int64
          type: integer
      type: object
    reporting-serviceLabourReportsList:
      description: Data of the response
      nullable: true
      properties:
        labourReports:
          items:
            "$ref": "#/components/schemas/reporting-serviceLabourReport"
          type: array
        total:
          description: Total result
          format: int32
          type: integer
      type: object
    reporting-serviceMeta:
      description: Object describing date, accountId, SequenceId and PersiodId.
      properties:
        accountId:
          description: Unique identifier of the Account.
          example: A12553.14
          type: string
        date:
          description: The date in UTC when this action occurred.
          example: '2021-03-25T16:37:21.701Z'
          type: string
        id:
          description: Unique identifier of this Object
          example: A12553.14
          type: string
        periodId:
          description: Identifier of the Period.
          example: SP12660.13.22
          type: string
        sod:
          description: The StartOfDay in UTC of the business location.
          example: '2021-03-25T05:30:00.000Z'
          type: string
      type: object
    reporting-serviceOnlineOrder:
      description: Contains online order information associated with the ticket
      properties:
        orderId:
          description: The Account ID of this order.
          example: A14618.1
          type: string
        source:
          description: The Source of this order. Known as 'Account Profile Information'
            in K-Series.
          example: Deliveroo
          type: string
        timePlaced:
          description: The date in UTC when this Account was opened.
          example: '2021-03-25T16:37:21.701Z'
          type: string
      type: object
    reporting-servicePayment:
      description: Contains payments information relating to the account
      properties:
        authorization:
          description: Authorization code of the card transaction, if card payment.
          example: '654321'
          type: string
        cardAlias:
          description: An Alias for the Credit Card, if card payment.
          example: FF0000
          type: string
        cardLastDigits:
          description: Last four digits of the credit card number, if card payment.
          example: '4321'
          type: string
        cardType:
          description: Card prefix. e.g. AMEX, DISC, VISA, MC
          example: AMEX
          type: string
        cardholderName:
          description: The name of the Credit Card Holder, if card payment.
          example: John Doe
          type: string
        currency:
          description: This currency of this Payment
          example: USD
          type: string
        meta:
          "$ref": "#/components/schemas/reporting-serviceMeta"
        origin:
          "$ref": "#/components/schemas/reporting-serviceReference"
        paid:
          description: The amount paid in this Payment. Whole number by factor 100.
          example: 1000
          format: int32
          type: integer
        paymentType:
          description: The Type of this Payment. eg 'PAYMENT', 'TRANSFER'.
          example: PAYMENT
          type: string
        pmType:
          description: Payment Method. eg 'CASH', 'CARD'
          example: CASH
          type: string
        reference:
          "$ref": "#/components/schemas/reporting-serviceReference"
        staffMember:
          "$ref": "#/components/schemas/reporting-serviceStaff"
        tip:
          description: The tip given in this Payment. Whole number by factor 100.
          example: 100
          format: int32
          type: integer
      type: object
    reporting-servicePaymentSummary:
      description: Data of the response
      nullable: true
      properties:
        accountId:
          type: string
        accountName:
          type: string
        deviceName:
          type: string
        paymentId:
          type: string
        receiptId:
          type: string
        reference:
          type: string
        staffName:
          type: string
      type: object
    reporting-servicePaymentTypeAmount:
      description: Collected per payment type
      properties:
        amount:
          description: Amount rounded to 2 decimals
          format: double
          type: number
        paymentType:
          type: string
      type: object
    reporting-servicePaymentTypeTips:
      description: Tips per payment method
      properties:
        paymentType:
          type: string
        tipsAmount:
          description: Amount of tips rounded to 2 decimals
          format: double
          type: number
      type: object
    reporting-serviceProduct:
      properties:
        accountingGroup:
          description: Accounting group name
          type: string
        costAmountInCents:
          description: Cost amount in cents
          format: int64
          type: integer
        discountedAmountInCents:
          description: Discounted amount in cents
          format: int64
          type: integer
        discountedQuantity:
          description: Discounted quantities rounded to 2 decimals for fractional
            quantities
          format: double
          type: number
        id:
          description: Product ID
          type: string
        includedCount:
          description: Included lines count
          format: int64
          type: integer
        lossAmountInCents:
          description: Loss amount in cents
          format: int64
          type: integer
        lossQuantity:
          description: Loss quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        marginGrossAmountInCents:
          description: Margin gross amount in cents
          format: int64
          type: integer
        marginNetAmountInCents:
          description: Margin net amount in cents
          format: int64
          type: integer
        name:
          description: Product name
          type: string
        netAmountInCents:
          description: Net amount in cents
          format: int64
          type: integer
        offeredAmountInCents:
          description: Offered amount in cents
          format: int64
          type: integer
        offeredQuantity:
          description: Offered quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        returnedAmountInCents:
          description: Returned amount in cents
          format: int64
          type: integer
        returnedQuantity:
          description: Returned quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        sequenceItems:
          description: List of sequence items in this sequence product
          items:
            "$ref": "#/components/schemas/reporting-serviceProductSequentialItem"
          type: array
        serviceChargeAmountInCents:
          description: Service charge amount in cents
          format: int64
          type: integer
        soldInASequence:
          "$ref": "#/components/schemas/reporting-serviceProductStatistics"
        soldIndividually:
          "$ref": "#/components/schemas/reporting-serviceProductStatistics"
        statisticGroupCategory:
          description: Statistic group category
          type: string
        taxAmountInCents:
          description: Tax amount in cents
          format: int64
          type: integer
        totalAmountInCents:
          description: Total gross amount in cents
          format: int64
          type: integer
        totalQuantity:
          description: Total quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        transactionGrossAmountInCents:
          description: Transaction gross amount in cents
          format: int64
          type: integer
        transactionNetAmountInCents:
          description: Transaction net amount in cents
          format: int64
          type: integer
        transactionQuantity:
          description: Transaction quantities rounded to 2 decimals for fractional
            quantities
          format: double
          type: number
        type:
          description: 'Product type: common product, sequence or no item transaction
            (created in back office)'
          enum:
          - ITEM
          - SEQUENCE
          - NO_ITEM
          - ITEM
          - SEQUENCE
          - NO_ITEM
          type: string
        zeroPricedQuantity:
          description: Zero priced quantities rounded to 2 decimals for fractional
            quantities
          format: double
          type: number
      type: object
    reporting-serviceProductGroupItem:
      properties:
        costAmountInCents:
          description: Cost amount in cents
          format: int64
          type: integer
        discountedAmountInCents:
          description: Discounted amount in cents
          format: int64
          type: integer
        discountedQuantity:
          description: Discounted quantities rounded to 2 decimals for fractional
            quantities
          format: double
          type: number
        id:
          type: string
        includedCount:
          description: Included lines count
          format: int64
          type: integer
        lossAmountInCents:
          description: Loss amount in cents
          format: int64
          type: integer
        lossQuantity:
          description: Loss quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        marginGrossAmountInCents:
          description: Margin gross amount in cents
          format: int64
          type: integer
        marginNetAmountInCents:
          description: Margin net amount in cents
          format: int64
          type: integer
        name:
          description: Product name
          type: string
        netAmountInCents:
          description: Net amount in cents
          format: int64
          type: integer
        offeredAmountInCents:
          description: Offered amount in cents
          format: int64
          type: integer
        offeredQuantity:
          description: Offered quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        returnedAmountInCents:
          description: Returned amount in cents
          format: int64
          type: integer
        returnedQuantity:
          description: Returned quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        serviceChargeAmountInCents:
          description: Service charge amount in cents
          format: int64
          type: integer
        statisticGroupCategory:
          description: Statistic group category
          type: string
        taxAmountInCents:
          description: Tax amount in cents
          format: int64
          type: integer
        totalAmountInCents:
          description: Total gross amount in cents
          format: int64
          type: integer
        totalQuantity:
          description: Total quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        transactionGrossAmountInCents:
          description: Transaction gross amount in cents
          format: int64
          type: integer
        transactionNetAmountInCents:
          description: Transaction net amount in cents
          format: int64
          type: integer
        transactionQuantity:
          description: Transaction quantities rounded to 2 decimals for fractional
            quantities
          format: double
          type: number
        zeroPricedQuantity:
          description: Zero priced quantities rounded to 2 decimals for fractional
            quantities
          format: double
          type: number
      type: object
    reporting-serviceProductSequentialItem:
      description: List of sequence items in this sequence product
      properties:
        id:
          description: Sequence item ID
          type: string
        name:
          description: Sequence item name
          type: string
        quantity:
          description: Sequence item sold quantity
          format: double
          type: number
      type: object
    reporting-serviceProductStatistics:
      description: Statistics about the item sequence sells (item sold as part of
        a sequence)
      properties:
        costAmountInCents:
          description: Cost amount in cents
          format: int64
          type: integer
        discountedAmountInCents:
          description: Discounted amount in cents
          format: int64
          type: integer
        discountedQuantity:
          description: Discounted quantities rounded to 2 decimals for fractional
            quantities
          format: double
          type: number
        includedCount:
          description: Included lines count
          format: int64
          type: integer
        lossAmountInCents:
          description: Loss amount in cents
          format: int64
          type: integer
        lossQuantity:
          description: Loss quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        marginGrossAmountInCents:
          description: Margin gross amount in cents
          format: int64
          type: integer
        marginNetAmountInCents:
          description: Margin net amount in cents
          format: int64
          type: integer
        name:
          description: Product name
          type: string
        netAmountInCents:
          description: Net amount in cents
          format: int64
          type: integer
        offeredAmountInCents:
          description: Offered amount in cents
          format: int64
          type: integer
        offeredQuantity:
          description: Offered quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        returnedAmountInCents:
          description: Returned amount in cents
          format: int64
          type: integer
        returnedQuantity:
          description: Returned quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        serviceChargeAmountInCents:
          description: Service charge amount in cents
          format: int64
          type: integer
        statisticGroupCategory:
          description: Statistic group category
          type: string
        taxAmountInCents:
          description: Tax amount in cents
          format: int64
          type: integer
        totalAmountInCents:
          description: Total gross amount in cents
          format: int64
          type: integer
        totalQuantity:
          description: Total quantities rounded to 2 decimals for fractional quantities
          format: double
          type: number
        transactionGrossAmountInCents:
          description: Transaction gross amount in cents
          format: int64
          type: integer
        transactionNetAmountInCents:
          description: Transaction net amount in cents
          format: int64
          type: integer
        transactionQuantity:
          description: Transaction quantities rounded to 2 decimals for fractional
            quantities
          format: double
          type: number
        zeroPricedQuantity:
          description: Zero priced quantities rounded to 2 decimals for fractional
            quantities
          format: double
          type: number
      type: object
    reporting-serviceProducts:
      description: Data of the response
      nullable: true
      properties:
        products:
          items:
            "$ref": "#/components/schemas/reporting-serviceProduct"
          type: array
        total:
          description: Total results
          format: int32
          type: integer
      type: object
    reporting-serviceProductsGroups:
      description: Data of the response
      nullable: true
      properties:
        productGroups:
          items:
            "$ref": "#/components/schemas/reporting-serviceProductGroupItem"
          type: array
        total:
          description: Total result
          format: int32
          type: integer
      type: object
    reporting-serviceReference:
      description: The reference of the original Transaction.
      properties:
        accountId:
          description: Unique identifier of the Account.
          example: A12553.14
          type: string
        lineId:
          description: Identifier of the Line.
          example: T14309.1
          type: string
      type: object
    reporting-serviceSalesOverTime:
      description: Data of the response
      nullable: true
      properties:
        grossRevenueOverTime:
          items:
            "$ref": "#/components/schemas/reporting-serviceComparableAmountOverTime"
          type: array
        interval:
          description: interval used to split data
          enum:
          - MONTH
          - DAY
          - HOUR
          type: string
      type: object
    reporting-serviceSalesOverview:
      description: Data of the response
      nullable: true
      properties:
        grossTotal:
          "$ref": "#/components/schemas/reporting-serviceComparableAmount"
        netTotal:
          "$ref": "#/components/schemas/reporting-serviceComparableAmount"
        openReceipts:
          "$ref": "#/components/schemas/reporting-serviceComparableCount"
        receipts:
          "$ref": "#/components/schemas/reporting-serviceComparableCount"
        taxTotal:
          "$ref": "#/components/schemas/reporting-serviceComparableAmount"
      type: object
    reporting-serviceSession:
      description: Data of the response
      nullable: true
      properties:
        closeDate:
          description: Close time of the session in UTC
          example: '2020-01-01T18:00:00Z'
          type: string
        openDate:
          description: Open time of the session in UTC
          example: '2020-01-01T17:00:00Z'
          type: string
        sessionDuration:
          description: Duration of the session in minutes
          example: 1175
          format: int64
          type: integer
        sessionUUID:
          description: Unique identifier of the session
          example: NA22x8xVS8Cs0n7rbCgi3A==
          type: string
        staff:
          "$ref": "#/components/schemas/reporting-serviceStaff"
      type: object
    reporting-serviceShiftPerformanceWidgetRowDto:
      properties:
        grossSalesInCents:
          "$ref": "#/components/schemas/reporting-serviceTaxableAmountDto"
        name:
          type: string
        netSalesInCents:
          "$ref": "#/components/schemas/reporting-serviceTaxableAmountDto"
      type: object
    reporting-serviceStaff:
      description: Object describing the Staff Member.
      properties:
        firstName:
          description: The first name of the Staff Member.
          example: Joe
          type: string
        groupId:
          description: The Job Title Id of the Staff Member.
          example: '12345'
          type: string
        groupName:
          description: The Group Name is the Job Title of the Staff Member.
          example: SALES
          type: string
        lastName:
          description: The last name of the Staff Member.
          example: Bloggs
          type: string
        name:
          description: The USERNAME of the Staff Member.
          example: FranDonn
          type: string
        objId:
          description: The Identifier of the Staff Member.
          example: '12405'
          type: string
      type: object
    reporting-serviceTaxableAmountDto:
      properties:
        grossAmountInCents:
          format: int64
          type: integer
        netAmountInCents:
          format: int64
          type: integer
      type: object
    reporting-serviceTransaction:
      description: Contains transaction information relating to the account
      properties:
        accountDiscount:
          "$ref": "#/components/schemas/reporting-serviceDiscount"
        item:
          "$ref": "#/components/schemas/reporting-serviceItem"
        lineDiscount:
          "$ref": "#/components/schemas/reporting-serviceDiscount"
        meta:
          "$ref": "#/components/schemas/reporting-serviceMeta"
        origin:
          "$ref": "#/components/schemas/reporting-serviceReference"
        reference:
          "$ref": "#/components/schemas/reporting-serviceReference"
        staffMember:
          "$ref": "#/components/schemas/reporting-serviceStaff"
        trxOrigin:
          description: The origin of this Transaction.
          example: NORMAL
          type: string
        voidDetail:
          "$ref": "#/components/schemas/reporting-serviceVoidDetail"
      type: object
    reporting-serviceVoidDetail:
      description: Object describing the void if this Transaction was voided.
      properties:
        absoluteTotal:
          description: Financial amount voided. Whole number by factor 100
          example: 1000
          format: int32
          type: integer
        description:
          description: The reason this item was voided.
          example: Broken
          type: string
        reasonId:
          description: The reason id this item was voided.
          example: '171102907138062'
          type: string
        staffMember:
          "$ref": "#/components/schemas/reporting-serviceStaff"
      type: object
    reporting-serviceEntity:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    reporting-serviceEsAuditDto:
      type: object
      properties:
        fiscalDate:
          type: string
          format: date-time
        sod:
          type: string
          format: date-time
        eventName:
          type: string
        staff:
          "$ref": "#/components/schemas/reporting-serviceEntity"
        device:
          "$ref": "#/components/schemas/reporting-serviceEntity"
        details:
          type: object
          additionalProperties:
            type: string
      description: Data of the response
    reporting-serviceGiftCardStats:
      type: object
      properties:
        executionTimeInMs:
          description: Time taken by elasticsearch to execute the query
          format: int32
          type: integer
        timedOut:
          description: if the ES query request timed out
          type: boolean
        refills:
          "$ref": "#/components/schemas/reporting-serviceAggregatedStatResultDto"
        refillsPaymentBreakdown:
          description: Payment methods usage breakdown to refill gift cards
          items:
            "$ref": "#/components/schemas/reporting-serviceAggregatedBucketDto"
          type: array
        totalCaNet:
          description: Total payments made during the requested time
          type: number
          format: double
        caAggregationByInterval:
          description: CA aggregation buckets by interval
          items:
            "$ref": "#/components/schemas/reporting-serviceAggregatedBucketDto"
          type: array
        tips:
          "$ref": "#/components/schemas/reporting-serviceAggregatedStatResultDto"
        withdrawals:
          "$ref": "#/components/schemas/reporting-serviceAggregatedStatResultDto"
    reporting-serviceAggregatedStatResultDto:
      properties:
        docCount:
          description: Document count for this bucket
          format: int64
          type: integer
        aggregationByInterval:
          description: Stat aggregation bucket by interval
          items:
            "$ref": "#/components/schemas/reporting-serviceAggregatedBucketDto"
          type: array
        sum:
          description: Aggregated sum overall
          type: number
          format: double
        avg:
          description: Aggregated avg overall
          type: number
          format: double
      type: object
    reporting-serviceAggregatedBucketDto:
      properties:
        keyAsString:
          description: Contains timestamp as specified in the ES query
          type: string
        key:
          description: Contains aggregation key, mostly epoch time in millis
          type: string
        docCount:
          description: Document count for this bucket
          format: int64
          type: integer
        amount:
          description: Aggregated value e.g sum/avg. Mostly amount for an interval
          type: number
          format: double
      type: object
    reporting-serviceConsumerReceiptStatsResponseDto:
      type: object
    reservation-serviceAccount:
      properties:
        accountNumber:
          description: The unique identifier of the account (order).
          example: A833754.74
          type: string
        accountObjectId:
          description: The internal identifier of the table.
          example: '25769805453'
          type: string
          deprecated: true
        accountProfileCode:
          description: The code of the [account (order) profile](https://api-docs.lsk.lightspeed.app/operation/operation-reservationordernotification#operation-reservationordernotification-body-application-json-account-accountprofilecode)
            associated with this order. <br> See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles)
            definition for more details.
          example: zoneB
          type: string
        accountProfileId:
          description: The unique identifier of the [account (order) profile](https://api-docs.lsk.lightspeed.app/operation/operation-reservationordernotification#operation-reservationordernotification-body-application-json-account-accountprofilecode)
            associated with this order.
          example: '25769805764'
          type: string
        accountProfileName:
          description: The name of the [account (order) profile](https://api-docs.lsk.lightspeed.app/operation/operation-reservationordernotification#operation-reservationordernotification-body-application-json-account-accountprofilecode)
            associated with this order.
          example: Livraison Zone B
          type: string
        businessLocationId:
          description: The unique identifier of the business location.
          example: '9765040300495493'
          type: string
        closeDate:
          description: The timestamp of when transaction was completed, in milliseconds.
          example: 1694083785354
          format: int64
          nullable: true
          type: integer
        consumerRecord:
          "$ref": "#/components/schemas/reservation-serviceConsumerRecord"
        coverCount:
          description: The number of covers associated with the transaction.
          example: 2
          format: int64
          type: integer
        currencyCode:
          description: The ISO-4217 3 letter currency code.
          example: EUR
          type: string
        currentProductionPhase:
          description: The active course. Starts with 0.
          example: 0
          format: int32
          type: integer
        discounts:
          items:
            "$ref": "#/components/schemas/reservation-serviceDiscount"
          type: array
        externalReferences:
          description: The unique identifiers of this transaction provided by 3rd
            parties or the K-Series backend.
          items:
            "$ref": "#/components/schemas/reservation-serviceExternalReference"
          type: array
        gratuityAmount:
          description: The tip amount.
          example: 20
          type: number
        id:
          description: Legacy account identifier created by the POS (for backwards
            compatibility).
          example: '21474836499'
          type: string
          deprecated: true
        latestExternalReferences:
          items:
            "$ref": "#/components/schemas/reservation-serviceExternalReference"
          type: array
        name:
          description: The name of the transaction or tab.
          example: Floor 1, Table 2
          type: string
        offset:
          description: The UTC Offset of the location, in minutes.
          example: 240
          format: int32
          type: integer
        orderMode:
          description: |
            Order mode of the transaction:
            * DIRECT – Retail-like direct sale, no table associated
            * TABLE – Table based order / sale
            * DELIVERY – Retail-like delivery or take-away sale, no table associated
            * LOCAL_ORDER – Sale generated by a local order system (e.g. drink dispenser)
            * ONLINE – Sale generated by a remote order system (e.g. a web site)
            * SYSTEM – Used for transfer operations between payment methods
            * ON_HOLD – Direct Sale that is currently put on hold (parked), resumed at a later time
            * CROSS_BL – Cross business location order
          example: ONLINE
          type: string
          enum:
          - DIRECT
          - TABLE
          - DELIVERY
          - LOCAL_ORDER
          - ONLINE
          - SYSTEM
          - OTHER
          - ON_HOLD
          - CROSS_BL
          - BAR_TAB
        openDate:
          description: The timestamp of when transaction was started, in milliseconds.
          example: 1694083785354
          format: int64
          type: integer
        originAccountId:
          description: Legacy reference identifier of origin account created by the
            POS (for backwards compatibility).
          example: 21474836579
          format: int64
          nullable: true
          type: integer
        originAccountNumber:
          description: A unique identifier of an account, used to identify sales transactions.
          example: A1.5
          nullable: true
          type: string
        paidAmount:
          description: The amount paid.
          example: 45
          type: number
        paymentLines:
          items:
            "$ref": "#/components/schemas/reservation-servicePaymentLine"
          type: array
        preTaxAmount:
          description: The amount before tax.
          example: 201.78
          type: number
        receiptNumber:
          description: The unique identifier of the final transaction.
          example: R1.2
          type: string
        serviceCharge:
          description: The sum of all surcharges applied to the transaction.
          example: 34.2
          type: number
        staffId:
          description: The unique identifier of staff member who created/started and
            owns the transaction.
          example: '13'
          type: string
        staffName:
          description: The name of staff member who created/started and owns the transaction.
          example: Manager
          type: string
        tableName:
          description: The name of the table.
          example: Table 112
          type: string
          deprecated: true
        tableNumber:
          description: Integer number of the table.
          example: 112
          type: number
          deprecated: true
        tables:
          description: List of table names (codes) associated with this order
          example:
          - '112'
          - 112A
          type: array
          items:
            type: string
        taxAmount:
          description: The total amount of tax.
          example: 14.12
          type: number
        totalAmount:
          description: The total amount of the receipt.
          example: 30
          type: number
        totalDiscount:
          description: The applied discount rate, as a percentage.
          example: 0.9
          type: number
        transactionLines:
          items:
            "$ref": "#/components/schemas/reservation-serviceTransactionLine"
          type: array
        type:
          description: The sale line type.
          example: SALE
          type: string
        updateDate:
          description: The timestamp of when the complete update was finalized at
            the POS, in milliseconds.
          example: 1694083819623
          format: int64
          type: integer
      type: object
    reservation-serviceBackofficeIntegrationCourses:
      additionalProperties:
        items:
          type: string
        type: array
      example:
        dessert:
        - brownie
        mainDishes:
        - meat
        - schnitzel
        starterDishes:
        - cheese
        - salad
      type: object
    reservation-serviceBackofficeIntegrationDetails:
      required:
      - platformCode
      - platformRestaurantId
      - platformDepositSupported
      - platformOnboardingSupported
      - platformActivationSupported
      - platformDeactivationSupported
      - activatedAt
      properties:
        activatedAt:
          description: The date-time when the integration was activated.
          example: '2024-01-01T20:00:00'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
        courses:
          "$ref": "#/components/schemas/reservation-serviceBackofficeIntegrationCourses"
        platformActivationSupported:
          "$ref": "#/components/schemas/reservation-servicePlatformActivationSupported"
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformDeactivationSupported:
          "$ref": "#/components/schemas/reservation-servicePlatformDeactivationSupported"
        platformDepositSupported:
          "$ref": "#/components/schemas/reservation-servicePlatformDepositSupported"
        platformDisplayName:
          "$ref": "#/components/schemas/reservation-servicePlatformDisplayName"
        platformOnboardingSupported:
          "$ref": "#/components/schemas/reservation-servicePlatformOnboardingSupported"
        platformRestaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
        settings:
          "$ref": "#/components/schemas/reservation-serviceBackofficeIntegrationSettings"
      type: object
    reservation-serviceBackofficeIntegrationSettings:
      properties:
        allowWalkIn:
          description: Allow order creation for walk-in guests.
          example: true
          type: boolean
        orderAutoCreation:
          description: Allow order creation for reservation with 'seated' state.
          example: true
          type: boolean
        multiTableSupport:
          description: Create linked POS orders for multi-table reservations (default
            true).
          example: true
          default: true
          type: boolean
      required:
      - allowWalkIn
      - orderAutoCreation
      type: object
    reservation-serviceBackofficePlatformRestaurantSettings:
      properties:
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformRestaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
        settings:
          "$ref": "#/components/schemas/reservation-serviceBackofficeIntegrationSettings"
      required:
      - platformCode
      - platformRestaurantId
      - settings
      type: object
    reservation-serviceBackofficeOnboardingCode:
      description: The onboarding code of current integration process.
      enum:
      - PENDING
      - EXPIRED
      - ERROR
      example: PENDING
      type: string
    reservation-serviceBackofficeOnboardingConfig:
      properties:
        onboardingCode:
          "$ref": "#/components/schemas/reservation-serviceBackofficeOnboardingCode"
        onboardingId:
          "$ref": "#/components/schemas/reservation-serviceOnboardingId"
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformDisplayName:
          "$ref": "#/components/schemas/reservation-servicePlatformDisplayName"
        platformRestaurantReference:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantReference"
        startedAt:
          description: The date and time in UTC when the onboarding was created.
          example: '2024-01-01T20:00:00'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
      required:
      - platformCode
      - onboardingId
      - onboardingCode
      - startedAt
      - platformRestaurantReference
      type: object
    reservation-serviceBackofficePlatformProfile:
      required:
      - platformCode
      - platformActivationSupported
      - platformDeactivationSupported
      - platformDepositSupported
      - platformOnboardingSupported
      properties:
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformActivationSupported:
          "$ref": "#/components/schemas/reservation-servicePlatformActivationSupported"
        platformDeactivationSupported:
          "$ref": "#/components/schemas/reservation-servicePlatformDeactivationSupported"
        platformDepositSupported:
          "$ref": "#/components/schemas/reservation-servicePlatformDepositSupported"
        platformDisplayName:
          "$ref": "#/components/schemas/reservation-servicePlatformDisplayName"
        platformOnboardingSupported:
          "$ref": "#/components/schemas/reservation-servicePlatformOnboardingSupported"
      type: object
    reservation-serviceBackofficeReservationDto:
      description: Reservation details for Backoffice.
      properties:
        businessLocationId:
          "$ref": "#/components/schemas/reservation-serviceBusinessLocationId"
        guest:
          properties:
            firstName:
              description: First name of the guest.
              example: John
              type: string
            lastName:
              description: Last name of the guest.
              example: Doe
              type: string
          required:
          - firstName
          - lastName
          type: object
        liability:
          "$ref": "#/components/schemas/reservation-serviceBackofficeLiabilityDto"
        notes:
          description: Additional information about the reservation.
          example: Table near the window
          type: string
        partySize:
          description: Number of guests in the reservation.
          example: 2
          format: int32
          type: integer
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformReservationId:
          "$ref": "#/components/schemas/reservation-servicePlatformReservationId"
        platformRestaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
        sentToPos:
          description: If `true`, the reservation was sent to the POS.
          example: true
          type: boolean
        status:
          "$ref": "#/components/schemas/reservation-serviceStatus"
        tableNumbers:
          description: List of table numbers. The table numbers are unique within
            the business location.
          example:
          - '1'
          items:
            type: string
          type: array
        utcDepartedAt:
          description: Date and time in UTC when the reservation departed.
          example: '2024-07-26T16:26:29Z'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
        utcScheduledAt:
          description: Date and time in UTC when the reservation was scheduled.
          example: '2024-07-26T16:26:29Z'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
        utcSeatedAt:
          description: Date and time in UTC when the reservation was seated.
          example: '2024-07-26T16:26:29Z'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
        utcUpdatedAt:
          description: Date and time in UTC when the reservation was updated.
          example: '2024-07-26T16:26:29Z'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
      required:
      - platformCode
      - platformRestaurantId
      - platformReservationId
      - businessLocationId
      - status
      - partySize
      - tableNumbers
      - sentToPos
      - utcScheduledAt
      type: object
    reservation-serviceBackofficeReservationSettings:
      properties:
        deviceIds:
          description: IDs of the devices enabled for reservations.
          example:
          - 12
          - 34
          items:
            format: int64
            type: integer
          type: array
        staffId:
          description: The unique identifier of the staff member that will be used
            for reservations.
          example: 123456
          format: int64
          type: integer
        tagId:
          description: The unique identifier of the tag that will be used for reservations.
          example: 123456
          format: int64
          type: integer
        useDefaultOrderProfile:
          description: If `true`, the system will use the same order profile assignment
            logic as for orders opened on the POS.
          example: true
          type: boolean
      required:
      - staffId
      - deviceIds
      - useDefaultOrderProfile
      type: object
    reservation-serviceBusinessLocationId:
      description: The unique identifier of the business location.
      example: 9765040300495493
      format: int64
      type: integer
    reservation-serviceBusinessId:
      description: The unique identifier of the business.
      example: 9765040300495493
      format: int64
      type: integer
    reservation-serviceCategory:
      description: A list of the reporting categories in which the sale is to be aggregated.
      properties:
        category:
          description: The reporting category name.
          example: default
          type: string
        value:
          description: The reporting category value.
          example: Misc
          type: string
      type: object
    reservation-serviceConfiguration:
      properties:
        id:
          format: int64
          type: integer
        name:
          type: string
      type: object
    reservation-serviceCheckId:
      properties:
        check_ids:
          items:
            type: string
          type: array
      type: object
    reservation-serviceConsumer:
      nullable: true
      properties:
        emailAddress:
          example: napoleon@bonapart.fr
          type: string
        id:
          example: '111466'
          type: string
      type: object
    reservation-serviceConsumerRecord:
      nullable: true
      properties:
        consumer:
          "$ref": "#/components/schemas/reservation-serviceConsumer"
        consumerRecordUUID:
          example: 8649450c-5c10-4e63-8461-12bbf5a51cbc
          format: uuid
          type: string
        contactInformation:
          "$ref": "#/components/schemas/reservation-serviceContactInfo"
        externalReferences:
          description: The external reservation system's unique identifier for the
            consumer.
          items:
            "$ref": "#/components/schemas/reservation-serviceExternalConsumerRecord"
          type: array
        id:
          example: '36577'
          type: string
      type: object
    reservation-serviceContactInfo:
      properties:
        city:
          example: Paris
          type: string
        companyName:
          example: Non
          type: string
        emailReceipts:
          description: Whether or not email notifications are enabled.
          example: false
          type: boolean
        firstName:
          example: Alexandr
          type: string
        fullName:
          description: Combines `firstName` and `lastName`.
          example: Alexandr Pushkin
          type: string
        lastName:
          example: Pushkin
          type: string
        taxIdentifier:
          example: '23142342134'
          type: string
      type: object
    reservation-serviceDevPortalIntegrationDto:
      properties:
        activatedAt:
          format: date-time
          type: string
        activatedCount:
          format: int32
          type: integer
        deactivatedAt:
          format: date-time
          type: string
        locationId:
          format: int64
          type: integer
        platformRestaurantId:
          type: string
      type: object
    reservation-serviceDevPortalPlatformDto:
      properties:
        baseUrl:
          type: string
          format: uri
        createdAt:
          format: date-time
          type: string
        depositSupported:
          type: boolean
        displayName:
          type: string
        errorsWebhookUrl:
          type: string
          format: uri
        integrationWebhookUrl:
          type: string
          format: uri
        notificationTypes:
          items:
            enum:
            - ORDER_OPENED
            - ORDER_UPDATED
            - ORDER_CLOSED
            - ONBOARDING_STARTED
            - INTEGRATION_ACTIVATED
            - INTEGRATION_DEACTIVATED
            - POS_RESERVATION_UPDATED
            - ERROR
            type: string
          type: array
        onboardingWebhookUrl:
          type: string
          format: uri
        orderWebhookUrl:
          type: string
          format: uri
        ownNotificationsOnly:
          type: boolean
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        posReservationUpdateWebhookUrl:
          type: string
          format: uri
        webhookAuthType:
          enum:
          - BASIC_AUTH
          - BEARER_TOKEN
          - API_KEYS
          - OAUTH2
          - NONE
          type: string
        allowedPosStatuses:
          type: array
          items:
            "$ref": "#/components/schemas/reservation-servicePlatformReservationStatus"
      type: object
      required:
      - platformCode
      - createdAt
      - depositSupported
      - ownNotificationsOnly
      - notificationTypes
    reservation-serviceDiscount:
      properties:
        code:
          description: The discount code.
          example: test_discount
          type: string
        description:
          description: The name of the discount.
          example: test discount description
          type: string
        id:
          description: The unique identifier of the discount.
          example: '197568495841'
          type: string
        rate:
          description: The discount rate.
          example: 0.9
          type: number
        taxFree:
          description: Indicates if the discount is considered tax free.
          example: false
          type: boolean
      type: object
    reservation-serviceEntityType:
      description: The type of entity with which the error occurred.
      enum:
      - business-location
      - general
      - platform-profile
      - platform-restaurant
      - platform-reservation
      example: platform-reservation
      type: string
    reservation-serviceErrorCode:
      description: A code that describes the reason for the error.
      enum:
      - PLATFORM_NOT_FOUND
      - URL_MUST_START_WITH_HTTPS
      - BEARER_AUTH_TTL_IS_EXPIRED
      - BASIC_AUTH_FIELDS_CAN_NOT_BE_EMPTY
      - BEARER_AUTH_FIELDS_CAN_NOT_BE_EMPTY
      - API_KEY_AUTH_FIELDS_CAN_NOT_BE_EMPTY
      - OAUTH_FIELDS_CAN_NOT_BE_EMPTY
      - RESTAURANT_PROPERTIES_REQUIRED
      - RESTAURANT_PROPERTIES_INVALID
      - RESTAURANT_PROPERTIES_EXPIRED
      - INTEGRATION_LOCATION_ID_MISMATCH
      - PLATFORM_ALREADY_ACTIVATED
      - CURRENCY_NOT_ACCEPTABLE
      - PLATFORM_FIELDS_CAN_NOT_BE_EMPTY
      - PLATFORM_CODE_TOO_MANY_SYMBOLS
      - REQUESTED_TABLE_IS_UNAVAILABLE
      - PLATFORM_RESTAURANT_NOT_FOUND
      - PLATFORM_PROPERTIES_INVALID
      - PLATFORM_PROPERTIES_DUPLICATION
      - RESERVATION_FIELDS_CAN_NOT_BE_EMPTY
      - RESERVATION_ID_TOO_MANY_SYMBOLS
      - RESERVATION_PARTY_SIZE_ERROR
      - RESERVATION_SEQUENCE_ID_ERROR
      - RESERVATION_PROPERTIES_INVALID
      - GUEST_URL_UNREACHABLE
      - GUEST_PROPERTIES_INVALID
      - GUEST_FIELDS_CAN_NOT_BE_EMPTY
      - VOIDED_DEPOSIT_CAN_NOT_BE_FUNDED_AGAIN
      - DEPOSIT_AMOUNT_CAN_NOT_BE_CHANGED
      - DEPOSIT_UNACCEPTABLE_AMOUNT
      - DEPOSIT_ID_MUST_BE_UNIQUE
      - VOIDED_REFUND_CAN_NOT_BE_REFUNDED_AGAIN
      - REFUND_AMOUNT_CAN_NOT_BE_CHANGED
      - REFUND_ID_MUST_BE_UNIQUE
      - REFUND_UNACCEPTABLE_AMOUNT
      - CURRENCY_CAN_NOT_BE_CHANGED
      - TOO_MANY_DEPOSITS
      - TOO_MANY_REFUNDS
      - TOO_MANY_INTEGRATIONS_WITH_PLATFORM
      - INTERNAL_ERROR
      - ACCOUNT_CREATION_ERROR
      - CLIENT_REQUEST_ERROR
      - INTEGRATION_ONBOARDING_PROPERTIES_INVALID
      - INTEGRATION_ONBOARDING_NOTIFICATION_FAILED
      example: REQUESTED_TABLE_IS_UNAVAILABLE
      type: string
    reservation-serviceErrorWebhook:
      properties:
        entityType:
          "$ref": "#/components/schemas/reservation-serviceEntityType"
        errorCode:
          "$ref": "#/components/schemas/reservation-serviceErrorCode"
        errorMessage:
          description: Error description.
          example: Incorrect properties
          type: string
        errorProperties:
          description: The list of request properties that are incorrect.
          items:
            example: tableNumbers
            type: string
          type: array
        httpCode:
          description: The [code](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)
            of http error (4xx, 5xx) response.
          example: 400
          format: int32
          type: integer
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformReservationId:
          "$ref": "#/components/schemas/reservation-servicePlatformReservationId"
        platformRestaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
        traceId:
          description: Unique identifier of the issue.
          example: b43f8e3e-5ac9-464e-ab34-20b4e137115e
          type: string
      required:
      - errorMessage
      - traceId
      - httpCode
      - entityType
      - errorCode
      type: object
    reservation-serviceExternalConsumerRecord:
      description: The external reservation system's unique identifier for the consumer.
      properties:
        key:
          description: An identifier for the external reservation system.
          example: open-table-api-client
          type: string
        reference:
          example: OO.11.opentable-anonymous
          type: string
      type: object
    reservation-serviceExternalReference:
      description: The unique identifier of this transaction provided by 3rd parties
        or the K-Series backend.
      properties:
        prefix:
          example: TASK
          type: string
        reference:
          example: RN-197568495618-reservation_id_123213126
          type: string
      type: object
    reservation-serviceForkCustomerDto:
      required:
      - allergies
      - civility
      - dietaryRestrictions
      - firstName
      - id
      - lastName
      - note
      type: object
      properties:
        id:
          type: string
        civility:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        allergies:
          type: array
          items:
            type: string
        dietaryRestrictions:
          type: array
          items:
            type: string
        note:
          type: string
    reservation-serviceForkOfferDto:
      required:
      - name
      - presetMenuType
      - type
      type: object
      properties:
        type:
          type: string
        name:
          type: string
        discountPercentage:
          type: integer
          format: int32
        presetMenuType:
          type: string
        price:
          type: number
        currency:
          type: string
    reservation-serviceForkPrepaymentDto:
      required:
      - amount
      - currency
      type: object
      properties:
        amount:
          type: integer
          format: int32
        currency:
          type: string
    reservation-serviceForkTableDto:
      required:
      - areaName
      - name
      type: object
      properties:
        name:
          type: string
        areaName:
          type: string
    reservation-servicePlatform:
      type: object
      properties:
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        restaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
        allowedStatusTransitions:
          type: object
          additionalProperties:
            type: array
            items:
              "$ref": "#/components/schemas/reservation-serviceStatus"
          example:
            ON_HOLD:
            - SCHEDULED
            - PARTIALLY_ARRIVED
            - ARRIVED
            - PARTIALLY_SEATED
            - SEATED
            - CANCELLED
            - NO_SHOW
            - DEPARTED
            SCHEDULED:
            - PARTIALLY_ARRIVED
            - ARRIVED
            - PARTIALLY_SEATED
            - SEATED
            - CANCELLED
            - NO_SHOW
            - DEPARTED
            CANCELLED: []
            NO_SHOW: []
            PARTIALLY_ARRIVED:
            - ARRIVED
            - PARTIALLY_SEATED
            - SEATED
            - CANCELLED
            - NO_SHOW
            - DEPARTED
            ARRIVED:
            - PARTIALLY_SEATED
            - SEATED
            - CANCELLED
            - NO_SHOW
            - DEPARTED
            PARTIALLY_SEATED:
            - SEATED
            SEATED: []
            PAID:
            - DEPARTED
            DEPARTED: []
        showNextBestAction:
          type: boolean
          description: should POS suggest next best action for this platform
    reservation-serviceIntegrationOnboardingDto:
      properties:
        onboardingCode:
          enum:
          - PENDING
          - ERROR
          - EXPIRED
          type: string
        onboardingId:
          type: string
        platformCode:
          type: string
        platformDisplayName:
          type: string
        platformRestaurantReference:
          type: string
        startedAt:
          format: date-time
          type: string
      type: object
    reservation-serviceIntegrationWebhook:
      properties:
        businessLocationId:
          "$ref": "#/components/schemas/reservation-serviceBusinessLocationId"
        notificationType:
          description: The type of notification.
          enum:
          - ACTIVATED
          - DEACTIVATED
          type: string
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformRestaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
      required:
      - notificationType
      - platformCode
      - businessLocationId
      - platformRestaurantId
      type: object
    reservation-serviceLiability:
      description: The guest's obligation for the reservation.
      properties:
        currency:
          description: ISO-4217
          example: EUR
          pattern: "[A-Z]{3}"
          type: string
        deposits:
          description: List of all prepaid deposits made through the external platform.
          items:
            properties:
              amount:
                description: The amount of the deposit made through the external platform.
                example: '100.00'
                pattern: "^[0-9]+.[0-9]{2}$"
                type: string
              platformDepositId:
                description: The external platform's unique identifier for the deposit.
                example: '1'
                pattern: "[a-zA-Z0-9_-]+"
                type: string
              utcCreatedAt:
                description: Deposit creation time.
                example: '2024-01-01T20:00:00'
                format: date-time
                type: string
                x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
                  = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
                  timezone = "UTC")'
              utcVoidedAt:
                description: Deposit void time, if applicable.
                example: '2024-01-01T20:00:00'
                format: date-time
                type: string
                x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
                  = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
                  timezone = "UTC")'
              voided:
                description: Whether or not the deposit was voided.
                example: false
                type: boolean
            required:
            - amount
            - utcCreatedAt
            type: object
          type: array
          uniqueItems: true
        refunds:
          description: List of all deposits refunded to the guest.
          items:
            properties:
              amount:
                description: The amount which was refunded by the external platform.
                example: '100.00'
                pattern: "^[0-9]+.[0-9]{2}$"
                type: string
              platformRefundId:
                description: The external platform's unique identifier for the refund.
                example: '1'
                pattern: "[a-zA-Z0-9_-]+"
                type: string
              utcCreatedAt:
                description: Refund creation time.
                example: '2024-01-01T20:00:00'
                format: date-time
                type: string
                x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
                  = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
                  timezone = "UTC")'
              utcVoidedAt:
                description: Refund void time, if applicable.
                example: '2024-01-01T20:00:00'
                format: date-time
                type: string
                x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
                  = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
                  timezone = "UTC")'
              voided:
                description: Whether or not the refund was voided.
                example: false
                type: boolean
            required:
            - amount
            - utcCreatedAt
            type: object
          type: array
          uniqueItems: true
      required:
      - currency
      - deposits
      type: object
    reservation-serviceBackofficeDepositDto:
      required:
      - amount
      - cents
      - createdAt
      - depositId
      - status
      type: object
      properties:
        depositId:
          type: string
        status:
          type: string
          enum:
          - FUNDED
          - VOIDED
          - FAILED
        amount:
          type: integer
          format: int32
        cents:
          type: integer
          format: int32
        createdAt:
          type: string
          format: date-time
        voidedAt:
          type: string
          format: date-time
    reservation-serviceBackofficeLiabilityDto:
      description: The guest's obligation for this reservation.
      required:
      - currency
      - deposits
      - refunds
      type: object
      properties:
        currency:
          description: ISO-4217 based currency code.
          type: string
          enum:
          - AED
          - AFN
          - ALL
          - AMD
          - ANG
          - AOA
          - ARS
          - AUD
          - AWG
          - AZN
          - BAM
          - BBD
          - BDT
          - BGN
          - BHD
          - BIF
          - BMD
          - BND
          - BOB
          - BOV
          - BRL
          - BSD
          - BTN
          - BWP
          - BYN
          - BZD
          - CAD
          - CDF
          - CHE
          - CHF
          - CHW
          - CLF
          - CLP
          - COP
          - COU
          - CRC
          - CUP
          - CVE
          - CZK
          - DJF
          - DKK
          - DOP
          - DZD
          - EGP
          - ERN
          - ETB
          - EUR
          - FJD
          - FKP
          - GBP
          - GEL
          - GHS
          - GIP
          - GMD
          - GNF
          - GTQ
          - GYD
          - HKD
          - HNL
          - HTG
          - HUF
          - IDR
          - ILS
          - INR
          - IQD
          - IRR
          - ISK
          - JMD
          - JOD
          - JPY
          - KES
          - KGS
          - KHR
          - KMF
          - KPW
          - KRW
          - KWD
          - KYD
          - KZT
          - LAK
          - LBP
          - LKR
          - LRD
          - LSL
          - LYD
          - MAD
          - MDL
          - MGA
          - MKD
          - MMK
          - MNT
          - MOP
          - MRU
          - MUR
          - MVR
          - MWK
          - MXN
          - MXV
          - MYR
          - MZN
          - NAD
          - NGN
          - NIO
          - NOK
          - NPR
          - NZD
          - OMR
          - PAB
          - PEN
          - PGK
          - PHP
          - PKR
          - PLN
          - PYG
          - QAR
          - RON
          - RSD
          - CNY
          - RUB
          - RWF
          - SAR
          - SBD
          - SCR
          - SDG
          - SEK
          - SGD
          - SHP
          - SLE
          - SLL
          - SOS
          - SRD
          - SSP
          - STN
          - SVC
          - SYP
          - SZL
          - THB
          - TJS
          - TMT
          - TND
          - TOP
          - TRY
          - TTD
          - TWD
          - TZS
          - UAH
          - UGX
          - USD
          - USN
          - UYI
          - UYU
          - UYW
          - UZS
          - VED
          - VES
          - VND
          - VUV
          - WST
          - XAF
          - XAG
          - XAU
          - XBA
          - XBB
          - XBC
          - XBD
          - XCD
          - XDR
          - XOF
          - XPD
          - XPF
          - XPT
          - XSU
          - XTS
          - XUA
          - XXX
          - YER
          - ZAR
          - ZMW
          - ZWL
          - UNKNOWN_CURRENCY
        deposits:
          description: Deposits assigned to the reservation.
          type: array
          items:
            "$ref": "#/components/schemas/reservation-serviceBackofficeDepositDto"
        refunds:
          description: Refunds assigned to the reservation.
          type: array
          items:
            "$ref": "#/components/schemas/reservation-serviceBackofficeRefundDto"
    reservation-serviceBackofficeRefundDto:
      required:
      - amount
      - cents
      - createdAt
      - refundId
      - status
      type: object
      properties:
        refundId:
          type: string
        status:
          type: string
          enum:
          - REFUNDED
          - VOIDED
          - FAILED
        amount:
          type: integer
          format: int32
        cents:
          type: integer
          format: int32
        createdAt:
          type: string
          format: date-time
        voidedAt:
          type: string
          format: date-time
    reservation-serviceMenu:
      properties:
        configurations:
          items:
            "$ref": "#/components/schemas/reservation-serviceConfiguration"
          type: array
        id:
          format: int64
          type: integer
        name:
          type: string
        owner:
          "$ref": "#/components/schemas/reservation-serviceParentLocation"
        webExtensionButton:
          "$ref": "#/components/schemas/reservation-serviceWebExtensionButton"
      type: object
    reservation-serviceModifier:
      description: A production instruction entered for a line.
      properties:
        name:
          description: Line text.
          example: Milch
          type: string
        quantity:
          description: Line quantity.
          example: 1
          format: int64
          type: integer
      type: object
    reservation-serviceOpenTableDepositDto:
      properties:
        currency:
          type: string
        currencyDenominator:
          format: int32
          type: integer
        status:
          type: string
        totalPaid:
          format: int64
          type: integer
        totalPrice:
          format: int64
          type: integer
        totalRefunded:
          format: int64
          type: integer
      type: object
    reservation-serviceOnboardingCallbackRequest:
      properties:
        businessLocationId:
          "$ref": "#/components/schemas/reservation-serviceBusinessLocationId"
        onboardingCode:
          "$ref": "#/components/schemas/reservation-serviceOnboardingCode"
        onboardingId:
          "$ref": "#/components/schemas/reservation-serviceOnboardingId"
        platformRestaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
      required:
      - onboardingId
      - onboardingCode
      - platformRestaurantId
      - businessLocationId
      type: object
    reservation-serviceOnboardingCallbackResponse:
      properties:
        onboardingCode:
          "$ref": "#/components/schemas/reservation-serviceOnboardingCode"
      required:
      - onboardingCode
      type: object
    reservation-serviceOnboardingCode:
      description: The machine code to interact with the external platform during
        the onboarding process.
      enum:
      - ACCEPTED
      - DONE
      - ONBOARDING_EXPIRED
      - ONBOARDING_ID_NOT_VALID
      - PLATFORM_CODE_NOT_VALID
      - BUSINESS_LOCATION_NOT_VALID
      - PLATFORM_RESTAURANT_NOT_VALID
      - PLATFORM_RESTAURANT_NOT_FOUND
      - UNEXPECTED_ERROR
      example: DONE
      type: string
    reservation-serviceOnboardingId:
      description: The unique identifier of the integration process that has started
        onboarding.
      example: 84f16177-98c5-4010-a7ab-d00144d1dede
      type: string
    reservation-serviceOnboardingWebhook:
      properties:
        businessInformation:
          properties:
            businessLocationId:
              "$ref": "#/components/schemas/reservation-serviceBusinessLocationId"
            city:
              description: The city of the company.
              example: Genève
              type: string
            country:
              description: The country code of the company.
              example: CH
              type: string
            name:
              description: The company name in Lightspeed Backoffice.
              example: Le Gâteau
              type: string
            state:
              description: The state of the company.
              example: Canton de Genève
              type: string
            street1:
              description: The primary street of the company.
              example: Rue de la Servette 10
              type: string
            street2:
              description: The secondary street of the company.
              example: Suite 2
              type: string
            zip:
              description: The zip code of the company.
              example: '101201'
              type: string
          required:
          - businessLocationId
          - name
          type: object
        epochSecondsDeadlineUtc:
          description: The epoch time in seconds until which the onboarding process
            remains active.
          example: 1711628625
          format: int64
          type: integer
        onboardingId:
          "$ref": "#/components/schemas/reservation-serviceOnboardingId"
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformRestaurantReference:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantReference"
      required:
      - platformCode
      - platformRestaurantReference
      - onboardingId
      - epochSecondsDeadlineUtc
      - businessInformation
      type: object
    reservation-serviceParentLocation:
      properties:
        id:
          format: int64
          type: integer
        name:
          type: string
      type: object
    reservation-servicePaymentLine:
      properties:
        accountId:
          description: Legacy account identifier created by the POS (supplied because
            older API provides it to 3rd parties).
          example: '21474836499'
          type: string
        amount:
          description: Amount given by the customer to settle the transaction.
          example: 45
          type: number
        currencyCode:
          description: An ISO-4217 3 letter currency code
          example: GBP
          type: string
        date:
          description: Timestamp in ms of the moment when the line was registered.
            by the user
          example: 1694084890294
          format: int64
          type: integer
        gratuityAmount:
          description: Amount of tip given by the customer using the payment method.
          example: 50
          type: number
        id:
          description: Legacy line identifier created by the POS (supplied because
            older API provides it to 3rd parties).
          example: 21474836506
          format: int64
          type: integer
        paymentMethod:
          description: Short code of the payment method the customer used to settle
            the transaction.
          example: IKGIFT
          type: string
        paymentMethodDescription:
          description: Name of the payment method used.
          example: Geschenkkarte
          type: string
      type: object
    reservation-servicePlatformAPIKeysWebhook:
      description: The API keys that will be sent with the webhook notifications.
        See [API Keys](https://swagger.io/docs/specification/authentication/api-keys/).
      properties:
        headers:
          additionalProperties:
            description: Key-value pairs of arbitrary static headers to send with
              the webhook request.
            type: string
          example:
            X-API-ID: Example-x-api-id
            X-API-SECRET: Example-x-api-secret
          type: object
        parameters:
          additionalProperties:
            description: Key-value pairs of arbitrary static query parameters to send
              with the webhook request.
            type: string
          example: {}
          type: object
      type: object
    reservation-servicePlatformActivationSupported:
      description: Whether or not the platform supports activations.
      example: true
      type: boolean
    reservation-servicePlatformBasicAuthWebhook:
      description: The basic authentication credentials that will be sent with the
        webhook notifications. See [Basic Authentication](https://swagger.io/docs/specification/authentication/basic-authentication/).
      properties:
        password:
          description: The basic auth password.
          example: Example-Password
          format: password
          type: string
        username:
          description: The basic auth username.
          example: LightspeedKSeries
          type: string
      required:
      - username
      - password
      type: object
    reservation-servicePlatformBearerTokenWebhook:
      description: The bearer token that will be sent with the webhook notifications.
        See [Bearer Authentication](https://swagger.io/docs/specification/authentication/bearer-authentication/).
      properties:
        token:
          description: The bearer token.
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
          format: password
          type: string
        ttl:
          description: Token expiration time in UTC.
          example: '2035-01-01T00:00:00'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
      required:
      - token
      type: object
    reservation-servicePlatformBusinessLocation:
      properties:
        businessLocationId:
          description: The unique identifier of the business location.
          type: string
        city:
          description: The business location's city.
          type: string
        country:
          description: The business location's country.
          type: string
        name:
          description: The business location's name.
          type: string
        state:
          description: The business location's state.
          type: string
        street1:
          description: The first line of the business location's street address.
          type: string
        street2:
          description: The second line of the business location's street address.
          type: string
        zip:
          description: The business location's postal code.
          type: string
      required:
      - businessLocationId
      type: object
    reservation-servicePlatformCode:
      description: The unique code assigned to the reservation platform.
      example: MyPlatform
      maxLength: 11
      pattern: "[a-zA-Z0-9_-]+"
      type: string
    reservation-servicePlatformDeactivationSupported:
      description: Whether or not the platform supports deactivations.
      example: true
      type: boolean
    reservation-servicePlatformDepositSupported:
      description: Whether or not the platform supports deposits.
      example: true
      type: boolean
    reservation-servicePlatformDisplayName:
      description: The official platform name that will be displayed.
      example: My Platform
      type: string
    reservation-servicePlatformIntegrationDto:
      properties:
        businessLocationId:
          "$ref": "#/components/schemas/reservation-serviceBusinessLocationId"
        platformRestaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
      required:
      - businessLocationId
      - platformRestaurantId
      type: object
    reservation-servicePlatformOAuth2Webhook:
      description: The OAuth2 credentials that will be sent with the webhook notifications.
        See [OAuth 2.0](https://oauth.net/2/).
      properties:
        authorizationGrantType:
          default: CLIENT_CREDENTIALS
          description: The authorization grant type. See [OAuth2 Grant Types](https://oauth.net/2/grant-types/).
          enum:
          - CLIENT_CREDENTIALS
          example: CLIENT_CREDENTIALS
          type: string
        clientAuthorizationMethod:
          default: CLIENT_SECRET_BASIC
          description: The client authorization method. See [OAuth2 Client Authentication](https://oauth.net/2/client-authentication/).
          enum:
          - CLIENT_SECRET_BASIC
          - CLIENT_SECRET_JWT
          - CLIENT_SECRET_POST
          example: CLIENT_SECRET_BASIC
          type: string
        clientId:
          description: The OAuth2 client ID.
          example: LightspeedKSeries
          type: string
        clientName:
          description: The OAuth2 client name.
          example: LightspeedKSeries
          type: string
        clientSecret:
          description: The OAuth2 client secret.
          example: Example-Client-Secret
          format: password
          type: string
        providerJwkSetUri:
          description: The external platform URL for getting public keys to verify
            given access tokens on the K-Series side.
          example: https://my.platform/public-keys
          format: uri
          type: string
        providerTokenUri:
          description: The external platform URL for getting access tokens by private
            credentials.
          example: https://my.platform/emitter/token
          format: uri
          type: string
        scopes:
          description: The scopes being granted to the API client.
          example:
          - webhooks-api
          items:
            type: string
          type: array
          uniqueItems: true
      required:
      - clientId
      - clientSecret
      - providerTokenUri
      type: object
    reservation-servicePlatformOnboardingSupported:
      description: Whether or not the platform supports onboarding.
      example: true
      type: boolean
    reservation-servicePlatformProfile:
      properties:
        baseUrl:
          description: The base URL of the external platform (optional).
          example: https://my.platform/api/lsk
          format: uri
          type: string
        depositSupported:
          "$ref": "#/components/schemas/reservation-servicePlatformDepositSupported"
        displayName:
          "$ref": "#/components/schemas/reservation-servicePlatformDisplayName"
        errorsWebhookUrl:
          description: 'The URL where notifications for any issues will be sent. <br>
            Required for [`error` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br>
            See [Get Sample Error notification](https://api-docs.lsk.lightspeed.app/operation/operation-reservationErrorNotification).

            '
          example: https://my.platform/api/lsk/webhook/errors
          type: string
          format: uri
        integrationWebhookUrl:
          description: 'The URL where notifications for activation or deactivation
            of the customer''s integration will be sent. <br> Required for [`integration`
            notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br>
            See [Integration notification](https://api-docs.lsk.lightspeed.app/operation/operation-reservationintegrationnotification).

            '
          example: https://my.platform/api/lsk/webhook/integrations
          type: string
          format: uri
        notificationTypes:
          description: The events that trigger a notification.
          example:
          - ORDER_CLOSED
          items:
            type: string
            enum:
            - ORDER_OPENED
            - ORDER_UPDATED
            - ORDER_CLOSED
            - ONBOARDING_STARTED
            - INTEGRATION_ACTIVATED
            - INTEGRATION_DEACTIVATED
            - POS_RESERVATION_UPDATED
            - ERROR
          type: array
          uniqueItems: true
        onboardingWebhookUrl:
          description: 'The URL where notifications for the customer''s integration
            onboarding will be sent. <br> Required for [`onboarding` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br>
            See [Onboarding notification](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservationonboardingnotification).

            '
          example: https://my.platform/api/lsk/webhook/onboarding
          type: string
          format: uri
        orderWebhookUrl:
          description: 'The URL where order notifications will be sent. <br> Required
            for [`order` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br>
            See [Order Notification](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservationordernotification).

            '
          example: https://my.platform/api/lsk/webhook/orders
          type: string
          format: uri
        posReservationUpdateWebhookUrl:
          description: The URL where notifications about reservation changes on POS
            will be sent.
          type: string
          format: uri
          example: https://my.platform/api/lsk/webhook/reservation
        ownNotificationsOnly:
          description: When `true`, notifications will only be sent for orders linked
            to the reservation platform.
          example: true
          type: boolean
        webhookAuthDetails:
          description: The authentication credentials to be sent with the webhook
            notifications.
          properties:
            apiKeys:
              "$ref": "#/components/schemas/reservation-servicePlatformAPIKeysWebhook"
            basic:
              "$ref": "#/components/schemas/reservation-servicePlatformBasicAuthWebhook"
            bearer:
              "$ref": "#/components/schemas/reservation-servicePlatformBearerTokenWebhook"
            oauth2:
              "$ref": "#/components/schemas/reservation-servicePlatformOAuth2Webhook"
          type: object
        webhookAuthType:
          description: The type of authentication used by the webhook.
          enum:
          - BASIC_AUTH
          - BEARER_TOKEN
          - API_KEYS
          - OAUTH2
          - NONE
          example: OAUTH2
          type: string
        allowCourseNumberUpdates:
          type: boolean
          example: true
          default: false
          description: If true, table statuses can be customized using a number format.
        inServiceTableStatuses:
          items:
            "$ref": "#/components/schemas/reservation-servicePlatformTableStatusDto"
          type: array
          description: List of customizable table statuses that will be used to notify
            platforms about reservation progress with outbound API.
        allowedPosStatuses:
          type: array
          items:
            "$ref": "#/components/schemas/reservation-servicePlatformReservationStatus"
      required:
      - displayName
      - webhookAuthType
      - webhookAuthDetails
      type: object
    reservation-servicePlatformProfileResponse:
      properties:
        baseUrl:
          description: The base URL of the external platform (optional).
          example: https://my.platform/api/lsk
          format: uri
          type: string
        depositSupported:
          "$ref": "#/components/schemas/reservation-servicePlatformDepositSupported"
        displayName:
          "$ref": "#/components/schemas/reservation-servicePlatformDisplayName"
        errorsWebhookUrl:
          description: 'The URL where notifications for any issues will be sent. <br>
            Required for [`error` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br>
            See [Get Sample Error notification](https://api-docs.lsk.lightspeed.app/operation/operation-reservationErrorNotification).

            '
          example: https://my.platform/api/lsk/webhook/errors
          type: string
          format: uri
        integrationWebhookUrl:
          description: 'The URL where notifications for activation or deactivation
            of the customer''s integration will be sent. <br> Required for [`integration`
            notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br>
            See [Integration notification](https://api-docs.lsk.lightspeed.app/operation/operation-reservationintegrationnotification).

            '
          example: https://my.platform/api/lsk/webhook/integrations
          type: string
          format: uri
        notificationTypes:
          description: The events that trigger a notification.
          example:
          - ORDER_CLOSED
          items:
            type: string
            enum:
            - ORDER_OPENED
            - ORDER_UPDATED
            - ORDER_CLOSED
            - ONBOARDING_STARTED
            - INTEGRATION_ACTIVATED
            - INTEGRATION_DEACTIVATED
            - POS_RESERVATION_UPDATED
            - ERROR
          type: array
          uniqueItems: true
        onboardingWebhookUrl:
          description: 'The URL where notifications for the customer''s integration
            onboarding will be sent. <br> Required for [`onboarding` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br>
            See [Onboarding notification](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservationonboardingnotification).

            '
          example: https://my.platform/api/lsk/webhook/onboarding
          type: string
          format: uri
        orderWebhookUrl:
          description: 'The URL where order notifications will be sent. <br> Required
            for [`order` notificationTypes](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-body-application-json-notificationtypes).<br>
            See [Order Notification](https://api-docs.lsk.lightspeed.app/prod/operation/operation-reservationordernotification).

            '
          example: https://my.platform/api/lsk/webhook/orders
          type: string
          format: uri
        posReservationUpdateWebhookUrl:
          description: The URL where notifications about reservation changes on POS
            will be sent.
          example: https://my.platform/api/lsk/webhook/reservation
          type: string
          format: uri
        ownNotificationsOnly:
          description: When `true`, notifications will only be sent for orders linked
            to the reservation platform.
          example: true
          type: boolean
        webhookAuthType:
          description: The type of authentication used by the webhook.
          enum:
          - BASIC_AUTH
          - BEARER_TOKEN
          - API_KEYS
          - OAUTH2
          - NONE
          example: OAUTH2
          type: string
        allowCourseNumberUpdates:
          type: boolean
          example: true
          default: false
          description: If true, table statuses can be customized using a number format.
        inServiceTableStatuses:
          items:
            "$ref": "#/components/schemas/reservation-servicePlatformTableStatusDto"
          type: array
          description: List of customizable table statuses that will be used to notify
            platforms about reservation progress with outbound API.
        allowedPosStatuses:
          type: array
          items:
            "$ref": "#/components/schemas/reservation-servicePlatformReservationStatus"
          description: Reservation statuses allowed for setting on a POS. PARTIALLY_ARRIVED
            should be included only with ARRIVED, and PARTIALLY_SEATED only with SEATED.
            Requires posReservationUpdateWebhookUrl to be set.
      required:
      - displayName
      - webhookAuthType
      type: object
    reservation-servicePlatformReservation:
      properties:
        guest:
          description: Guest information associated with the reservation.
          properties:
            email:
              description: The guest's email address.
              example: john.smith@email.com
              format: email
              type: string
            firstName:
              description: The guest's first name.
              example: John
              type: string
            lastName:
              description: The guest's last name.
              example: Smith
              type: string
            phone:
              description: The guest's phone number.
              example: "+13453455555"
              format: phone
              type: string
            platformGuestId:
              description: The external platform's unique identifier for the guest.
              example: ABC-123
              pattern: "[a-zA-Z0-9_-]+"
              type: string
            walkIn:
              default: false
              description: When `true`, indicates this is a walk-in reservation.
              example: true
              type: boolean
            foodAndDrinkNotes:
              example: Only milk and cookies!
              type: string
              description: Any details about guest's food and drink preferences.
            notes:
              example: Put the ring in the champagne!
              type: string
              description: Other notes about the guest.
            language:
              example: en
              type: string
              description: Guest's language; use [two-symbol ISO-639](https://www.loc.gov/standards/iso639-2/php/code_list.php)
                for best results on POS.
            allergens:
              example:
              - almonds
              - egg
              items:
                type: string
              type: array
              uniqueItems: true
              description: Any allergens linked to this guest. See [Allergens](https://api-portal.lsk.lightspeed.app/guides/reference/reference-tables/allergens)
                table for a list of allergen names with available translations. Any
                other text will be displayed as provided in the request body.
            dietaryRestrictions:
              example:
              - no alcohol
              - vegan
              items:
                type: string
              type: array
              uniqueItems: true
              description: Any dietary restrictions linked to this guest. See [Dietary
                Restrictions](https://api-portal.lsk.lightspeed.app/guides/reference/reference-tables/dietary-restrictions)
                table for a list of restrictions with available translations. Any
                other text will be displayed as provided in the request body.
          required:
          - platformGuestId
          - firstName
          type: object
        liability:
          "$ref": "#/components/schemas/reservation-serviceLiability"
        notes:
          example: More balloons!
          type: string
          description: Venue-entered notes specific to the reservation.
        specialOffer:
          example: Free dessert
          type: string
          description: Any special offer linked to the reservation.
        tags:
          example:
          - romantic meal
          - special occasion
          items:
            type: string
          type: array
          uniqueItems: true
          description: Tags linked to this reservation. See [Reservation Tags](https://api-portal.lsk.lightspeed.app/guides/reference/reference-tables/reservation-tags)
            table for a list of tags with available translations. All others will
            be displayed as provided in the request body.
        partySize:
          description: The number of expected guests.
          example: 2
          format: int32
          type: integer
        sequenceId:
          description: |
            An optional sequence number assigned by the external platform. If provided, it will be used to determine the order of updates of a reservation. It is the responsibility of the external platform to provide a monotonically increasing sequence number.
            If omitted, the utcUpdatedAt field will be used to determine the order of updates. That can be imprecise when dealing with events that happen in short timeframes in a distributed system.
            The value SHOULD NOT be set to null or zero or any special value, but instead omitted from the JSON object entirely if it is not used.
          example: 145789499819
          type: integer
          format: int64
        status:
          "$ref": "#/components/schemas/reservation-servicePlatformReservationStatus"
        tableNumbers:
          description: |
            The list of table numbers associated with this reservation.
            If no valid table is provided, POS order is not created.
          example:
          - '1'
          items:
            type: string
          type: array
          uniqueItems: true
        utcScheduledAt:
          description: The scheduled reservation time.
          example: '2024-01-01T20:00:00'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
        utcUpdatedAt:
          description: 'The timestamp of the most recent change to the reservation.

            '
          example: '2024-01-01T20:10:00'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
        guestRequest:
          description: Notes added to the reservation by the guest.
          example: I would need two baby chairs.
          type: string
        expectedDuration:
          description: Expected duration of the meal. ISO-8601 format.
          example: PT30M
          type: string
          format: duration
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
      required:
      - utcUpdatedAt
      - utcScheduledAt
      - partySize
      - guest
      - status
      type: object
    reservation-servicePlatformReservationId:
      description: The external platform's unique identifier for the reservation.
      example: Reservation-123
      maxLength: 36
      pattern: "[a-zA-Z0-9_-]+"
      type: string
    reservation-servicePlatformRestaurantId:
      description: The external platform's unique identifier for the restaurant.
      example: Restaurant-123
      pattern: "[a-zA-Z0-9_-]+"
      type: string
    reservation-servicePlatformRestaurantReference:
      description: The alias for a restaurant on an external platform, such as its
        unique identifier or local unique name.
      example: Schnitzel_and_Kartoffel
      pattern: "[a-zA-Z0-9_-]+"
      type: string
    reservation-servicePlatformReservationAcceptedDto:
      required:
      - accepted
      - platformCode
      - platformReservationId
      - platformRestaurantId
      type: object
      properties:
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformRestaurantId:
          description: The external platform's unique identifier for the restaurant.
          example: Restaurant-123
          pattern: "[a-zA-Z0-9_-]+"
          type: string
        platformReservationId:
          description: The external platform's unique identifier for the reservation.
          example: Reservation-123
          maxLength: 36
          pattern: "[a-zA-Z0-9_-]+"
          type: string
        accepted:
          description: Whether the reservation request was accepted.
          example: true
          type: boolean
    reservation-servicePlatformWebhookResponseDto:
      type: object
      description: Updated webhook authorization details.
      required:
      - accepted
      - currentAuthType
      properties:
        accepted:
          description: Whether the webhook request was accepted.
          example: true
          type: boolean
        currentAuthType:
          description: The current authentication type.
          enum:
          - BASIC_AUTH
          - BEARER_TOKEN
          - API_KEYS
          - OAUTH2
          type: string
    reservation-servicePosReservation:
      properties:
        businessLocationId:
          "$ref": "#/components/schemas/reservation-serviceBusinessLocationId"
        externalReference:
          description: External reference to the reservation.
          example: TASK:RN-1234567890-ABC#123
          type: string
        guest:
          properties:
            firstName:
              example: John
              type: string
            lastName:
              example: Smith
              type: string
            notes:
              example: Put the ring in the champagne!
              type: string
            language:
              example: en
              type: string
              description: The language in which all notes are written, two-symbol
                ISO-639 codes are available or UNKNOWN_LANGUAGE.
            allergens:
              example:
              - almonds
              - egg
              items:
                type: string
              type: array
              uniqueItems: true
            dietaryRestrictions:
              example:
              - no alcohol
              - vegan
              items:
                type: string
              type: array
              uniqueItems: true
          required:
          - firstName
          type: object
        liability:
          description: Reservation deposit details.
          properties:
            currency:
              description: The ISO-4217 currency code.
              example: EUR
              pattern: "[A-Z]{3}"
              type: string
            totalDepositAmount:
              description: Total sum of deposits, excluding refund transactions.
              example: 100
              type: integer
              format: int32
            totalDepositCents:
              description: Amount between 0-99.
              example: 99
              type: integer
              format: int32
            totalRefundAmount:
              description: Total sum of refund transactions.
              example: 100
              type: integer
              format: int32
            totalRefundCents:
              description: Amount between 0-99.
              example: 99
              type: integer
              format: int32
          required:
          - currency
          - totalDepositAmount
          - totalDepositCents
          - totalRefundAmount
          - totalRefundCents
          type: object
        notes:
          example: More balloons!
          type: string
        specialOffer:
          example: Free dessert
          type: string
        tags:
          example:
          - romantic meal
          - special occasion
          items:
            type: string
          type: array
          uniqueItems: true
        partySize:
          description: Expected number of guests for the reservation.
          example: 2
          format: int32
          type: integer
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformReservationId:
          "$ref": "#/components/schemas/reservation-servicePlatformReservationId"
        platformRestaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
        status:
          enum:
          - ON_HOLD
          - SCHEDULED
          - PARTIALLY_ARRIVED
          - ARRIVED
          - PARTIALLY_SEATED
          - SEATED
          - DEPARTED
          - CANCELLED
          - NO_SHOW
          - ERROR
          example: SCHEDULED
          type: string
        posOrderState:
          enum:
          - INITIATED
          - DISABLED
          - OPENED
          - FAILED
          example: OPENED
          type: string
        tableNumbers:
          description: List of table numbers for the reservation. 'seated' reservation
            event
          example:
          - '1'
          items:
            type: string
          type: array
          uniqueItems: true
        utcDepartedAt:
          description: Guest departure time.
          example: '2024-01-01T20:10:00'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
        utcScheduledAt:
          description: Guest arrival time.
          example: '2024-01-01T20:00:00'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
        utcSeatedAt:
          description: Guest seating time.
          example: '2024-01-01T20:10:00'
          format: date-time
          type: string
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonFormat(pattern
            = "yyyy-MM-dd''T''HH:mm:ss", shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING,
            timezone = "UTC")'
        guestRequest:
          description: Notes added to the reservation by the guest.
          example: I would need two baby chairs.
          type: string
        sequenceId:
          format: int64
          type: integer
        expectedDuration:
          description: Expected duration of the meal. ISO-8601 format.
          example: PT30M
          type: string
          format: duration
      required:
      - platformCode
      - platformRestaurantId
      - platformReservationId
      - businessLocationId
      - utcScheduledAt
      - externalReference
      - partySize
      - tags
      - tableNumbers
      - status
      type: object
    reservation-servicePlatformReservationStatus:
      description: External reservation statuses for platforms.
      enum:
      - ON_HOLD
      - SCHEDULED
      - PARTIALLY_ARRIVED
      - ARRIVED
      - PARTIALLY_SEATED
      - SEATED
      - DEPARTED
      - CANCELLED
      - NO_SHOW
      - ERROR
      example: SCHEDULED
      type: string
    reservation-serviceStatus:
      description: Extended Lightspeed reservation statuses.
      enum:
      - ON_HOLD
      - SCHEDULED
      - PARTIALLY_ARRIVED
      - ARRIVED
      - PARTIALLY_SEATED
      - SEATED
      - DEPARTED
      - CANCELLED
      - NO_SHOW
      - ERROR
      - PAID
      example: SEATED
      type: string
    reservation-serviceOrderUpdate:
      properties:
        account:
          "$ref": "#/components/schemas/reservation-serviceAccount"
        businessLocationId:
          "$ref": "#/components/schemas/reservation-serviceBusinessLocationId"
        notificationType:
          enum:
          - OPEN
          - UPDATE
          - CLOSE
          - CANCEL
          type: string
        platformRestaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
        sequenceId:
          type: string
        platformReservationId:
          "$ref": "#/components/schemas/reservation-servicePlatformReservationId"
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
      type: object
    reservation-servicePosReservationUpdate:
      properties:
        platformCode:
          "$ref": "#/components/schemas/reservation-servicePlatformCode"
        platformRestaurantId:
          "$ref": "#/components/schemas/reservation-servicePlatformRestaurantId"
        platformReservationId:
          "$ref": "#/components/schemas/reservation-servicePlatformReservationId"
        businessLocationId:
          "$ref": "#/components/schemas/reservation-serviceBusinessLocationId"
        status:
          "$ref": "#/components/schemas/reservation-serviceStatus"
        tables:
          description: Name of tables associated with the reservation.
          type: array
          items:
            type: string
          example:
          - 1A
          - 2B
        covers:
          description: The number of covers associated with the reservation.
          format: int32
          type: integer
      type: object
    reservation-serviceTax:
      properties:
        code:
          description: Code of the tax as defined in the configuration context.
          example: TVA77
          type: string
        description:
          description: Name of the tax as defined in the configuration context.
          example: TVA 7.7%
          type: string
        rate:
          description: Tax percentage (e.g. 19% => '1.19').
          example: 1.07
          format: double
          type: number
        taxIncluded:
          description: Indicates whether the tax is VAT or Sales Tax.
          example: true
          type: boolean
      type: object
    reservation-serviceTransactionLine:
      properties:
        accountId:
          description: Legacy account identifier created by the POS (supplied because
            older API provides it to 3rd parties).
          example: '502721627029505'
          type: string
        accountingGroupId:
          description: The unique identifier of the product group assigned to the
            item.
          example: '77309411368'
          type: string
        accountingGroupName:
          description: Name of the product group assigned to the item.
          example: Misc
          type: string
        activeTax:
          "$ref": "#/components/schemas/reservation-serviceTax"
        amount:
          description: The actual (final) amount the customer will be charged, ie.
            `regularAmount` with `modifiers` applied.
          example: 0.45
          type: number
        amountLessTax:
          description: Taxable amount not including any taxes.
          example: 4.21
          type: number
        amountWithTax:
          description: Final amount including taxes.
          example: 4.5
          type: number
        categories:
          description: A list of the reporting categories in which the sale is to
            be aggregated.
          items:
            "$ref": "#/components/schemas/reservation-serviceCategory"
          type: array
        date:
          description: Timestamp in ms of the moment when the line was registered.
            by the user
          example: 1694083815402
          format: int64
          type: integer
        discountedAmount:
          description: The line discount amount applied to the line.
          example: 0.05
          type: number
        grossUnitAmount:
          description: Regular price for one unit of the line item.
          example: 4.5
          type: number
        id:
          description: Legacy line identifier created by the POS (supplied because
            older API provides it to 3rd parties).
          example: '502721627029513'
          type: string
        itemDescription:
          description: Name of the item sold.
          example: Dom Pérignon
          type: string
        itemId:
          description: The unique identifier of the item at the business location.
          example: '77309411427'
          type: string
        itemSku:
          description: SKU (stock keeping unit) of the item.
          example: '6'
          type: string
        modifiers:
          description: A production instruction entered for a line.
          items:
            "$ref": "#/components/schemas/reservation-serviceModifier"
          type: array
        nameOverride:
          description: Manually entered item name
          example: Burger for our friend Ben
          type: string
        phase:
          description: Course number assigned to the line.
          example: 0
          format: int32
          type: integer
        quantity:
          description: Quantity
          example: 6
          type: number
        tags:
          description: Array of tags associated with the sales line.
          example: Test tag 4
          type: string
        unitAmount:
          description: Actual amount for one unit of the line item including all markup,
            markdowns & surcharges.
          example: 0.9
          type: number
      type: object
    reservation-serviceWebExtensionButton:
      properties:
        id:
          format: int64
          type: integer
        screenId:
          format: int64
          type: integer
      type: object
    reservation-servicePlatformTableStatusDto:
      properties:
        statusLabel:
          type: string
          example: Appetizer
          description: The unique text which will be displayed in the back-office
            for users.
        statusValue:
          type: string
          example: appetizer
          description: The unique code which will be used for outbound communication
            within table status mapping.
        sequence:
          format: int32
          type: integer
          example: 1
          description: This number is used to resolve collisions between statuses
            in order of highest priority.
      type: object
      required:
      - statusLabel
      - statusValue
      - sequence
    reservation-servicePlatformCourseSettingsDto:
      properties:
        allowCourseNumberUpdates:
          type: boolean
          example: true
          default: false
          description: If true, table statuses can be customized using a number format.
        inServiceTableStatuses:
          items:
            "$ref": "#/components/schemas/reservation-servicePlatformTableStatusDto"
          type: array
          description: List of customizable table statuses that will be used to notify
            platforms about reservation progress with outbound API.
      type: object
    reservation-serviceTable:
      description: a POS table
      properties:
        name:
          description: The alphanumeric name (code).
          type: string
          example: 1A
        number:
          description: The table number.
          format: int32
          type: integer
          example: 1
        reference:
          description: The table reference.
          type: string
          example: abcdefg123456
        id:
          description: The unique identifier for this table.
          type: string
          example: '141948669132977'
        active:
          description: If the table is active.
          type: boolean
          example: true
        description:
          description: The table description.
          type: string
          example: Table 1
        defaultClientCount:
          description: The default client count for this table.
          format: int32
          type: integer
          example: 4
      type: object
    reservation-serviceLightspeedOrigin:
      description: Extended Lightspeed reservation statuses.
      enum:
      - BACKOFFICE
      - ONLINE
      - POS
      - WIDGET
      - GOOGLE_INTEGRATION
      example: POS
      type: string
    staff-apiStaffLiteDto:
      type: object
      properties:
        staffId:
          "$ref": "#/components/schemas/staff-apiStaffId"
        username:
          "$ref": "#/components/schemas/staff-apiUsername"
        firstName:
          "$ref": "#/components/schemas/staff-apiFirstName"
        lastName:
          "$ref": "#/components/schemas/staff-apiLastName"
        email:
          "$ref": "#/components/schemas/staff-apiEmail"
    staff-apiCreateWebhookRequest:
      type: object
      required:
      - notificationType
      - url
      - webhookName
      properties:
        notificationType:
          "$ref": "#/components/schemas/staff-apiWebhookTopic"
        url:
          type: string
          description: The URL for the webhook.
          format: uri
        webhookName:
          type: string
          description: The name for the webhook.
    staff-apiResponseSchema:
      type: object
      properties:
        data:
          type: object
          items: {}
        links:
          type: object
          properties:
            first:
              type: object
              properties:
                href:
                  type: string
                  description: The URL for the first page of results.
                  format: uri
                  example: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
            self:
              type: object
              properties:
                href:
                  type: string
                  description: The URL for the current page of results.
                  format: uri
                  example: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=1&size=1&sort=userId,desc
            next:
              type: object
              properties:
                href:
                  type: string
                  description: The URL for the next page of results.
                  format: uri
                  example: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=2&size=1&sort=userId,desc
            last:
              type: object
              properties:
                href:
                  type: string
                  description: The URL for the last page of results.
                  format: uri
                  example: https://api-trial.ikentoo.com/staff/v1/businessLocations/40570261078018/userTypes/POS?page=5&size=1&sort=userId,desc
        page:
          "$ref": "#/components/schemas/staff-apiPageInfo"
    staff-apiPageInfo:
      type: object
      properties:
        page:
          type: integer
          example: 1
          description: The current page number.
        size:
          type: integer
          example: 10
          description: The number of elements in the page.
        totalElements:
          type: integer
          example: 100
          description: The total number of elements.
        totalPages:
          type: integer
          example: 10
          description: The total number of pages of results.
    staff-apiEvent:
      description: Shift event such as clock in/out, please use the newest one when
        multiple events existing with same event type.
      type: object
      properties:
        uuid:
          description: The unique identifier for the event.
          type: string
          example: REcdfpCwQJKUR53gdzIk5Q==
        timestamp:
          description: The time of the event.
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
        createdOn:
          description: The creation time of the event.
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
        eventType:
          "$ref": "#/components/schemas/staff-apiEventType"
    staff-apiShift:
      description: Shift details.
      x-plural: shifts
      type: object
      properties:
        uuid:
          description: The unique identifier for the shift.
          type: string
          example: REcdfpCwQJKUR53gdzIk5Q==
        businessId:
          description: The unique identifier for the business.
          type: integer
          format: int64
          example: 12345
        businessLocationId:
          description: The unique identifier for the business location.
          type: integer
          format: int64
          example: 1234567890
        deviceId:
          description: The unique identifier for the device.
          type: integer
          format: int64
          example: 54321
        staffId:
          description: The unique identifier for the user.
          type: integer
          format: int64
          example: 1234
        declaredCashTips:
          description: The declared tips for the shift.
          type: string
          example: '10.00'
          multipleOf: 0.01
        dateInUTC:
          description: The timestamp of the last update to the shift.
          type: string
          format: date-time
          example: '2020-01-01T00:00:00Z'
        events:
          description: List of events during the shift.
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiEvent"
    staff-apiWebhookTopic:
      description: The type of webhook notification.
      type: string
      enum:
      - shift.created
      - shift.updated
      - shift.deleted
    staff-apiEventType:
      description: The type of event.
      type: string
      enum:
      - CLOCK_IN
      - CLOCK_OUT
    staff-apiUserType:
      description: The user type.
      type: string
      enum:
      - POS
      - BACK_OFFICE
      - API
    staff-apiPOSStaff:
      type: object
      x-plural: staff
      properties:
        staffId:
          "$ref": "#/components/schemas/staff-apiStaffId"
        username:
          "$ref": "#/components/schemas/staff-apiUsername"
        userTypes:
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiUserType"
        firstName:
          "$ref": "#/components/schemas/staff-apiFirstName"
        lastName:
          "$ref": "#/components/schemas/staff-apiLastName"
        active:
          "$ref": "#/components/schemas/staff-apiActive"
        pinCodeSet:
          "$ref": "#/components/schemas/staff-apiPinCodeSet"
        createdOn:
          "$ref": "#/components/schemas/staff-apiCreatedOn"
        modifiedOn:
          "$ref": "#/components/schemas/staff-apiModifiedOn"
        businessId:
          "$ref": "#/components/schemas/staff-apiBusinessId"
        businessLocationId:
          "$ref": "#/components/schemas/staff-apiBusinessLocationId"
        groups:
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiStaffGroupIdDto"
        reportAccess:
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiReportAccess"
        roles:
          type: array
          description: The roles assigned to the user.
          items:
            "$ref": "#/components/schemas/staff-apiStaffRoleDto"
    staff-apiBOStaff:
      type: object
      x-plural: staff
      properties:
        staffId:
          "$ref": "#/components/schemas/staff-apiStaffId"
        userTypes:
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiUserType"
        firstName:
          "$ref": "#/components/schemas/staff-apiFirstName"
        lastName:
          "$ref": "#/components/schemas/staff-apiLastName"
        email:
          "$ref": "#/components/schemas/staff-apiEmail"
        active:
          "$ref": "#/components/schemas/staff-apiActive"
        createdOn:
          "$ref": "#/components/schemas/staff-apiCreatedOn"
        modifiedOn:
          "$ref": "#/components/schemas/staff-apiModifiedOn"
        businessId:
          "$ref": "#/components/schemas/staff-apiBusinessId"
        businessLocationId:
          "$ref": "#/components/schemas/staff-apiBusinessLocationId"
        groups:
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiStaffGroupIdDto"
        reportAccess:
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiReportAccess"
        roles:
          type: array
          description: The roles assigned to the user.
          items:
            "$ref": "#/components/schemas/staff-apiStaffRoleDto"
    staff-apiStaff:
      type: object
      x-plural: staff
      properties:
        staffId:
          "$ref": "#/components/schemas/staff-apiStaffId"
        username:
          "$ref": "#/components/schemas/staff-apiUsername"
        userTypes:
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiUserType"
        firstName:
          "$ref": "#/components/schemas/staff-apiFirstName"
        lastName:
          "$ref": "#/components/schemas/staff-apiLastName"
        email:
          "$ref": "#/components/schemas/staff-apiEmail"
        active:
          "$ref": "#/components/schemas/staff-apiActive"
        pinCodeSet:
          "$ref": "#/components/schemas/staff-apiPinCodeSet"
        createdOn:
          "$ref": "#/components/schemas/staff-apiCreatedOn"
        modifiedOn:
          "$ref": "#/components/schemas/staff-apiModifiedOn"
        businessId:
          "$ref": "#/components/schemas/staff-apiBusinessId"
        businessLocationId:
          "$ref": "#/components/schemas/staff-apiBusinessLocationId"
        groups:
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiStaffGroupIdDto"
        reportAccess:
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiReportAccess"
        roles:
          type: array
          description: The roles assigned to the user.
          items:
            "$ref": "#/components/schemas/staff-apiStaffRoleDto"
    staff-apiUpdatePosStaffDto:
      type: object
      required:
      - username
      - pinCode
      - firstName
      - lastName
      - active
      - visible
      - reportAccess
      - roles
      properties:
        username:
          "$ref": "#/components/schemas/staff-apiUsername"
        pinCode:
          type: string
          maxLength: 4
          description: The 4-digit pin code for the user.
          example: '1234'
        firstName:
          "$ref": "#/components/schemas/staff-apiFirstNameNoDefault"
        lastName:
          "$ref": "#/components/schemas/staff-apiLastNameNoDefault"
        active:
          "$ref": "#/components/schemas/staff-apiActiveNoDefault"
        visible:
          "$ref": "#/components/schemas/staff-apiVisibleNoDefault"
        group:
          type: integer
          format: int64
          default: -1
          x-positive-number-required: true
          description: The unique identifier for the user group.
        reportAccess:
          "$ref": "#/components/schemas/staff-apiReportAccessNoDefault"
        roles:
          type: array
          x-default-null: true
          description: The roles assigned to the user.
          items:
            "$ref": "#/components/schemas/staff-apiCreatestaffRoleDto"
    staff-apiCreatePosStaffDto:
      type: object
      required:
      - username
      properties:
        username:
          "$ref": "#/components/schemas/staff-apiUsername"
        pinCode:
          type: string
          maxLength: 4
          nullable: true
          description: The 4-digit pin code for the user.
          example: '1234'
        firstName:
          "$ref": "#/components/schemas/staff-apiFirstName"
        lastName:
          "$ref": "#/components/schemas/staff-apiLastName"
        active:
          "$ref": "#/components/schemas/staff-apiActive"
        visible:
          "$ref": "#/components/schemas/staff-apiVisible"
        group:
          type: integer
          format: int64
          description: The unique identifier for the user group.
        reportAccess:
          "$ref": "#/components/schemas/staff-apiReportAccess"
        roles:
          description: The roles assigned to the user.
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiCreatestaffRoleDto"
          default: []
    staff-apiStaffGroupIdDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for the user group.
          example: 1234
        name:
          type: string
          description: The name of the user group.
          example: Bar Staff
    staff-apiStaffRoleDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for the role.
          example: 1234
        name:
          type: string
          description: The name of the role.
          example: ROLE_CAN_LOGIN
    staff-apiStaffGroup:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for the user group.
          example: 1234
        name:
          type: string
          description: The name of the user group.
          example: Bar Staff
        roles:
          type: array
          items:
            "$ref": "#/components/schemas/staff-apiStaffRoleDto"
        reportAccess:
          "$ref": "#/components/schemas/staff-apiReportAccess"
    staff-apiWebhookEventDto:
      type: object
      properties:
        notificationType:
          "$ref": "#/components/schemas/staff-apiWebhookTopic"
        data:
          "$ref": "#/components/schemas/staff-apiShift"
    staff-apiWebhookDto:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
          description: The unique identifier for the webhook.
          example: e95c2cc5-4489-4025-a7e2-a34faeaa5f9d
        notificationType:
          "$ref": "#/components/schemas/staff-apiWebhookTopic"
        url:
          type: string
          description: The URL for the webhook.
        webhookName:
          type: string
          description: The name for the webhook.
          example: My Awesome Webhook
        businessLocationId:
          type: integer
          format: int64
          description: The unique identifier for the business location.
          example: 1234567890
        createdAt:
          type: string
          format: date-time
          description: The creation time of the webhook.
        updatedAt:
          type: string
          format: date-time
          description: The last update time of the webhook.
    staff-apiBusinessLocationIds:
      type: object
      properties:
        businessLocationIds:
          type: array
          items:
            type: integer
            format: int64
          description: List of all `businessLocationIds` to be added.
          example:
          - 123456789
          - 987654321
    staff-apiReportAccessNoDefault:
      type: string
      description: User report permissions.
    staff-apiReportAccess:
      type: string
      default: STAFF_REPORT_OWN_ACCESS
      description: User report permissions.
    staff-apiReportAccessLevel:
      type: object
      x-plural: reportAccessLevels
      properties:
        value:
          type: string
          description: The value of the report access level.
          example: STAFF_REPORT_OWN_ACCESS
        description:
          type: string
          description: The description of the report access level.
          example: The POS user can see their own reports
    staff-apiUserPermission:
      type: object
      x-plural: userPermissions
      properties:
        value:
          type: string
          description: The value of the user permission.
          example: ROLE_MANAGER
        description:
          type: string
          description: The description of the user permission.
          example: POS user is a manager
    staff-apiValidatePincodeStatus:
      type: string
      description: Status of the pincode validation
      enum:
      - OK
      - WRONG_PIN
      - PIN_IS_NOT_SET
      example: OK
    staff-apiUsername:
      description: The staff username. Only used for POS staff.
      type: string
      x-nonempty: true
      maxLength: 128
      example: John Doe
    staff-apiStaffId:
      type: integer
      format: int64
      description: The unique identifier for the user.
      example: 1234
    staff-apiFirstName:
      type: string
      maxLength: 128
      description: The first name of the user.
      default: ''
      example: John
    staff-apiFirstNameNoDefault:
      type: string
      maxLength: 128
      description: The first name of the user.
      example: John
    staff-apiLastName:
      type: string
      maxLength: 128
      description: The last name of the user.
      default: ''
      example: Doe
    staff-apiLastNameNoDefault:
      type: string
      maxLength: 128
      description: The last name of the user.
      example: Doe
    staff-apiActive:
      type: boolean
      default: true
      description: Indicates if the user is active.
    staff-apiActiveNoDefault:
      type: boolean
      description: Indicates if the user is active.
    staff-apiVisible:
      type: boolean
      default: true
      description: Indicates if the user is visible.
    staff-apiVisibleNoDefault:
      type: boolean
      description: Indicates if the user is visible.
    staff-apiPinCodeSet:
      type: boolean
      description: Indicates if the user has a PIN code set. Relevant for POS users
        only.
    staff-apiCreatedOn:
      type: string
      format: date-time
      description: The timestamp of the creation of the user.
    staff-apiModifiedOn:
      type: string
      format: date-time
      description: The timestamp of the last update to the user.
    staff-apiBusinessId:
      type: integer
      format: int64
      description: The unique identifier for the business.
      example: 12345
    staff-apiBusinessLocationId:
      type: integer
      format: int64
      description: The unique identifier for the business location.
      example: 1234567890
    staff-apiEmail:
      description: The email associated with the user. Only used for Back Office staff.
      type: string
      format: email
      maxLength: 128
    staff-apiCreatestaffRoleDto:
      type: string
      description: List of roles assigned to the user. Normally, these are the default
        POS user roles. See [Get All POS User Permissions](https://api-docs.lsk.lightspeed.app/operation/operation-staff-apigetposuserpermissions)
        for a list of roles.
    teckelBusinessId:
      example: 454335871
      description: The unique identifier for the business.
      type: integer
      format: int64
    teckelSKU:
      example: UGG-BB-PUR-06
      maxLength: 25
      description: The SKU of the item.
      type: string
    teckelLocalesDto:
      description: A list of locales.
      example:
      - en
      - es
      - de
      - fr
      items:
        type: string
      type: array
    teckelLink:
      properties:
        deprecation:
          type: string
        href:
          type: string
        hreflang:
          type: string
        name:
          type: string
        profile:
          type: string
        templated:
          type: boolean
        title:
          type: string
        type:
          type: string
      type: object
    teckelLinks:
      additionalProperties:
        "$ref": "#/components/schemas/teckelLink"
      type: object
    teckelPictureSpecDto:
      description: Contains picture requirements.
      properties:
        _links:
          "$ref": "#/components/schemas/teckelLinks"
        minHeight:
          description: The minimum image height.
          format: int32
          type: integer
        minWidth:
          description: The minimum image width.
          format: int32
          type: integer
        requiredAspectRatio:
          description: The image aspect ratio (width divided by length). If not set,
            there is no aspect ratio check.
          format: float
          type: number
      type: object
    teckelLinkSelf:
      type: object
      properties:
        self:
          properties:
            href:
              example: https://api.trial.lsk.lightspeed.app/i/richItem/8262/UGG-BB-PUR-06
              type: string
              description: The URL of the item.
          type: object
    teckelLinkSelfPage:
      type: object
      properties:
        self:
          properties:
            href:
              example: https://api.trial.lsk.lightspeed.app/i/i/richItem/8262?page=0&size=100&sort=
              type: string
              description: The URL of the page of results.
          type: object
    teckelLinkItems:
      type: object
      properties:
        items:
          properties:
            href:
              example: https://api.trial.lsk.lightspeed.app/i/richItem/8262/
              type: string
              description: The URL for all items.
          type: object
    teckelRichItemDto:
      properties:
        businessId:
          "$ref": "#/components/schemas/teckelBusinessId"
        sku:
          "$ref": "#/components/schemas/teckelSKU"
        descriptions:
          description: List of localized descriptions
          example:
          - localeCode: de
            description: Das ist ein Test
            displayName: Rich Item 1 DE
          - localeCode: en
            description: This is a test for a rich item
            displayName: Rich Item 1
          items:
            "$ref": "#/components/schemas/teckelRichItemDescriptionDto"
          uniqueItems: true
          type: array
        allergenCodes:
          description: List of allergen codes.
          example:
          - milk
          - cereals
          items:
            type: string
          uniqueItems: true
          type: array
      type: object
    teckelRichItemDtoDates:
      properties:
        creationDate:
          description: The creation date of the item.
          example: '2021-11-03T13:50:47Z'
          type: string
          format: date-time
        lastUpdateDate:
          description: The last update date of the item.
          example: '2021-11-11T16:29:56Z'
          type: string
          format: date-time
      type: object
    teckelRichItemDtoPictures:
      properties:
        pictureUrl:
          example: http://s3-eu-west-1.amazonaws.com/com.ikentoo.trial.rich-content-store/25372_029b5ad1-08f7-4e1f-9087-3ca91ad818f7.png
          description: The URL of the picture.
          type: string
        previewPictureUrl:
          example: http://s3-eu-west-1.amazonaws.com/com.ikentoo.trial.rich-content-store/25372_029b5ad1-08f7-4e1f-9087-3ca91ad818f7.png
          description: The URL of the preview picture.
          type: string
        rawPictureUrl:
          example: http://s3-eu-west-1.amazonaws.com/com.ikentoo.trial.rich-content-store/25372_029b5ad1-08f7-4e1f-9087-3ca91ad818f7_raw.png
          description: The URL of the raw picture.
          type: string
      type: object
    teckelRichItemDtoLinks:
      properties:
        _links:
          allOf:
          - "$ref": "#/components/schemas/teckelLinkSelf"
          - "$ref": "#/components/schemas/teckelLinkItems"
      type: object
    teckelRichItemDescriptionDto:
      description: Stores an item description with its locale code.
      example:
        localeCode: fr
        description: Ceci est un café. L'apostrophe.
        displayName: Super expresso
      properties:
        localeCode:
          description: The language code (ISO 639) of the description.
          minLength: 2
          maxLength: 7
          nullable: false
          type: string
        description:
          description: The item description in the language of the locale.
          maxLength: 4000
          type: string
        displayName:
          description: The display name of the item in the language of the locale.
          type: string
      required:
      - localeCode
      type: object
  responses:
    Ok:
      description: Ok
    BadRequest:
      description: Bad Request
      content:
        application/problem+json:
          schema:
            "$ref": "#/components/schemas/pulse-serviceProblemDetail"
    Unauthorized:
      description: Not authenticated
      content:
        application/problem+json:
          schema:
            "$ref": "#/components/schemas/pulse-serviceProblemDetail"
    NotFound:
      description: Not Found
      content:
        application/problem+json:
          schema:
            "$ref": "#/components/schemas/pulse-serviceProblemDetail"
    Forbidden:
      description: Forbidden
      content:
        application/problem+json:
          schema:
            "$ref": "#/components/schemas/pulse-serviceProblemDetail"
    InternalServerError:
      description: Internal Server Error
      content:
        application/problem+json:
          schema:
            "$ref": "#/components/schemas/pulse-serviceProblemDetail"
    BadRequestException:
      description: Bad Request
      content:
        application/problem+json:
          schema:
            "$ref": "#/components/schemas/pulse-serviceProblemDetail"
    NotFoundException:
      description: Not Found
      content:
        application/problem+json:
          schema:
            "$ref": "#/components/schemas/pulse-serviceProblemDetail"
    Conflict:
      description: Conflict
      content:
        application/problem+json:
          schema:
            "$ref": "#/components/schemas/pulse-serviceProblemDetail"
    ForbiddenException:
      description: Forbidden
      content:
        application/problem+json:
          schema:
            "$ref": "#/components/schemas/pulse-serviceProblemDetail"
  parameters:
    apaleo-integrationbusinessLocationId:
      in: path
      name: businessLocationId
      required: true
      schema:
        format: int64
        type: integer
      example: 45454565682155
      description: the id of the businessLocation
    belgium-fiscalBusinessLocationId:
      in: path
      name: businessLocationId
      required: true
      description: Business location id
      schema:
        type: integer
        format: int64
    business-config-apiPaymentMethodId:
      in: path
      name: paymentMethodId
      required: true
      description: Payment method id
      schema:
        type: integer
        format: int64
    business-config-apilspayAdyenAccountInfoId:
      in: path
      name: lspayAdyenAccountInfoId
      required: true
      description: Lspay Adyen Account Info Id
      schema:
        type: integer
        format: int64
    business-config-apiBusinessLocationId:
      in: path
      name: businessLocationId
      required: true
      description: Business location id
      schema:
        type: integer
        format: int64
    business-config-apiPaymentMethodCode:
      in: path
      name: paymentMethodCode
      required: true
      description: Payment Method Code
      schema:
        type: string
    business-config-apiIsActive:
      in: query
      name: is-active
      required: true
      description: Indicates if the object must be active
      schema:
        type: boolean
    business-config-apiBusinessId:
      in: path
      name: businessId
      required: true
      description: Business id
      schema:
        type: integer
        format: int64
    business-config-apiDiscountId:
      in: path
      name: discountId
      required: true
      description: Discount id
      schema:
        type: integer
        format: int64
    business-config-apiIncludeDefaultProfile:
      in: query
      name: includeDefaultProfile
      required: false
      description: Indicates whether to include default profile in response
      schema:
        type: boolean
        default: false
    business-config-apiTargetUserId:
      in: path
      name: targetUserId
      required: true
      description: Staff id
      schema:
        type: integer
        format: int64
    business-config-apiEmailAddress:
      in: query
      name: emailAddress
      description: Email Address
      schema:
        type: string
    business-config-apiAccountProfileId:
      in: path
      name: accountProfileId
      required: true
      description: Account Profile Id
      schema:
        type: integer
        format: int64
    business-config-apiTransactionTagId:
      in: path
      name: transactionTagId
      required: true
      description: Transaction tag id
      schema:
        type: integer
        format: int64
    business-config-apiProductionCenterId:
      in: path
      name: productionCenterId
      required: true
      description: Production Center Id
      schema:
        type: integer
        format: int64
    business-config-apiPrintingProfileId:
      in: path
      name: printingProfileId
      required: true
      description: Printing Profile Id
      schema:
        type: integer
        format: int64
    business-config-apiFiscalDataModuleId:
      in: path
      name: fiscalDataModuleId
      required: true
      description: Fiscal Data Module Id
      schema:
        type: integer
        format: int64
    business-config-apiBusinessType:
      in: query
      name: business-type
      required: true
      description: Business type
      schema:
        type: string
    business-config-apiSearchTerm:
      in: query
      name: searchTerm
      required: false
      description: Search term
      schema:
        type: string
    business-config-apiVoidReasonId:
      in: path
      name: voidReasonId
      required: true
      description: Void reason id
      schema:
        type: integer
        format: int64
    business-config-apiExcludeLsPaymentMethods:
      in: query
      name: excludeLsPaymentMethods
      required: false
      description: Indicates whether to exclude LS payment methods in response
      schema:
        type: boolean
        default: false
    businessinfo-apiBusinessLocationId:
      in: path
      name: businessLocationId
      required: true
      description: Business location id
      schema:
        type: integer
        format: int64
    businessinfo-apiBusinessId:
      in: path
      name: businessId
      required: true
      description: Business id
      schema:
        type: integer
        format: int64
    businessinfo-apiLicenseStatusQueryParam:
      name: license-status
      in: query
      required: false
      schema:
        "$ref": "#/components/schemas/businessinfo-apiLicenseStatusEnumDto"
    businessinfo-apiBusinessIsActive:
      name: business-is-active
      in: query
      required: false
      schema:
        type: boolean
    businessinfo-apiAttachToUser:
      name: attached-to-user
      in: query
      required: false
      schema:
        type: boolean
    businessinfo-apiPage:
      name: page
      in: query
      required: false
      schema:
        type: integer
        format: int32
        default: 0
        minimum: 0
    businessinfo-apiPageSize:
      name: page-size
      in: query
      required: false
      schema:
        type: integer
        format: int32
        default: 50
    businessinfo-apiSize:
      name: size
      in: query
      required: false
      schema:
        maximum: 1000
        minimum: 1
        type: integer
        format: int32
        default: 10
    businessinfo-apiIsAction:
      name: is-active
      in: query
      required: false
      schema:
        type: boolean
    businessinfo-apiCountry:
      name: country
      in: path
      required: true
      schema:
        type: string
        minLength: 2
        maxLength: 2
    customers-apiBusinessId:
      name: businessId
      in: path
      required: true
      schema:
        type: integer
        format: int64
    customers-apiCustomerId:
      name: customerId
      in: path
      required: true
      schema:
        type: integer
        format: int64
    developer-portal-serviceStart:
      name: start
      in: query
      required: false
      schema:
        type: string
        format: date-time
        description: Start of date range to filter by
        title: Start
      description: Start of date range to filter by
    developer-portal-serviceEnd:
      name: end
      in: query
      required: false
      schema:
        type: string
        format: date-time
        description: End of date range to filter by
        title: End
      description: End of date range to filter by
    developer-portal-serviceSort:
      name: sort
      in: query
      required: false
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/developer-portal-serviceSortBy"
        description: Sort in ascending or descending order on one or more fields.
          Fields that are prefixed with a `-` will be sorted in descending order while
          those without the prefix will be sorted in ascending order.
        title: Sort
      description: Sort in ascending or descending order on one or more fields. Fields
        that are prefixed with a `-` will be sorted in descending order while those
        without the prefix will be sorted in ascending order.
    developer-portal-serviceStatus:
      name: status
      in: query
      required: false
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/developer-portal-serviceRequestStatus"
        description: Filter by the status of the request. Supports filtering by one
          or more statuses.
        title: Status
      description: Filter by the status of the request. Supports filtering by one
        or more statuses.
    developer-portal-serviceRequestType:
      name: request_type
      in: query
      required: false
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/developer-portal-serviceRequestType"
        description: Filter by one or more request types by providing the type of
          request(s).
        title: Request Type
      description: Filter by one or more request types by providing the type of request(s).
    developer-portal-serviceSearchPhrase:
      name: search_phrase
      in: query
      required: false
      schema:
        type: string
        description: The search phrase is what we use to match the results. If empty,
          all results are returned. If non-empty, we will match on the provisioned
          id (e.g. business location id, client id), the display name of the client,
          or the business name. The match is done by looking for exact substring matches
          and is not case sensitive. For example, "foo bar" will match a business
          called "This is Foo bar 2" but not "Foo's Bar".
        default: ''
        title: Search Phrase
      description: The search phrase is what we use to match the results. If empty,
        all results are returned. If non-empty, we will match on the provisioned id
        (e.g. business location id, client id), the display name of the client, or
        the business name. The match is done by looking for exact substring matches
        and is not case sensitive. For example, "foo bar" will match a business called
        "This is Foo bar 2" but not "Foo's Bar".
    developer-portal-servicePage:
      name: page
      in: query
      required: false
      schema:
        type: integer
        description: The page number to return. Defaults to 1.
        default: 1
        minimum: 1
        title: Page
      description: The page number to return. Defaults to 1.
    developer-portal-servicePageSize:
      name: page_size
      in: query
      required: false
      schema:
        type: integer
        description: The number of items to return per page. Defaults to 25.
        default: 25
        minimum: 1
        title: Page Size
      description: The number of items to return per page. Defaults to 25.
    financial-apiPageSize:
      in: query
      name: pageSize
      schema:
        type: integer
        format: int32
        default: 50
        maximum: 100
      description: Number of entries to return.
    financial-apiNextPageToken:
      in: query
      name: nextPageToken
      schema:
        type: string
        default: ''
      description: A token that indicates the starting point of the next set of records
        when paginating through results.
    financial-apiBusinessLocationId:
      in: path
      name: businessLocationId
      required: true
      schema:
        format: int64
        type: integer
        minimum: 1
      example: 45454565682155
      description: The unique identifier for the business location.
    financial-apiExternalReferenceId:
      schema:
        type: string
        example: TASK:OO-{businessLocationId}-{unique-reference-code}
      name: externalReferenceId
      description: The external reference of the receipt. See [externalReferences](https://api-docs.lsk.lightspeed.app/operation/operation-financial-apigetfinancials#operation-financial-apigetfinancials-200-body-application-json-sales-externalreferences).
      in: query
      required: true
    financial-apiDateParameter:
      schema:
        example: '2021-10-28'
        type: string
        format: date
      name: date
      description: The date in YYYY-MM-DD format.
      in: query
      required: false
    financial-apiFromParameter:
      schema:
        example: '2021-09-21T10:11:56Z'
        type: string
        format: date-time
      name: from
      description: |-
        Start of requested results, in ISO 8601 format.

        Example:`2022-09-21T10:11:56Z` or `2022-09-21T06:11:56-04:00`
      in: query
      required: false
    financial-apiToParameter:
      schema:
        example: '2021-09-21T10:11:56Z'
        type: string
        format: date-time
      name: to
      description: |-
        End of requested results, in ISO 8601 format.

        Example:`2022-09-21T10:11:56Z` or `2022-09-21T06:11:56-04:00`
      in: query
      required: false
    financial-apiFlattenedParameter:
      schema:
        example: true
        default: false
        type: boolean
      name: flattened
      in: query
      required: false
    financial-apiGroupByParameter:
      schema:
        type: string
        minLength: 3
        maxLength: 2147483647
      description: |-
        Comma-separated list of parameters to group the results by.
        The allowed values are: `staff`, `device`, `deviceId`, `tag`, `accountingGroup`, and `statisticGroup`.
        For example, `groupBy` can be set to `staff,device`.
      name: groupBy
      in: query
      required: true
    financial-apiIncludeParameter:
      schema:
        type: string
        default: ''
      description: |-
        Objects to be included in the response.

        The allowed values are: `staff`, `table`, `consumer`, `payments`, `revenue_center`, `account_profile`, `payment_authorization`.
      name: include
      in: query
      required: false
    id-cards-apiBusinessLocationId:
      name: businessLocationId
      in: path
      required: true
      description: The unique identifier for the business location.
      schema:
        type: integer
        format: int64
    insights-serviceLocationIdParam:
      name: location_id
      in: query
      description: K-Series location to report on.
      allowEmptyValue: false
      required: true
      schema:
        "$ref": "#/components/schemas/insights-serviceLocationId"
    insights-serviceBusinessIdParam:
      name: business_id
      in: query
      description: K-Series business to report on.
      allowEmptyValue: false
      schema:
        "$ref": "#/components/schemas/insights-serviceBusinessId"
    insights-serviceCountryCodeParam:
      name: country_code
      in: query
      description: The country code of the Merchant. This affects calculations like
        NetSales.
      allowEmptyValue: false
      required: false
      schema:
        "$ref": "#/components/schemas/insights-serviceCountryCode"
    insights-serviceLocationIdsParam:
      name: location_ids[]
      in: query
      description: K-Series locations to report on. Business level requests should
        include a list of locations.
      explode: true
      allowEmptyValue: false
      required: true
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceLocationId"
        example:
        - '123456789'
        - '987654321'
    insights-serviceItemIdsParam:
      name: item_ids[]
      in: query
      description: Item ids to report on.
      explode: true
      allowEmptyValue: false
      required: false
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceItemId"
        example:
        - '123456789'
        - '987654321'
    insights-serviceRangeStartParam:
      name: range_start
      in: query
      description: 'First date to report on, using ISO 8601 date format. Example:
        2022-12-22'
      allowEmptyValue: false
      x-go-type-skip-optional-pointer: true
      schema:
        "$ref": "#/components/schemas/insights-serviceDate"
    insights-serviceRangeEndParam:
      name: range_end
      in: query
      description: 'Last date to report on, using ISO 8601 date format. Example: 2022-12-29'
      allowEmptyValue: false
      schema:
        "$ref": "#/components/schemas/insights-serviceDate"
    insights-serviceRequiredRangeStartParam:
      name: range_start
      in: query
      description: 'First date to report on, using ISO 8601 date format. Example:
        2022-12-22'
      required: true
      allowEmptyValue: false
      x-go-type-skip-optional-pointer: true
      schema:
        "$ref": "#/components/schemas/insights-serviceDate"
    insights-serviceRequiredRangeEndParam:
      name: range_end
      in: query
      description: 'Last date to report on, using ISO 8601 date format. Example: 2022-12-29'
      required: true
      allowEmptyValue: false
      schema:
        "$ref": "#/components/schemas/insights-serviceDate"
    insights-serviceIntervalParam:
      name: interval
      in: query
      description: |-
        Time interval to report on.
        This will return the data grouped by the interval. This will affect how the report being aggregated.
        For example if 'DAY' is used, then the data will be aggregated and grouped day by day.

        **ALWAYS** use the biggest interval that makes sense for the data you are requesting.
        **Only** use smaller intervals if you really need the details, for example a day by day report for the last week.
        Using bigger intervals will make the data cleaner and pre-aggregated.

        Examples:
        - If you only need the report of the last month, then use 'MONTH' as the interval.
        - If you only need the report of the last week, then use 'WEEK' as the interval.
      allowEmptyValue: false
      schema:
        "$ref": "#/components/schemas/insights-serviceTimeUnit"
    insights-serviceIntervalsParam:
      name: intervals[]
      in: query
      description: Time intervals to report on. If omitted all Intervals are returned.
      allowEmptyValue: true
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceTimeUnit"
    insights-serviceDaysOfWeekParam:
      name: day_of_week[]
      in: query
      description: |-
        To be used to filter day of the week using zero based index, and Monday is always the start of week.
        Leave this as empty list `[]` if you do not need to filter the report by day of the week.
        Always fill in at least `[]` empty list, this is not nullable.
        Only fill the list with indexes if you need to filter the report by day of the week.
        Use case example:
        - Show me the sales report for last week on Monday and Tuesday only. -> Use `[0, 1]`
        - Show me the sales report for last month on Saturday and Sunday only. -> Use `[5, 6]`
        Use case where this is not needed and should use `[]` (empty list):
        - Show me the sales report for the last week. -> Use `[]`
      explode: true
      allowEmptyValue: true
      x-go-type-skip-optional-pointer: true
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/insights-serviceDayOfWeek"
        example:
        - 5
        - 6
    insights-serviceHourStartParam:
      name: hour_start
      in: query
      description: |-
        Start of Hour to filter from in a business day.
        Only use this if filtering by hour is explicitly needed.
        A single business day can pass midnight, so the hour filter need to follow 48 hour rule, example:
        - Filter from 23:00 to 03:00 then the hour_start is 23
        - The whole day -> Not needed
      allowEmptyValue: true
      schema:
        "$ref": "#/components/schemas/insights-serviceHour"
    insights-serviceHourEndParam:
      name: hour_end
      in: query
      description: |-
        End of hour to filter from in a business day.
        Only use this if filtering by hour is explicitly needed.
        A single business day can pass midnight, so the hour filter need to follow 48 hour rule, example:
        - Filter from 23:00 to 03:00 then hour_end is 27
        - The whole day -> Not needed
      allowEmptyValue: true
      schema:
        "$ref": "#/components/schemas/insights-serviceHour"
    insights-serviceServerIdsParam:
      name: server_ids[]
      in: query
      description: The Ids of the servers to report on.
      required: false
      allowEmptyValue: false
      schema:
        type: array
        "$ref": "#/components/schemas/insights-serviceServerId"
    insights-serviceServerGroupIdsParam:
      name: server_group_ids[]
      in: query
      description: The Ids of the server Job Groups to report on.
      required: false
      allowEmptyValue: false
      schema:
        type: array
        "$ref": "#/components/schemas/insights-serviceServerGroupId"
    insights-serviceTimeRangesParam:
      name: time_ranges[]
      in: query
      description: An array of TimeRange strings in the format `HH:MM-HH:MM`(StartTime-EndTime)
        where both times must be on the half hour.  Hours can be '00' to '47'.  Minutes
        can be '00' or '30'.  The Time Range is from the start time and before the
        end time, so the end time must be after the start time to get results.  TimeRanges
        should NOT overlap.  This is what is used to get Reporting Shift data.
      required: false
      allowEmptyValue: false
      schema:
        type: array
        "$ref": "#/components/schemas/insights-serviceTimeRange"
    insights-serviceFileTypeParam:
      name: file_type
      in: query
      description: The type of file to which the data will be exported. The default
        value is csv.
      required: false
      allowEmptyValue: false
      schema:
        type: string
        enum:
        - csv
        - xlsx
    insights-serviceLocaleParam:
      name: locale
      in: query
      description: The locale use for translation. The default value is English.
      required: false
      allowEmptyValue: false
      schema:
        type: string
        examples:
        - fr_CA
        - en
        - fr_FR
        - es
    insights-serviceCurrencyParam:
      name: currency
      in: query
      description: The currency to use for the data. If omitted, the currency used
        is hidden.
      required: false
      allowEmptyValue: false
      schema:
        type: string
        examples:
        - USD
        - CAD
        - EUR
        - GBP
    items-apiBusinessLocationId:
      in: path
      name: businessLocationId
      required: true
      description: The unique identifier for the business location.
      schema:
        type: integer
        format: int64
    items-apiBusinessId:
      in: path
      name: businessId
      required: true
      description: The unique identifier for the business.
      schema:
        type: integer
        format: int64
    items-apiItemId:
      in: path
      name: itemId
      required: true
      description: Item id
      schema:
        type: integer
        format: int64
    items-apiModifierId:
      in: path
      name: modifierId
      required: true
      description: The unique identifier for the modifier
      schema:
        type: integer
        format: int64
    items-apiModifierGroupId:
      in: path
      name: modifierGroupId
      required: true
      description: The unique identifier for the modifier group.
      schema:
        type: integer
        format: int64
    items-apiProductionInstructionId:
      in: path
      name: productionInstructionId
      required: true
      description: The unique identifier for the production instruction.
      schema:
        type: integer
        format: int64
    items-apiAccountingGroupId:
      in: path
      name: accountingGroupId
      required: true
      description: The unique identifier for the accounting group.
      schema:
        type: integer
        format: int64
    items-apiGroupId:
      in: path
      name: groupId
      required: true
      description: The unique identifier for the group.
      schema:
        type: integer
        format: int64
    items-apiScreenId:
      in: path
      name: screenId
      required: true
      description: The unique identifier for the screen.
      schema:
        type: integer
        format: int64
    items-apiSubScreenId:
      in: path
      name: subScreenId
      required: true
      description: The unique identifier for the sub screen.
      schema:
        type: integer
        format: int64
    items-apiMenuId:
      in: path
      name: menuId
      required: true
      description: The unique identifier for the menu.
      schema:
        type: integer
        format: int64
    items-apiSkuPathParam:
      in: path
      name: sku
      required: true
      schema:
        type: string
        description: sku path parameter
    items-apiItemsSortingField:
      in: query
      name: sorting
      required: false
      schema:
        "$ref": "#/components/schemas/items-apiSortFieldsEnumDto"
    items-apiSortingOrder:
      in: query
      name: sortOrder
      required: false
      schema:
        "$ref": "#/components/schemas/items-apiSortOrderEnumDto"
    items-apiPaginationPage:
      in: query
      name: page
      required: false
      schema:
        type: integer
        format: int32
        default: 0
        description: Zero-based page number for items list
    items-apiPaginationSize:
      in: query
      name: pageSize
      required: false
      schema:
        type: integer
        format: int32
        default: 10
        minimum: 1
        maximum: 500
        description: Limit of number of items to return
    items-apiQuickCreate:
      in: query
      name: quickCreate
      required: false
      schema:
        type: boolean
        default: true
        description: Describes if the item should contain all the properties or only
          the essential ones
    items-apiItemsIds:
      in: query
      name: itemsIds
      required: true
      schema:
        type: array
        items:
          type: integer
          format: int64
        description: Comma separated list of items ids
    items-apiOptionalItemsIds:
      in: query
      name: itemsIds
      required: false
      schema:
        type: array
        items:
          type: integer
          format: int64
        description: Comma separated list of items ids
    items-apiBulkItemIds:
      in: query
      name: itemIds
      required: true
      schema:
        type: array
        minItems: 1
        maxItems: 100
        items:
          type: integer
          format: int64
        description: Comma separated list of items ids to apply bulk action to
    items-apiDryRun:
      in: query
      name: dryRun
      schema:
        type: boolean
        default: true
    items-apiAvailableFilter:
      in: query
      name: available
      description: Available filter. Empty value - show all.
      schema:
        type: boolean
    items-apiSearchFilter:
      in: query
      name: searchFilter
      required: false
      schema:
        type: string
        description: Search filter for wildcard search
    items-apiSearchInFields:
      in: query
      name: searchInFields
      required: false
      schema:
        default:
        - ACCOUNTING_GROUP
        - ITEM_SKU
        - ITEM_PRICE
        - ITEM_NAME
        - BUTTON_NAME
        type: array
        items:
          "$ref": "#/components/schemas/items-apiSearchInFieldEnumDto"
        description: List of fields for wildcard search
    items-apiAccountingGroupsFilter:
      in: query
      name: accountingGroupsFilter
      required: false
      schema:
        type: array
        items:
          type: integer
          format: int64
        description: Comma separated list of accounting groups for filter
    items-apiStatisticGroupsFilter:
      in: query
      name: statisticGroupsFilter
      required: false
      schema:
        type: array
        items:
          type: string
        description: Comma separated list of statistic groups for filter. To filter
          for null values use `$null` value
    items-apiLinkedMenusFilter:
      in: query
      name: linkedMenusFilter
      required: false
      schema:
        type: array
        items:
          type: integer
          format: int64
        description: Comma separated list of linked menus for filter
    items-apiLinkedMenusDeepFilter:
      in: query
      name: linkedMenusDeepFilter
      required: false
      schema:
        type: array
        items:
          type: integer
          format: int64
        description: 'Comma separated list of linked menus for filter. Search for
          all items as well as all items in combos for provided menu.

          '
    items-apiStatusesFilter:
      in: query
      name: statusesFilter
      required: false
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/items-apiItemStatusFilterEnumDto"
        description: Comma separated list of statuses for filter
    items-apiLinkingFilter:
      in: query
      name: linkingFilter
      required: false
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/items-apiItemLinkingFilterEnumDto"
        description: Comma separated list of linking statuses for filter
    items-apiPriceStructureFilter:
      in: query
      name: priceStructuresFilter
      required: false
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/items-apiPriceStructureEnumDto"
        description: Comma separated list of price types for filter
    items-apiTypesFilter:
      in: query
      name: typesFilter
      required: false
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/items-apiItemTypeEnumDto"
        description: Comma separated list of types for filter
    items-apiParentTypeFilter:
      in: query
      name: parentType
      required: true
      schema:
        "$ref": "#/components/schemas/items-apiParentTypeEnumDto"
    items-apiSharingStatusesFilter:
      in: query
      name: sharingStatusesFilter
      required: false
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/items-apiSharingTypeEnumDto"
        description: Comma separated list of sharing statuses for filter
    items-apiOptionsFilter:
      in: query
      name: optionsFilter
      required: false
      schema:
        type: array
        items:
          "$ref": "#/components/schemas/items-apiAdditionalFilterOptionsEnumDto"
        description: Comma separated list of options for filter
    items-apiItemIdsFilter:
      in: query
      name: itemIdsFilter
      required: false
      schema:
        type: array
        items:
          type: integer
          format: int64
        description: Comma separated list of item ids to export
    items-apiSkuFilter:
      in: query
      name: sku
      required: false
      schema:
        type: string
        description: Search filter for sku
    items-apiSkusParam:
      in: query
      name: skus
      required: true
      schema:
        uniqueItems: true
        type: array
        items:
          type: string
        minItems: 1
        maxItems: 50
        description: Skus of items to retrieve
    items-apiSkusFilter:
      in: query
      name: skus
      required: false
      schema:
        type: array
        items:
          type: string
        minItems: 1
        maxItems: 100
        description: Search filter for skus
    items-apiItemNameFilter:
      in: query
      name: itemName
      required: false
      schema:
        type: string
        description: Search filter for item name
    items-apiNameSearchTerm:
      in: query
      name: nameSearchTerm
      required: false
      schema:
        type: string
        description: Search filter for item name
    items-apiProductNameSearchTerm:
      in: query
      name: nameSearchTerm
      required: false
      schema:
        type: string
        description: Filter by product name (case-insensitive, partial match)
    items-apiItemTypesFilter:
      in: query
      name: itemTypes
      required: false
      schema:
        type: array
        items:
          type: string
          enum:
          - ITEM
          - COMBO
          - GROUP
        description: Filter by one or more item types, use comma-separated values.
    items-apiDimensionCriteria:
      in: query
      name: dimension
      required: false
      schema:
        "$ref": "#/components/schemas/items-apiContentDimensionEnumDto"
    items-apiUomCode:
      in: query
      name: uomCode
      required: false
      schema:
        type: string
        description: Uom code like L, dl, oz
    items-apiButtonId:
      in: path
      name: buttonId
      required: true
      description: Button id
      schema:
        type: integer
        format: int64
    items-apiReloadDevices:
      in: query
      name: reload-devices
      required: false
      schema:
        type: boolean
        default: false
    items-apiActiveOnly:
      in: query
      name: activeOnly
      required: false
      schema:
        type: boolean
        default: true
        description: Filter active items only
    items-apiAccountProfileId:
      in: path
      name: accountProfileId
      required: true
      description: Account Profile Id
      schema:
        type: integer
        format: int64
    items-apiCSVMappingProductionInstructionNameColumn:
      name: X-CSV-PI-Name
      in: header
      description: Name of the 'name' column in the provided CSV import file
      required: true
      schema:
        type: string
    items-apiCSVMappingProductionInstructionTypeColumn:
      name: X-CSV-PI-Type
      in: header
      description: Name of the 'type' column in the provided CSV import file
      required: true
      schema:
        type: string
    items-apiCSVMappingProductionInstructionValueColumn:
      name: X-CSV-PI-Value
      in: header
      description: Name of the 'value' column in the provided CSV import file
      required: true
      schema:
        type: string
    items-apiCSVMappingProductionInstructionOneOf:
      name: X-CSV-PI-Type-OneOf
      in: header
      description: ONE_OF type i18n value in the provided CSV import file
      required: true
      schema:
        type: string
    items-apiCSVMappingProductionInstructionManyOf:
      name: X-CSV-PI-Type-ManyOf
      in: header
      description: MANY_OF type i18n value in the provided CSV import file
      required: true
      schema:
        type: string
    items-apiCSVMappingProductionInstructionCategory:
      name: X-CSV-PI-Category
      in: header
      description: Name of the 'category' column in the provided CSV import file
      required: false
      schema:
        type: string
    items-apiCSVMappingProductionInstructionCategoryComment:
      name: X-CSV-PI-Category-Comment
      in: header
      description: COMMENT type i18n value in the provided CSV import file
      required: false
      schema:
        type: string
    items-apiCSVMappingProductionInstructionCategoryAddOn:
      name: X-CSV-PI-Category-AddOn
      in: header
      description: ADD_ON type i18n value in the provided CSV import file
      required: false
      schema:
        type: string
    items-apiCSVMappingProductionInstructionCategoryRemoval:
      name: X-CSV-PI-Category-Removal
      in: header
      description: REMOVAL type i18n value in the provided CSV import file
      required: false
      schema:
        type: string
    items-apiCSVMappingProductionInstructionCategoryWarning:
      name: X-CSV-PI-Category-Warning
      in: header
      description: WARNING type i18n value in the provided CSV import file
      required: false
      schema:
        type: string
    items-apiCategoryId:
      in: path
      name: categoryId
      required: true
      description: Top screen button id
      schema:
        type: integer
        format: int64
    items-apiTagCode:
      in: query
      name: tagCode
      required: false
      schema:
        type: string
    items-apiLocale:
      in: query
      name: locale
      required: false
      schema:
        type: string
        description: Locale code
        default: en
    items-apiGetAccountingGroupSortFilter:
      in: query
      name: sortFilter
      description: Sort type for accounting group by locations
      schema:
        type: object
        properties:
          sorting:
            "$ref": "#/components/schemas/items-apiLocationAccountingGroupSortFieldsEnumDto"
          sortOrder:
            "$ref": "#/components/schemas/items-apiSortOrderEnumDto"
    order-paybusinessLocationIdParam:
      in: path
      name: businessLocationId
      required: true
      schema:
        type: integer
        format: int64
        example: 120391267
        description: the business location id
    payments-processing-serviceIdempotencyKey:
      in: header
      name: Idempotency-Key
      required: true
      description: A unique key for each payment request.
      schema:
        type: string
    payments-processing-serviceBusinessLocationId:
      in: path
      name: businessLocationId
      required: true
      description: Business location id
      schema:
        type: integer
        format: int64
    payments-processing-serviceLSPayId:
      in: path
      name: lspayId
      required: true
      description: LSPay reference id returned in the response of initiate payment
        aka merchant reference id
      schema:
        type: string
        example: 0d00b6f8-0c52-4968-8925-ac3bbe5123a1
    payments-processing-serviceUserAgent:
      in: header
      name: User-Agent
      required: true
      description: User agent of the client making the request
      schema:
        type: string
    pms-integrationLocationIdPathParam:
      name: locationId
      in: path
      required: true
      schema:
        type: integer
        format: int64
        example: '12345236663'
        description: 'The location ID of the charges to be fetched for.

          '
    pos-config-apiBusinessId:
      in: path
      name: businessId
      required: true
      description: Business id
      schema:
        type: integer
        format: int64
    pos-config-apiBusinessLocationId:
      in: path
      name: businessLocationId
      required: true
      description: Business location id
      schema:
        type: integer
        format: int64
    pos-config-apiLoginTokenId:
      in: path
      name: loginTokenId
      required: true
      description: Login Token Id
      schema:
        type: integer
        format: int64
    pos-config-apiPosConfigurationId:
      in: path
      name: posConfigurationId
      required: true
      description: POS configuration id
      schema:
        type: integer
        format: int64
    pos-config-apiDeviceId:
      in: path
      name: deviceId
      required: true
      description: Device id
      schema:
        type: integer
        format: int64
    pos-config-apiFilterMenuIds:
      in: query
      name: menu-ids
      required: true
      description: Comma separated menu ids
      schema:
        type: array
        items:
          type: integer
          format: int64
    pos-config-apiFilterConfigurationIds:
      in: query
      name: configuration-ids
      required: true
      description: Comma separated configuration ids
      schema:
        type: array
        items:
          type: integer
          format: int64
    preferences-apibusinessId:
      description: Business ID. This field is ignored, setting is set by a Location
        ID param.
      in: path
      name: businessId
      required: true
      schema:
        type: integer
        format: int64
    preferences-apilocationId:
      description: Location ID
      in: path
      name: locationId
      required: true
      schema:
        type: integer
        format: int64
    preferences-apinamespace:
      description: Namespace of the preference
      in: path
      name: namespace
      required: true
      schema:
        type: string
    preferences-apidocumentKey:
      description: key of the preference
      in: path
      name: documentKey
      required: true
      schema:
        type: string
    pulse-reporting-serviceBusinessIdPath:
      in: path
      name: businessId
      required: true
      description: The unique identifier for the business.
      schema:
        type: integer
        format: int64
    pulse-reporting-serviceBusinessLocationIdPath:
      in: path
      name: businessLocationId
      required: true
      description: The unique identifier for the business location.
      schema:
        type: integer
        format: int64
    pulse-reporting-serviceStartDateQuery:
      in: query
      name: startDate
      required: true
      description: Zoneless datetime, format yyyy-MM-ddTHH:mm. No seconds, no timezone
        offset.
      schema:
        type: string
    pulse-reporting-serviceEndDateQuery:
      in: query
      name: endDate
      required: true
      description: Zoneless datetime, format yyyy-MM-ddTHH:mm. No seconds, no timezone
        offset.
      schema:
        type: string
    pulse-reporting-serviceSaleTypeQuery:
      in: query
      name: saleType
      required: true
      description: The type of sale to report on.
      schema:
        type: string
        enum:
        - gross
        - net
    pulse-reporting-serviceIntervalQuery:
      in: query
      name: interval
      required: true
      description: The time interval for grouping data.
      schema:
        type: string
        enum:
        - hour
        - day
        - week
        - month
    pulse-reporting-serviceLocationIdsQuery:
      in: query
      name: locationIds
      required: true
      description: List of business location identifiers to include.
      schema:
        type: array
        items:
          type: string
    pulse-reporting-serviceComparisonStartDateQuery:
      in: query
      name: comparisonStartDate
      required: true
      description: Comparison period start. Zoneless datetime, format yyyy-MM-ddTHH:mm.
        No seconds, no timezone offset.
      schema:
        type: string
    pulse-reporting-serviceComparisonEndDateQuery:
      in: query
      name: comparisonEndDate
      required: true
      description: Comparison period end. Zoneless datetime, format yyyy-MM-ddTHH:mm.
        No seconds, no timezone offset.
      schema:
        type: string
    pulse-serviceBusinessIdPath:
      in: path
      name: businessId
      required: true
      description: The unique identifier for the business.
      schema:
        type: integer
        format: int64
    pulse-serviceBusinessLocationIdPath:
      in: path
      name: businessLocationId
      required: true
      description: The unique identifier for the business location.
      schema:
        type: integer
        format: int64
    pulse-serviceBusinessLocationIdParam:
      in: query
      name: businessLocationId
      required: true
      description: The unique identifier for the business location.
      schema:
        type: integer
        format: int64
    pulse-serviceChecklistDefinitionIdPath:
      in: path
      name: checklistDefinitionId
      required: true
      description: The unique identifier for the checklist definition.
      schema:
        type: integer
        format: int64
    pulse-serviceChecklistInstanceId:
      in: path
      name: checklistInstanceId
      required: true
      description: The unique identifier for the checklist instance.
      schema:
        type: integer
        format: int64
    pulse-serviceStartDateParam:
      in: query
      name: startDate
      required: true
      description: Start date for filtering (ISO 8601 DateTime)
      schema:
        type: string
        format: date-time
      example: '2023-07-10T00:00:00Z'
    pulse-serviceEndDateParam:
      in: query
      name: endDate
      required: true
      description: End date for filtering(ISO 8601 DateTime)
      schema:
        type: string
        format: date-time
      example: '2023-07-11T23:59:59Z'
    pulse-serviceLimitParam:
      in: query
      name: limit
      required: false
      description: Max number of objects to return
      schema:
        type: integer
        format: int32
        default: 100
        minimum: 1
        maximum: 500
    pulse-serviceFileTypeParam:
      in: path
      name: fileType
      required: true
      description: The type of file to upload
      schema:
        type: string
        enum:
        - image
        - signature
    pulse-serviceFileNameParam:
      in: query
      name: fileName
      required: false
      description: Optional file name for the upload
      schema:
        type: string
    pulse-serviceUserIdPath:
      name: userId
      in: path
      required: true
      description: The id of the user
      schema:
        type: integer
        format: int64
    pulse-serviceUserTagId:
      name: userTagId
      in: path
      required: true
      description: The id if the user-tag
      schema:
        type: integer
        format: int64
    pulse-servicePage:
      name: page
      in: query
      description: The page number (0-based)
      required: false
      schema:
        type: integer
        format: int32
        default: 0
        minimum: 0
    pulse-serviceSize:
      name: size
      in: query
      description: Number of results to return per page
      required: false
      schema:
        type: integer
        format: int32
        default: 10
        minimum: 1
        maximum: 30
    pulse-serviceUserTagsSortingField:
      in: query
      name: sortField
      required: false
      schema:
        type: string
        default: name
        enum:
        - id
        - name
        description: sorting field
    pulse-serviceSortingOrder:
      in: query
      name: sortOrder
      required: false
      schema:
        type: string
        default: asc
        enum:
        - asc
        - desc
        description: sort order
    quebec-fiscalBusinessLocationId:
      in: path
      name: businessLocationId
      required: true
      schema:
        format: int64
        type: integer
      example: 45454565682155
      description: ID of the business location
    quebec-fiscalTotalsId:
      in: path
      name: totalsId
      required: true
      description: Concatenation of {business location ID}_{year}_{requestedAt}
      schema:
        type: string
    reporting-serviceBusinessId:
      in: path
      name: businessId
      required: true
      description: Business Id
      schema:
        type: integer
        format: int64
    reporting-serviceBusinessLocationId:
      in: path
      name: businessLocationId
      required: true
      description: Business location Id
      schema:
        type: integer
        format: int64
    reporting-serviceStartDate:
      in: query
      name: startDate
      required: true
      example: '2021-04-16'
      schema:
        type: string
        format: date
    reporting-serviceEndDate:
      in: query
      name: endDate
      required: true
      example: '2021-04-16'
      schema:
        type: string
        format: date
    reporting-serviceStartDateTime:
      in: query
      name: from
      required: true
      schema:
        example: '2025-03-21T10:11:56Z'
        type: string
        format: date-time
    reporting-serviceEndDateTime:
      in: query
      name: to
      required: true
      schema:
        example: '2025-03-22T10:11:56Z'
        type: string
        format: date-time
    reporting-serviceLimit:
      in: query
      name: limit
      required: false
      schema:
        type: integer
        format: int32
        default: 5
    staff-apiBusinessId:
      name: businessId
      in: path
      required: true
      description: The unique identifier for the business.
      schema:
        type: integer
        format: int64
    staff-apiBusinessLocationId:
      name: businessLocationId
      in: path
      required: true
      description: The unique identifier for the business location.
      schema:
        type: integer
        format: int64
    staff-apiStaffId:
      name: staffId
      in: query
      required: false
      description: Filter on the unique identifier for the user.
      schema:
        type: integer
        format: int64
    staff-apiPage:
      name: page
      in: query
      description: The page number, when paginating.
      schema:
        default: 1
        minimum: 1
        type: integer
        format: int32
    staff-apiSize:
      name: size
      in: query
      description: Number of results to return per page, when paginating.
      schema:
        default: 10
        minimum: 1
        type: integer
        format: int32
    staff-apiSortByShift:
      name: sort
      in: query
      description: Sort by field and direction.
      schema:
        type: array
        items:
          type: string
        default:
        - date,desc
    staff-apiSortByStaff:
      name: sort
      in: query
      description: Sort by field and direction.
      schema:
        type: array
        items:
          type: string
        default:
        - userId,desc
    staff-apiSortByStaffGroup:
      name: sort
      in: query
      description: Sort by field and direction.
      schema:
        type: array
        items:
          type: string
        default:
        - name,asc
    staff-apiStartDate:
      name: startDate
      in: query
      description: Show results after this start time. The format should be `yyyy-MM-dd'T'HH:mm:ss`
        (ISO 8601 format).
      schema:
        type: string
        format: date-time
    staff-apiEndDate:
      name: endDate
      in: query
      description: Show results before this end time. The format should be `yyyy-MM-dd'T'HH:mm:ss`
        (ISO 8601 format).
      schema:
        type: string
        format: date-time
    staff-apiStartTime:
      name: startTime
      in: query
      description: Show results after this start time. The format should be `yyyy-MM-dd'T'HH:mm:ss`
        (ISO 8601 format).
      schema:
        type: string
        format: date-time
    staff-apiEndTime:
      name: endTime
      in: query
      description: Show results before this end time. The format should be `yyyy-MM-dd'T'HH:mm:ss`
        (ISO 8601 format).
      schema:
        type: string
        format: date-time
    teckelPathBusinessId:
      in: path
      name: businessId
      required: true
      schema:
        "$ref": "#/components/schemas/teckelBusinessId"
    teckelPathSKU:
      in: path
      name: sku
      required: true
      schema:
        "$ref": "#/components/schemas/teckelSKU"
    teckelPage:
      in: query
      name: page
      required: false
      schema:
        type: integer
        example: 10
        description: Starting page of results, when paginating.
        default: 0
    teckelSize:
      in: query
      name: size
      required: false
      schema:
        type: integer
        example: 100
        description: Number of results to return, when paginating.
        default: 1000
    teckelSort:
      in: query
      name: sort
      required: false
      schema:
        type: array
        items:
          type: string
          example: sku
          description: Field used to determine order of results.
  examples: {}
  requestBodies:
    Request:
      required: true
      description: New business or client creation request body
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/developer-portal-serviceRequestIn"
          example:
            name: Business creation request
            data:
              request_type: Business
              address: 123 Main St
              zip_code: '12345'
              city: New York
              state: NY
              country: US
              business_name: My Business
              business_location_name: My Location
              business_location_language: en
              business_location_timezone: America/New_York
    RequestChange:
      required: true
      description: Change the request after it has been provisioned.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/developer-portal-serviceRequestChangeIn"
  headers: {}
  securitySchemes:
    OAuth2:
      description: |
        The Lightspeed Restaurant K-Series APIs support OAuth2 authentication using the [authorization code grant flow](https://www.oauth.com/oauth2-servers/server-side-apps/authorization-code/).
        See our [Authorization Quick Start Guide](https://api-portal.lsk.lightspeed.app/quick-start/authentication/authorization-overview) for more details on how to authenticate.
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: "/oauth/authorize"
          tokenUrl: "/oauth/token"
          scopes:
            orders-api: |-
              Read business information, floors, menus, discounts, and production instructions.
              Read and write orders and payments. Read [Rich Item](https://api-docs.lsk.lightspeed.app/prod/group/endpoint-rich-item) data.
            financial-api: Read financial data
            reservation-***: Platform reservations scope. The `***` will be replaced
              by the [platform-code](https://api-docs.lsk.lightspeed.app/operation/operation-reservation-servicesetbyplatformcode#operation-reservation-servicesetbyplatformcode-platform-code)
              of the reservation platform.
            items: Read and write items
            propertymanagement: Read and write Property Management System configurations.
            id-cards: Create and manage ID card batches and cards.
            staff-api: Read shift information, read and write user information.
            reservations-api: |-
              Configure *legacy* reservation integrations.
              **Note:** This API will eventually be deprecated in favour of the new [Reservations for Platforms](https://api-docs.lsk.lightspeed.app/group/endpoint-reservations-for-platforms) API.
              More information on the new reservations workflows can be found in the [Integration Guide](https://api-portal.lsk.lightspeed.app/category/reservations).
  links: {}
  callbacks: {}
