OAPI 2.11.2 - Current Version

Released on: 07/19/2023

No changes to YAML File

OAPI 2.11.1

Released on 06/28/2023

No changes to YAML File

OAPI 2.11.0

Released on 04/20/2023

Updated YAML file

  • openapi: 3.0.0
    info:
      title: Ordering API
      description: |
        Ordering API
      contact: { }
      version: "v2.11.0"
    servers:
      - description: Appetize API URL. This URL will be provided by our team.
        url: https://{environment}.appetize.com
    paths:
      /:
        get:
          tags:
            - Online Ordering
          summary: Appetize Ordering API Base Url
          description: |
            * **Payload**: None
          operationId: OrderingBaseGet
          security:
            - BearerAuth: [ ]
          responses:
            200:
              description: "Documentation Forthcoming"
              headers:
                Date:
                  style: simple
                  explode: false
                  schema:
                    type: string
                    default: Tue, 14 May 2019 22:30:53 GMT
                Server:
                  style: simple
                  explode: false
                  schema:
                    type: string
                    default: nginx
                Content-Length:
                  style: simple
                  explode: false
                  schema:
                    type: string
                    default: "156"
                Connection:
                  style: simple
                  explode: false
                  schema:
                    type: string
                    default: keep-alive
          deprecated: false
      /auth/ordering:
        post:
          tags:
            - Online Ordering
          summary: Authentication of API Key
          description: |-
            Authenticates the client into Connect.
    
            * **Payload**: * **Success**: Returns a *token*. This token is needed to make all subsequent calls to the service.
            * **Failure**: Any other response
            * **Note:** This endpoint is actually making reference to the POST /auth from the Auth service endpoint; but being so relevant to OAPI, that it has been included here.  You will note here that /auth is an internal server redirection to the proper /ordering endpoint in the Auth service.
          operationId: OrderingAuthPost
          security:
            - ApiKeyAuth: [ ]
          responses:
            200:
              description: ""
              headers:
                Server:
                  style: simple
                  explode: false
                  schema:
                    type: string
                    default: nginx/1.13.9
                Date:
                  style: simple
                  explode: false
                  schema:
                    type: string
                    default: Thu, 21 Feb 2019 16:29:06 GMT
              content:
                application/com.appetize.oapi.token.v1+json:
                  schema:
                    $ref: '#/components/schemas/AuthResponse'
                  examples:
                    response:
                      value:
                        auth_key: jwt-encoded-auth-key
            "401":
              $ref: '#/components/responses/401_Invalid_XAPIKey'
          deprecated: false
      /ordering/vendors:
        get:
          tags:
            - Online Ordering
          summary: Get List of Vendors
          description: |-
            Returns complete list of vendors provided in the given credentials. Access to vendors is granted after successful request to */auth/ordering* endpoint based on *X-API-Key*).
            <br />List can be filtered by optional query parameters:
             * seat ID - internal seat identifier assigned to vendors. Useful when vendor list must be narrowed down and displayed for the specific seat only (please see */venues/{venue_id}/levels/{level_id}/seats* endpoint for complete list of seat IDs)
             * venue ID - internal venue identifier associated with vendors. Since the complete list contains all venues/vendors provided in the credentials this filter could be used when vendor list must be retrieved for specific venue only
             * external ID - external identifier assigned to vendors
          operationId: OrderingVendorsGet
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          parameters:
            - name: seat_id
              in: query
              description: Filter vendors list by seat ID
              required: false
              style: form
              explode: true
              schema:
                type: number
            - name: venue_id
              in: query
              description: Filter vendors list by venue ID
              required: false
              style: form
              explode: true
              schema:
                type: string
            - name: external_id
              in: query
              description: Filter vendors list by external ID
              required: false
              style: form
              explode: true
              schema:
                type: string
          responses:
            "200":
              description: Returns an array of vendors optionally filtered by seat ID, venue ID, external ID or empty array if not a single vendor matches optional filters
              content:
                application/com.appetize.oapi.vendor.v1+json:
                  schema:
                    $ref: '#/components/schemas/VendorsResponse'
            "400":
              description: Bad Request
            "401":
              description: Unauthorized
              content:
                application/vnd.appetize+json;version=1:
                  schema:
                    $ref: '#/components/schemas/AuthenticationBearerFailure'
                  examples:
                    "Incorrect Claim type":
                      description: "Token is not External V1 Claims"
                      value:
                        Code: 401
                        message: "incorrect claim type"
                    "Missing Claims":
                      description: "Token claims not found in request token"
                      value:
                        Code: 401
                        message: "missing claims"
                    "Empty Claims":
                      description: "Token claims is nil"
                      value:
                        Code: 401
                        message: "access control Claims is nil"
                    "Invalid Claims Content":
                      description: "Invalid token syntax, token can not be parsed"
                      value:
                        Code: 401
                        message: "strconv.Atoi: {strconv error}"
                    "Invalid Token Signature":
                      description: "Invalid token signature"
                      value:
                        Code: 401
                        message: "failed parsing claims: signature is invalid"
                    "Claims without Venues":
                      description: "Token claims don't contains any venue"
                      value:
                        Code: 401
                        message: "no venues found in claims"
                    "Corporate not found in Claims":
                      description: "Corporate not found in token claims"
                      value:
                        Code: 401
                        message: "corporate ID {Corporate ID} not found in claims"
                    "Venue not found in Claims":
                      description: "Venue not found in token claims"
                      value:
                        Code: 401
                        message: "venue ID {Venue ID} not found in claims"
                    "Vendor not found in Claims":
                      description: "Vendor not found in token claims"
                      value:
                        Code: 401
                        message: "vendor ID {Vendor ID} not found in claims"
            "422":
              description: Unprocessable entity
            "500":
              description: Server error
      /ordering/venues/{venue_id}/vendors/{vendor_id}:
        get:
          tags:
            - Online Ordering
          summary: Get Venue
          description: |-
            Basic information around the default location (Venue / Vendor) assigned to the given credentials.
          operationId: OrderingStoreGet
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          parameters:
            - $ref: '#/components/parameters/Venue_id'
            - $ref: '#/components/parameters/Vendor_id'
          responses:
            "200":
              description: Store Response (Internally Vendor)
              content:
                application/com.appetize.oapi.vendor.v1+json:
                  schema:
                    $ref: '#/components/schemas/Vendor'
            "401":
              $ref: '#/components/responses/401'
            "404":
              $ref: '#/components/responses/404_Store_Not_Found'
      /ordering/venues/{venue_id}/vendors/{vendor_id}/menu:
        get:
          tags:
            - Online Ordering
          summary: Get Menu
          description: |-
            Returns the entire assigned menu for a given vendor, or with the 'since' query parameter, a delta including deleted and deactivated items.
          security:
            - BearerAuth: [ ]
          parameters:
            - name: since
              in: query
              description: Returns the delta from the UTC timestamp passed in.
              required: false
              style: form
              explode: true
              schema:
                type: string
                default: "1579098572"
            - name: price_level
              in: query
              schema:
                type: string
                enum: [ "VENDOR_OVERRIDE_ACTIVE", "VENDOR_ACTIVE", "EVENT", "EVENT_TYPE", "VENUE_OVERRIDE_ACTIVE", "VENUE_ACTIVE", "VENUE_DEFAULT", "CORPORATE_DEFAULT" ]
                default: "Vendor Override Active Price"
            - $ref: '#/components/parameters/Venue_id'
            - $ref: '#/components/parameters/Vendor_id'
            - $ref: '#/components/parameters/MenuV2RequestAcceptHeader'
          responses:
            "200":
              description: Returns an array of dayparts available for the vendor and the entire vendor menu <br> associated to each of those DayParts.
              content:
                application/com.appetize.oapi.menu.v2+json:
                  schema:
                    $ref: '#/components/schemas/MenuV2Response'
                application/com.appetize.oapi.menu.v1+json:
                  schema:
                    $ref: '#/components/schemas/MenuResponse'
            "401":
              $ref: '#/components/responses/401'
            "404":
              $ref: '#/components/responses/404_Menu_Not_Found'
      /ordering/venues/{venue_id}/vendors/{vendor_id}/items/{item_id}:
        get:
          tags:
            - Online Ordering
          summary: Get Item by ID
          description: |-
            Returns a single item, for the given Venue, and Vendor.
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          parameters:
            - $ref: '#/components/parameters/Item_id'
            - $ref: '#/components/parameters/Venue_id'
            - $ref: '#/components/parameters/Vendor_id'
            - name: price_level
              in: query
              schema:
                type: string
                enum: [ "VENDOR_OVERRIDE_ACTIVE", "VENDOR_ACTIVE", "EVENT", "EVENT_TYPE", "VENUE_OVERRIDE_ACTIVE", "VENUE_ACTIVE", "VENUE_DEFAULT", "CORPORATE_DEFAULT" ]
                default: "Vendor Override Active Price"
          responses:
            "200":
              description: Item response
              content:
                application/com.appetize.oapi.item.v1+json:
                  schema:
                    $ref: '#/components/schemas/GetItemResponseV1'
            "401":
              $ref: '#/components/responses/401'
            "404":
              $ref: '#/components/responses/404_Menu_Not_Found'
            "422":
              $ref: '#/components/responses/422'
      /ordering/venues/{venue_id}/vendors/{vendor_id}/items:
        #documentation ticket PLAT-680
        get:
          tags:
            - Online Ordering
          summary: Get Items with Optional Filters SKU, External ID or Item IDs
          description: |-
            Returns an array of items, for the given Venue, and Vendor. \
            This endpoint can filter its response if the query string parameter 'ids' is present in the request. If the request doesn't contain any query string parameter, the response is not filtered. \
            This endpoint does not accept pagination parameters, and the result is not limited.
          security:
            - BearerAuth: [ ]
          parameters:
            - $ref: '#/components/parameters/Venue_id'
            - $ref: '#/components/parameters/Vendor_id'
            - $ref: '#/components/parameters/ItemV2RequestAcceptHeader'
            - $ref: '#/components/parameters/ids'
            - $ref: '#/components/parameters/sku'
            - $ref: '#/components/parameters/external_ids'
            - name: price_level
              in: query
              schema:
                type: string
                enum: [ "VENDOR_OVERRIDE_ACTIVE", "VENDOR_ACTIVE", "EVENT", "EVENT_TYPE", "VENUE_OVERRIDE_ACTIVE", "VENUE_ACTIVE", "VENUE_DEFAULT", "CORPORATE_DEFAULT" ]
                default: "Vendor Override Active Price"
          responses:
            "200":
              description: Get items response
              content:
                application/com.appetize.oapi.item.v2+json:
                  schema:
                    $ref: '#/components/schemas/GetItemResponseV2'
                application/com.appetize.oapi.item.v1+json:
                  schema:
                    $ref: '#/components/schemas/GetItemResponseV1'
            "401":
              $ref: '#/components/responses/401'
            "404":
              $ref: '#/components/responses/404_Store_Not_Found'
      /ordering/venues/{venue_id}/vendors/{vendor_id}/discounts:
        get:
          tags:
            - Online Ordering
          summary: Get Discounts
          description: |-
            This endpoint will retrieve a list of discounts that are available
            to a given vendor (revenue center)
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          parameters:
            - $ref: '#/components/parameters/Venue_id'
            - $ref: '#/components/parameters/Vendor_id'
            - in: query
              name: active
              description: |-
                Filters discounts to only actively available ones \
                **If that query param is not sent**, the default value will be **false**
                - **True** : returns only the active discounts
                - **False** : returns both active and non active discounts
    
              required: false
              style: form
              explode: true
              schema:
                type: boolean
                default: false
              examples:
                true:
                  summary: "true"
                  value: true
                false:
                  summary: "false"
                  value: false
          responses:
            "200":
              description: Discounts Response
              content:
                application/vnd.appetize+json;version=1:
                  schema:
                    $ref: '#/components/schemas/DiscountsResponse'
            "401":
              $ref: '#/components/responses/401'
      /ordering/corporates/{corporate_id}/venues:
        #documentation ticket PLAT-680
        get:
          tags:
            - Online Ordering
          summary: Get Venue Information Based on Corporate Identifier
          description: |-
            Returns an array of venues, for the given corporate id. \
          security:
            - BearerAuth: [ ]
          parameters:
            - $ref: '#/components/parameters/Corporate_id'
          responses:
            "200":
              description: Get venues response
              content:
                application/com.appetize.oapi.venue.v1+json:
                  schema:
                    $ref: '#/components/schemas/GetVenuesResponse'
            "401":
              $ref: '#/components/responses/401'
            "404":
              $ref: '#/components/responses/404_Store_Not_Found'
      /ordering/venues/{venue_id}/vendors/{vendor_id}/cart/calculate:
        post:
          tags:
            - Online Ordering
          summary: Cart Calculate v2
          description: |-
            This endpoint takes a `CartRequest`, performs calculations and validations on it, and returns a signed version that can be submitted to the `Checkout` endpoint.
            It is important to note that there are some options that may apply depending on your environment, corporate, venue or vendor configuration:
    
            - Calculate Fees: enable or disable fees calculation that comes from connect.
            - Calculate Reductions: enable or disable reductions calculation that comes from connect.
            - Calculate Taxes: enable or disable taxes calculation that comes from connect.
            - Calculate Modifier Items: enable or disable modifiers items calculation that comes from connect.
            - Calculate Payment Partner Integrations *also know as PPI Discounts*:  enable or disable PPI Discounts calculation that is used by AX/IX to integrate Stored Values (SV) and Loaded Values (LV) payments easily.
            - Validate Prices: validate each item if the price is correct and if it belongs to the venue/vendor station
            - Validate Cart Totals: validate if calculated subtotal is what is expected, you can not use this along with (Fees, Reductions, Taxes, Modifiers or PPI Discounts)
    
            > Additional note: When passing in a cart, use `tip_status_closed=false` to force the tip status to be left open on cart checkout, allowing for a tip to be added in a subsequent tip adjustment endpoint.
          security:
            - BearerAuth: [ ]
          parameters:
            - $ref: '#/components/parameters/Venue_id'
            - $ref: '#/components/parameters/Vendor_id'
            - $ref: '#/components/parameters/CartRequestHeaderContentType'
          requestBody:
            description: Calculate Cart Request
            content:
              application/com.appetize.oapi.cart.v2+json:
                schema:
                  $ref: '#/components/schemas/CalculateCartWithModifiersRequest'
              application/com.appetize.oapi.cart.v1+json:
                schema:
                  $ref: '#/components/schemas/CalculateCartRequest'
            required: true
          responses:
            "200":
              description: Calculate Cart Response
              content:
                application/com.appetize.oapi.cart.v2+json:
                  schema:
                    $ref: '#/components/schemas/CalculateCartWithModifiersResponse'
                application/com.appetize.oapi.cart.v1+json:
                  schema:
                    $ref: '#/components/schemas/CalculateCartResponse'
            "400":
              $ref: '#/components/responses/400_Calculate_Malformed'
            "401":
              $ref: '#/components/responses/401'
            "422":
              $ref: '#/components/responses/422'
      /ordering/venues/{venue_id}/vendors/{vendor_id}/checkout:
        post:
          tags:
            - Online Ordering
          summary: Cart Checkout v2
          description: |-
            This endpoint processes a signed cart, which has previously been
            generated via the /cart/calculate endpoint.  For external payments, we will
            provide the payment parameters for you to pass in, so that we bypass our internal
            payment verification steps.
            <br>
            It is also important to note that if an email confirmation is required, the field email must be non empty in the signed_cart and
            an extra field named "send_email_receipt", must be manually added and set to true at the root level of the payload's body.
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          parameters:
            - name: X-Order-Source
              in: header
              description: Order Source to provide visibility between the different products where the order is being made from.
              required: false
              schema:
                type: string
                items:
                  default: oapi
                  enum:
                    - oapi
                    - interact_web
                example: oapi
            - $ref: '#/components/parameters/Venue_id'
            - $ref: '#/components/parameters/Vendor_id'
            - $ref: '#/components/parameters/CartRequestHeaderContentType'
          requestBody:
            description: Checkout Request -- Send Payload From Cart Endpoint
            content:
              application/com.appetize.oapi.cart.v2+json:
                schema:
                  $ref: '#/components/schemas/CheckoutRequestWithModifiers'
              application/com.appetize.oapi.cart.v1+json:
                schema:
                  $ref: '#/components/schemas/CheckoutRequest'
            required: true
          responses:
            "200":
              description: Checkout Response
              content:
                application/com.appetize.oapi.cart.v2+json:
                  schema:
                    $ref: '#/components/schemas/CheckoutResponse'
                application/com.appetize.oapi.cart.v1+json:
                  schema:
                    $ref: '#/components/schemas/CheckoutResponse'
            "400":
              $ref: '#/components/responses/400_Checkout_Malformed'
            "401":
              $ref: '#/components/responses/401'
            "422":
              $ref: '#/components/responses/422'
      /ordering/venues/{venue_id}/levels:
        get:
          tags:
            - Online Ordering
          summary: Get Levels
          description: |-
            Returns associated levels and their basic information for the venue. <br/>
            A level can be one of many in a venue's layout and has the highest hierarchy of such layout; it can contain the other items like section, row and seat.(These details are not provided by this endpoint)
          security:
            - BearerAuth: [ ]
          parameters:
            - $ref: '#/components/parameters/Venue_id'
          responses:
            "200":
              description: Levels successful response
              content:
                application/com.appetize.oapi.level.v1+json:
                  schema:
                    $ref: '#/components/schemas/LevelsResponse'
            "401":
              $ref: '#/components/responses/401'
      /ordering/venues/{venue_id}/levels/{level_id}/seats:
        get:
          tags:
            - Online Ordering
          summary: Get Seats
          description: |-
            Returns associated seats for a given venue and that venue's level.
          security:
            - BearerAuth: [ ]
          parameters:
            - name: level_id
              in: path
              description: ID of the level
              required: true
              schema:
                type: integer
                format: int64
            - $ref: '#/components/parameters/Venue_id'
          responses:
            "200":
              description: Levels Response
              content:
                application/com.appetize.oapi.seat.v1+json:
                  schema:
                    $ref: '#/components/schemas/SeatsResponse'
            "400":
              $ref: '#/components/responses/400'
            "401":
              $ref: '#/components/responses/401'
      /ordering/venues/{venue_id}/vendors/{vendor_id}/fees:
        get:
          tags:
            - Online Ordering
          summary: Get Fees
          description: |-
            This endpoint returns the fees associated to the vendor_id and venue_id
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          parameters:
            - $ref: '#/components/parameters/Venue_id'
            - $ref: '#/components/parameters/Vendor_id'
            - name: account_type
              in: query
              required: true
              style: form
              explode: true
              schema:
                type: string
                enum: [ "employee" ]
            - name: account_id
              in: query
              required: true
              style: form
              explode: true
              schema:
                type: string
                example: '1'
            - name: only_auto_apply
              in: query
              required: false
              style: form
              explode: true
              schema:
                type: boolean
                example: false
          responses:
            "200":
              description: Get Fees Response
              content:
                application/com.appetize.oapi.cart.v1+json:
                  schema:
                    $ref: '#/components/schemas/GetFeesResponse'
            "400":
              $ref: '#/components/responses/400'
            "401":
              $ref: '#/components/responses/401'
      /ordering/pay/initialize_session:
        post:
          tags:
            - Appetize Payment Layer integration
          summary: Get Session Token
          description: |-
            This endpoint takes a terminal_id, amount and returns a session token for integrations endpoint
          parameters:
            - in: header
              name: X-API-Key
              description: X-API-Key is "Connect" api-key
              schema:
                type: string
                format: uuid
                example: 689f8852-8e18-4e4d-8591-b8ce64226fdb
              required: true
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          requestBody:
            description: Get Session Token
            content:
              application/com.appetize.oapi.apl.v1+json:
                schema:
                  $ref: '#/components/schemas/AplSessionTokenRequest'
            required: true
          responses:
            200:
              $ref: '#/components/responses/200_apl_session_token'
            400:
              $ref: '#/components/responses/400_apl'
            401:
              $ref: '#/components/responses/401_apl'
            500:
              $ref: '#/components/responses/500_apl'
      /ordering/pay/payment:
        post:
          tags:
            - Appetize Payment Layer integration
          summary: Submit a Payment
          description: |-
            This endpoint takes a session_key and some additional settings and submits a payment
          parameters:
            - in: header
              name: X-API-Key
              description: X-API-Key is "Connect" api-key
              schema:
                type: string
                format: uuid
                example: 689f8852-8e18-4e4d-8591-b8ce64226fdb
              required: true
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          requestBody:
            description: Submits a payment
            content:
              application/com.appetize.oapi.apl.v1+json:
                schema:
                  $ref: '#/components/schemas/AplPaymentRequest'
            required: true
          responses:
            200:
              $ref: '#/components/responses/200_apl_payment'
            400:
              $ref: '#/components/responses/400_apl'
            401:
              $ref: '#/components/responses/401_apl'
            500:
              $ref: '#/components/responses/500_apl'
      /ordering/pay/query_token:
        post:
          tags:
            - Appetize Payment Layer integration
          summary: Retrieve Token Information
          description: |-
            This endpoint takes a terminal_id and token and retrieves cardholder information associated with a token
          parameters:
            - in: header
              name: X-API-Key
              description: X-API-Key is "Connect" api-key
              schema:
                type: string
                format: uuid
                example: 689f8852-8e18-4e4d-8591-b8ce64226fdb
              required: true
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          requestBody:
            description: Retrieve token information
            content:
              application/com.appetize.oapi.apl.v1+json:
                schema:
                  $ref: '#/components/schemas/AplQueryTokenRequest'
            required: true
          responses:
            200:
              $ref: '#/components/responses/200_apl_query_token'
            400:
              $ref: '#/components/responses/400_apl'
            401:
              $ref: '#/components/responses/401_apl'
            500:
              $ref: '#/components/responses/500_apl'
    
      # Refund endpoints
      /ordering/order/{order_id}/refunds:
        post:
          tags:
            - Order Refunds
          summary: Create a Full Refund for an Order
          description: |-
            This endpoint makes a full refund for an order
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          parameters:
            - name: X-Order-Source
              in: header
              description: Order Source to create the refund order
              required: false
              schema:
                type: string
                items:
                  default: oapi
                  enum:
                    - oapi
                    - connect
                example: oapi
            - name: order_id
              in: path
              description: ID of the order to be refunded
              required: true
              schema:
                type: integer
                example: 1234567
          requestBody:
            description: Refund reference
            content:
              application/json:
                schema:
                  $ref: '#/components/schemas/RefundRequest'
            required: true
          responses:
            201:
              $ref: '#/components/responses/create_refund_201'
            400:
              $ref: '#/components/responses/create_refund_400'
            401:
              $ref: '#/components/responses/create_refund_401'
            404:
              $ref: '#/components/responses/create_refund_404'
            422:
              $ref: '#/components/responses/create_refund_422'
            500:
              $ref: '#/components/responses/create_refund_500'
      /ordering/order/{order_id}:
        get:
          tags:
            - Order Refunds
          summary: Get an Order by ID
          description: |-
            This endpoint returns order related details by ID.
          security:
            - BearerAuth: [ ]
              ApiKeyAuth: [ ]
          parameters:
            - in: path
              name: order_id
              description: ID of the order you want data for
              required: true
              schema:
                type: integer
                example: 1234567
          responses:
            200:
              $ref: '#/components/responses/get_refund_200'
            400:
              $ref: '#/components/responses/get_refund_400'
            401:
              $ref: '#/components/responses/get_refund_401'
            404:
              $ref: '#/components/responses/get_refund_404'
            500:
              $ref: '#/components/responses/get_refund_500'
    
    components:
      securitySchemes:
        BearerAuth:
          type: http
          scheme: bearer
        ApiKeyAuth:
          type: apiKey
          in: header
          name: X-API-Key
      parameters:
        sku:
          #TODO: this element should be reviewed on PLAT-681, and remove this comment from PLAT-680
          name: sku
          in: query
          description: Filters item by sku (with 1 result)
          required: false
          style: form
          explode: true
          schema:
            type: string
        external_ids:
          #TODO: this element should be reviewed on PLAT-681, and remove this comment from PLAT-680
          name: barcode
          in: query
          description: Filters item by barcode(with 1 result).  This query was previously called "external_id", which is still supported.
          required: false
          style: form
          explode: true
          schema:
            type: string
        ids:
          name: ids
          in: query
          description: String with a list of comma-separated values that represent item ids. <b>Only available in v2</b>.
          required: false
          style: form
          explode: true
          allowEmptyValue: false
          schema:
            example: "100,200,300,101"
            type: string
        Item_id:
          name: item_id
          in: path
          description: ID of the item
          required: true
          style: simple
          explode: false
          schema:
            minimum: 1
            type: integer
            format: int64
        Vendor_id:
          name: vendor_id
          in: path
          description: Connect's vendor identifier inside for a given vendor (revenue center)
          required: true
          style: simple
          explode: false
          schema:
            minimum: 1
            type: integer
            format: int64
            example: 68040
        Venue_id:
          name: venue_id
          in: path
          description: Identifier for a given venue (revenue center)
          required: true
          style: simple
          explode: false
          schema:
            minimum: 1
            type: integer
            format: int64
            example: 2371
        CartRequestHeaderContentType:
          name: "Content-Type"
          in: header
          description: |-
            Two versions are available:
              - **Version 1**: supports taxes, fees, reductions and modifiers.
              - **Version 2**: supports taxes, fees, reductions and nested modifiers.
            > By default if you do not send any value it will be understood that you are using *Version 1*.
          required: true
          allowEmptyValue: true
          explode: false
          examples:
            application/com.appetize.oapi.cart.v2+json:
              value: "application/com.appetize.oapi.cart.v2+json"
            application/com.appetize.oapi.cart.v1+json:
              value: "application/com.appetize.oapi.cart.v1+json"
          schema:
            type: string
            enum:
              - "application/com.appetize.oapi.cart.v2+json"
              - "application/com.appetize.oapi.cart.v1+json"
        Corporate_id:
          name: corporate_id
          in: path
          description: Identifier for a given corporate
          required: true
          style: simple
          explode: false
          schema:
            minimum: 1
            type: integer
            format: int64
            example: 2371
        ItemV2RequestAcceptHeader:
          name: Accept
          in: header
          description: Accept header specifies the version of the API to use, **application/com.appetize.oapi.item.v2+json** will make the endpoint response include items with nested modifiers instead of simple items. *If this header is not provided the system assumes* ***application/com.appetize.oapi.item.v1+json***
          required: false
          examples:
            oapi.item.v2+json:
              value: "application/com.appetize.oapi.item.v2+json"
            oapi.item.v1+json:
              value: "application/com.appetize.oapi.item.v1+json"
          schema:
            type: string
            enum:
              - "application/com.appetize.oapi.item.v2+json"
              - "application/com.appetize.oapi.item.v1+json"
        MenuV2RequestAcceptHeader:
          name: Accept
          in: header
          description: Accept header set to **application/com.appetize.oapi.menu.v2+json**, will make the Menu endpoint response include items with nested modifiers instead of simple items.
          required: false
          examples:
            oapi.menu.v2+json:
              value: "application/com.appetize.oapi.menu.v2+json"
            oapi.menu.v1+json:
              value: "application/com.appetize.oapi.menu.v1+json"
          schema:
            type: string
            enum:
              - "application/com.appetize.oapi.menu.v2+json"
              - "application/com.appetize.oapi.menu.v1+json"
      schemas:
        GetFeesResponse:
          title: Get Fees Response
          type: object
          description: "Documentation Forthcoming"
          properties:
            fees:
              type: array
              items:
                $ref: '#/components/schemas/Fee'
        AppliedFee:
          title: Applied Fee
          type: object
          description: All Fee information after applying to a cart
          properties:
            id:
              type: string
              example: 2935
              description: "Identifier given to fee upon creation in Connect"
            name:
              type: string
              example: Service fee 10%
              description: "Fee Name made upon creation of fee. Updatable, non-unique"
            hash:
              type: string
              example: 54550fa18058847cf0a70cb93ebe9383
              description: Generated used to identify this Fee
            fee_type:
              type: string
              enum:
                - PERCENT
                - FLAT
                - CUSTOM
              example: FLAT
              description: "Fee Type used to calculate value"
            fee_basis:
              type: number
              format: float
              example: 0.05
              description: "Integer used as a basis for calculation,If a fee is 5%, the fee_basis will be 0.05. If it is $2.00, the fee_basis will be 2.00"
            calculated_value:
              type: number
              format: float
              example: 10.61
              description: "Value of the fee. If the fee is an amount, it will be the same as the fee_basis. If it is a percentage, it will be the fee_basis multiplied by the amount to which the fee is applied."
            taxable:
              type: boolean
              example: true
              description: "Value set in Connect to enable/disable taxable. Fees that are taxable will be included in the total used to calculate taxes. Non-taxable fees are not included."
            taxes:
              type: array
              items:
                $ref: '#/components/schemas/Taxes'
            auto_apply:
              type: boolean
              example: true
              description: "Value set in Connect to enable/disable auto apply. Fees set to auto-apply are automatically applied to every transaction for the vendor to which they're assigned. Fees without auto-apply are manually applied."
            apply_before_discount:
              type: boolean
              example: true
              description: "Applies to net or gross"
            fee_class:
              type: string
              enum:
                - GRATUITY
                - SERVICE_CHARGE
                - FEE
                - TIP
              example: GRATUITY
              description: "Fee Class field in Connect. Can be fee, gratuity, service charge, or tip."
            fee_level:
              type: string
              enum:
                - ORDER
                - ITEM
              example: ORDER
              description: "Item or order level"
            print_tips:
              type: boolean
              example: true
              description: This value will cause the tips to be displayed or not
            print_suggested_tip_amount:
              type: boolean
              example: true
              description: This value will cause the suggested tips to be shown on the receipt
            removal_requires_approval:
              type: boolean
              example: false
              description: "Flag from Connect. When enabled, removing the fee from a transaction requires approval from a manager-level account"
            external_id:
              type: string
              example: 2233
              description: "External Identifier used by external integrations"
            exclusive_tax_total:
              type: number
              format: float
              example: 0.25
              description: The total tax eclusive applied
            inclusive_tax_total:
              type: number
              format: float
              example: 0.10
              description: The total tax inclusive applied
            is_available_for_refund:
              type: boolean
              example: true
              description: "Determines whether or not the fee can be refunded."
            is_item_level:
              type: boolean
              example: false
              description: Determines if the fee was applied at the item level
            print_on_reciept:
              type: boolean
              example: true
              description: If enabled, this fee will be printed on the receipt.
            purchase_order_id:
              type: string
              example: "1000554212"
              description: Identifier associated with the purchase
            receipted:
              type: boolean
              example: true
              description: If enabled the value is assumed to be receipted
            refunding:
              type: boolean
              example: false
              description: If the fee is part of a refund the value will be true
            stage:
              type: string
              example: "default"
              description: Stage name for this Fee
            tax_examt:
              type: boolean
              example: false
              description: "If enabled, makes the fee tax exempt"
            uid:
              type: string
              example: "a2082bd8-73bb-43b3-a152-54554d9c37f2"
              description: Unique identifier generated to differentiate this fee in the order
    
        Fee:
          title: Fee
          type: object
          description: "All information around fee objects."
          properties:
            id:
              type: string
              description: "Identifier given to fee upon creation in Connect"
              example: "124"
            name:
              type: string
              description: "Fee name provided to connect at the time of creation, Updatable, non-unique"
              example: "Delivery fee"
            hash:
              type: string
              description: "Unique hash identifier generated by connect"
              example: "3f865b40d56d634a5d85bdacaee1413d"
            fee_basis:
              type: number
              format: float
              description: "Value used as a basis for calculation. If a fee is 5%, the fee_basis will be 0.05. If it is $2.00, the fee_basis will be 2.00"
              example: "2.00"
            taxable:
              type: boolean
              description: "Indicates if fee is taxable or not. Value set in Connect to enable/disable taxable. Fees that are taxable will be included in the total used to calculate taxes. Non-taxable fees are not included."
              example: true
            taxes:
              type: array
              items:
                $ref: '#/components/schemas/MenuItemTax'
            auto_apply:
              type: boolean
              description: "Value set in Connect to enable/disable auto apply. Fees set to auto-apply are automatically applied to every transaction for the vendor to which they're assigned. Fees without auto-apply are manually applied."
              example: false
            apply_before_discount:
              type: boolean
              description: "Applies to net or gross"
              example: false
            fee_class:
              type: string
              description: "Fee Class field in Connect. Can be fee, gratuity, service charge, or tip."
              example: "Fee"
            fee_level:
              type: string
              description: "Item or order level"
              example: "item"
            print_tips:
              type: boolean
              description: "whether the device should print the tip amount on the receipt or not if the fee is of type tip"
              example: false
            print_suggested_tip_amount:
              type: boolean
              description: "whether the device should print the suggested tip amount on the receipt or not if the fee is of type tip"
              example: false
            removal_requires_approval:
              type: boolean
              description: "Flag from Connect. When enabled, removing the fee from a transaction requires approval from a manager-level account"
              example: false
            external_id:
              type: string
              description: "External identifier provided to Connect at creation"
              example: "1245"
            exclusive_tax_total:
              type: number
              description: "deprecated, will be removed in a future version"
              format: float
              example: 0
            inclusive_tax_total:
              type: number
              format: float
              description: "deprecated, will be removed in a future version"
              example: 0.0
            is_available_for_refund:
              type: boolean
              description: "Determines whether or not the fee can be refunded."
              example: false
            is_item_level:
              type: boolean
              description: "Determines whether or not it is item level fee. this will be true if fee_level is item"
              example: true
            print_on_reciept:
              type: boolean
              description: "deprecated, will be removed in a future version"
              example: false
            purchase_order_id:
              type: string
              description: "deprecated, will be removed in a future version"
              example: "0"
            receipted:
              type: boolean
              description: "deprecated, will be removed in a future version"
            refunding:
              type: boolean
              description: "deprecated, will be removed in a future version"
            stage:
              type: string
              description: "deprecated, will be removed in a future version"
            tax_examt:
              type: boolean
              description: "deprecated, will be removed in a future version"
            uid:
              type: string
              description: "deprecated, will be removed in a future version"
        AlcoholRuleSet:
          title: Alcohol Rule Set
          type: object
          properties:
            limit_per_order:
              type: integer
              description: "Limit set in Connect for how many alcoholic items (determined by isAlcohol flag on the item) can be purchased in a single order."
            per_order_limit_reached_error_message:
              type: string
              description: "Error message for when the maximum number of alcoholic items has been added to an order. Comes up when further alcoholic items are attempted to be added to the order."
            restriction_error_message:
              type: string
              description: "Alert message that should be displayed when a customer adds an alcoholic item to their cart"
            limit_per_order_enabled:
              type: boolean
              description: "Indicates if the vendor has the limit per order feature enabled or disabled"
        AppliedDiscount:
          title: Applied Discount
          type: object
          description: "A discount whose requisite and reward criteria have been met that is then applied to a cart, or items within a cart."
          properties:
            amount_reduced_by:
              type: number
              example: 25.00
              description: "Raw discount basis. If a discount is $25 off, the number is 25. If Discount is 25% off, the number will be 25. This is downstream and mapped to percent off or amount off inside of checkout."
            calculated_value:
              type: number
              example: -15.99
              description: "The value of a discount that is applied."
            quantity:
              type: number
              example: 2
              description: "The number of items being discounted"
            cart_level:
              type: boolean
              example: false
              description: "Determines whether the discount is applied to the subtotal of the transaction or to a subset of items within the cart. If true, applied to the transaction / if false, applied to a subset of items."
            display_in_cart:
              type: boolean
              example: true
              description: For UI purposes, to decide when to show or not the discount on the cart receipt.
            external_reference:
              $ref: '#/components/schemas/CartDiscount_external_reference'
            id:
              type: string
              example: "1000658"
              description: "Appetize's internal reduction id. For internal use only. Created by Connect when discount is created."
            name:
              type: string
              example: Buy one get one free
              description: "Appetize's name of the reduction in Connect."
            promo_code:
              type: string
              example: BLACKFRIYAY
              description: Code that was used for this discount as a requisite.
            reduction_computation:
              $ref: '#/components/schemas/CartDiscount_reduction_computation'
            reference_id:
              type: string
              example: "121207"
              description: "From the Reference ID field in Connect."
            removal_allowed:
              type: boolean
              example: true
              description: "Internal use only. If true, allows removal of the discount during a transaction."
            short_description:
              type: string
              example: discount for buying one to get one free
              description: "Field populated through configuring the discount details field in Connect."
            tags:
              type: array
              items:
                type: string
                example: percentDiscount
              description: "Price of an item multiplied by quantity after deductions were calculated."
            bundle_uuid:
              type: string
              example: 71d0c11e-54ce-4e56-90af-86592c04e879
              description: "Used by Connect to mark a discounted item as part of a bundle."
        Attribute:
          title: Venue Attribute
          description: Assigned attribute to the venue in the venues section for Corporate Connect
          type: object
          properties:
            name:
              type: string
              description: name assigned to the attribute in the attributes connect section
              example: "Test attribute"
            entity_type:
              type: string
              description: Attribute type
              example: "venue"
            value:
              type: string
              description: associated value for attribute
              example: "some value"
        AuthResponse:
          title: Auth Response
          required:
            - authToken
          type: object
          description: "Payload: Success: Returns a token. This token is needed to make all subsequent calls to the service. Failure: Any other response. This token should be passed as a bearer token for subsequent http/s requests."
          properties:
            auth_key:
              type: string
              description: "Auth key token returned upon successful authentication."
          example:
            auth_key: some jwt encoded auth key here
        AuthenticationBearerFailure:
          title: Authentication Failure From Bearer
          required:
            - message
          type: object
          description: "Response due to authentication failure from an invalid bearer token."
          properties:
            Code:
              type: integer
              default: 401
            message:
              type: string
              description: "Contains the returned message from the service after a failure"
              example: "failed parsing claims: signature is invalid"
        AuthenticationXAPIFailure:
          title: Authentication Failure From X-API-Key
          required:
            - message
          type: object
          description: "Response due to authentication failure from an invalid X-API-KEY header."
          properties:
            message:
              type: string
              description: "Contains the returned message from the service after a failure"
          example:
            message: "api key could not be found or is inactive"
        BsonID:
          title: Bson ID
          type: string
          format: bson.id
          example: 507f191e810c19729de860ea
          description: "Document Id related to a database object. Only used by internal DBs. Unique ID"
        ItemID:
          title: Item ID
          type: number
          example: 98
          description: "Identifier given to an item upon creation in Connect"
        CalculateCartRequest:
          title: Calculate Cart Request
          type: object
          additionalProperties: false
          description: Include cart items, associated payments, and the user with all discount codes that can be applied.
          properties:
            cart:
              $ref: '#/components/schemas/CartRequest'
            user:
              $ref: '#/components/schemas/CartUserRequest'
          required:
            - cart
        CalculateCartWithModifiersRequest:
          title: Calculate Cart With Modifiers Request
          type: object
          additionalProperties: false
          description: Include cart items, associated payments, and the user with all discount codes that can be applied, also we can add use item modifiers and nested modifiers.
          properties:
            cart:
              $ref: '#/components/schemas/CartWithModifiersRequest'
            user:
              $ref: '#/components/schemas/CartUserRequest'
          required:
            - cart
        CalculateCartResponse:
          title: Calculate Cart Response
          type: object
          description: |-
            This response includes everything that was applied to the cart,
            there are different options that can be active or not depending on your environment,
            > this response is immutable, it should not be manipulated and if you make any change manually it will not work as expected.
          additionalProperties: false
          properties:
            signed_cart:
              $ref: '#/components/schemas/SignedCart'
        CalculateCartWithModifiersResponse:
          title: Calculate Cart With Modifiers Response
          type: object
          description: |-
            This response includes everything that was applied to the cart,
            there are different options that can be active or not depending on your environment,
            > this response is immutable, it should not be manipulated and if you make any change manually it will not work as expected.
          additionalProperties: false
          properties:
            signed_cart:
              $ref: '#/components/schemas/SignedCartWithModifiers'
        CartOrderType:
          type: string
          example: POS
          description: Type of order based on the origin of the request.
          enum:
            - POS
            - MOBILE
            - CONNECT
        CartRequest:
          title: Cart Request
          type: object
          additionalProperties: false
          description: |-
            Contains everything related to an order, such as items, payments.
            > Some fields will be overwritten with the values provided by `Connect Product API` such as item cost or categories, but you must send all the necessary fields.
          properties:
            tip_status_closed:
              type: boolean
              example: true
              description: Sets closed status for a tip. This will be moved to the Checkout Request in the future.
            device_order_id:
              type: string
              example: A1151999920042015380002
              description: |-
                Order Identifier used to summarize a transaction.
                - Does not have to be unique.
                - Used identify a transaction in connect.
            order_type:
              $ref: '#/components/schemas/CartOrderType'
            seat_id:
              type: string
              description: Seat Identifier is optional.
              example: 456
            visitor_id:
              type: string
              description: Visitor Identifier is optional.
              example: 899
            pickup_time:
              type: string
              format: ISO8601/RFC3339
              example: "2021-01-14T07:26:38-08:00"
              description: |-
                Timestamp in `ISO8601/RFC3339` format; allows ordering ahead even when vendor is closed.
                > This will be moved to the `Checkout` Request in the future.
            cart_items:
              type: array
              uniqueItems: false
              minItems: 1
              description: All items for this order should be placed here.
              items:
                $ref: '#/components/schemas/CartItemRequest'
            check:
              $ref: '#/components/schemas/Check'
            customer:
              $ref: '#/components/schemas/Customer'
            payments:
              type: array
              uniqueItems: true
              minItems: 1
              description: Payments associated to this order.
              items:
                $ref: '#/components/schemas/Payment'
          required:
            - cart_items
            - payments
        CartResponse:
          title: Cart
          type: object
          description: "Data object in which all item and calculation information for a given transaction is contained."
          properties:
            tip_status_closed:
              type: boolean
              example: true
              description: Sets closed status for a tip. This will be moved to the Checkout Request in the future.
            device_order_id:
              type: string
              example: A1151999920042015380002
              description: |-
                Order Identifier used to summarize a transaction.
                - Does not have to be unique.
                - Used identify a transaction in connect.
            device_order_time:
              type: string
              format: ISO8601/RFC3339
              example: "2021-01-14T07:26:38-08:00"
              description: Timestamp in `ISO8601/RFC3339` format; used to know when exactly this request was placed.
            order_type:
              $ref: '#/components/schemas/CartOrderType'
            seat_id:
              type: string
              description: Seat Identifier is optional.
              example: 456
            visitor_id:
              type: string
              description: Visitor Identifier is optional.
              example: 899
            device_order_uuid:
              type: string
              format: uuid.V4
              example: 3487829f-8a89-4ea8-9585-9e37d72e9091
              description: Universally Unique Order Descriptor, generated by OAPI as part of Calculate.
            pickup_time:
              type: string
              format: ISO8601/RFC3339
              example: "2021-01-14T07:26:38-08:00"
              description: |-
                Timestamp in `ISO8601/RFC3339` format; allows ordering ahead even when vendor is closed.
                > This will be moved to the `Checkout` Request in the future.
            cart_items:
              type: array
              uniqueItems: false
              minItems: 1
              items:
                $ref: '#/components/schemas/CartItem'
            calculated_cart_sum:
              type: array
              description: "A client-supplied array of the expected monetary values for the cart that is only used when the active configuration has Validate Cart Totals as true (Default is false).  If the sum of supplied Total values for the array of calculated cart sums differs from what OAPI validates, the request is rejected."
              items:
                $ref: '#/components/schemas/CartLine'
            check:
              $ref: '#/components/schemas/Check'
            customer:
              $ref: '#/components/schemas/Customer'
            location:
              $ref: '#/components/schemas/Location'
            discounts:
              type: array
              items:
                $ref: '#/components/schemas/AppliedDiscount'
            fees:
              type: array
              items:
                $ref: '#/components/schemas/AppliedFee'
            payments:
              type: array
              uniqueItems: true
              minItems: 1
              description: Payments associated to this order.
              items:
                $ref: '#/components/schemas/Payment'
            subtotal:
              type: number
              description: |-
                Cost of Items, Including Inclusive Taxes, reduced by overall amount by item level reductions.
                > Deprecated: you should use `cart_totals` instead
              example: 83.74
              deprecated: true
            cart_totals:
              $ref: '#/components/schemas/CartTotals'
        CartWithModifiersRequest:
          title: Cart With Modifiers Request
          type: object
          additionalProperties: false
          description: "Data object in which all item and calculation information for a given transaction is contained. This is used for carts where nested modifiers are present."
          properties:
            tip_status_closed:
              type: boolean
              example: true
              description: Sets closed status for a tip. This will be moved to the Checkout Request in the future.
            device_order_id:
              type: string
              example: A1151999920042015380002
              description: |-
                Order Identifier used to summarize a transaction.
                - Does not have to be unique.
                - Used identify a transaction in connect.
            order_type:
              $ref: '#/components/schemas/CartOrderType'
            seat_id:
              type: string
              description: Seat Identifier is optional.
              example: 456
            visitor_id:
              type: string
              description: Visitor Identifier is optional.
              example: 899
            pickup_time:
              type: string
              format: ISO8601/RFC3339
              example: "2021-01-14T07:26:38-08:00"
              description: |-
                Timestamp in `ISO8601/RFC3339` format; allows ordering ahead even when vendor is closed.
                > This will be moved to the `Checkout` Request in the future.
            external_metadata:
              type: string
              description: Additional data to be stored, so client can track information for which Appetize doesn't have a dedicated field.
            rounding:
              $ref: '#/components/schemas/CheckoutRounding'
            cart_items:
              title: Cart Items
              type: array
              uniqueItems: false
              minItems: 1
              items:
                oneOf:
                  - $ref: '#/components/schemas/CartItemWrappedWithRootMapNodeRequest'
                  - $ref: '#/components/schemas/CartItemWrappedWithOriginalItemRequest'
            check:
              $ref: '#/components/schemas/Check'
            customer:
              $ref: '#/components/schemas/Customer'
            payments:
              type: array
              uniqueItems: true
              minItems: 1
              description: Payments associated to this order.
              items:
                $ref: '#/components/schemas/Payment'
          required:
            - cart_items
            - payments
        CartWithModifiersResponse:
          title: Cart With Modifiers Response
          type: object
          description: "Data object in which all item and calculation information for a given transaction is     contained. This is used for carts where nested modifiers are present."
          properties:
            tip_status_closed:
              type: boolean
              example: true
              description: Sets closed status for a tip. This will be moved to the Checkout Request in the future.
            device_order_id:
              type: string
              example: A1151999920042015380002
              description: |-
                Order Identifier used to summarize a transaction.
                - Does not have to be unique.
                - Used identify a transaction in connect.
            device_order_time:
              type: string
              format: ISO8601/RFC3339
              example: "2021-01-14T07:26:38-08:00"
              description: Timestamp in `ISO8601/RFC3339` format; used to know when exactly this request was placed.
            order_type:
              $ref: '#/components/schemas/CartOrderType'
            seat_id:
              type: string
              description: Seat Identifier is optional.
              example: 456
            visitor_id:
              type: string
              description: Visitor Identifier is optional.
              example: 899
            device_order_uuid:
              type: string
              format: uuid.V4
              example: 3487829f-8a89-4ea8-9585-9e37d72e9091
              description: Universally Unique Order Descriptor, generated by OAPI as part of Calculate.
            pickup_time:
              type: string
              format: ISO8601/RFC3339
              example: "2021-01-14T07:26:38-08:00"
              description: |-
                Timestamp in `ISO8601/RFC3339` format; allows ordering ahead even when vendor is closed.
                > This will be moved to the `Checkout` Request in the future.
            rounding:
              $ref: '#/components/schemas/CheckoutRounding'
            cart_items:
              title: Cart Items
              type: array
              uniqueItems: false
              minItems: 1
              items:
                oneOf:
                  - $ref: '#/components/schemas/CartItemWrappedWithRootMapNode'
                  - $ref: '#/components/schemas/CartItemWrappedWithOriginalItem'
            calculated_cart_sum:
              type: array
              description: "A client-supplied array of the expected monetary values for the cart that is only used when the active configuration has Validate Cart Totals as true (Default is false).  If the sum of supplied Total values for the array of calculated cart sums differs from what OAPI validates, the request is rejected."
              items:
                $ref: '#/components/schemas/CartLine'
            check:
              $ref: '#/components/schemas/Check'
            customer:
              $ref: '#/components/schemas/Customer'
            location:
              $ref: '#/components/schemas/Location'
            discounts:
              type: array
              items:
                $ref: '#/components/schemas/AppliedDiscount'
            fees:
              type: array
              items:
                $ref: '#/components/schemas/AppliedFee'
            payments:
              type: array
              uniqueItems: true
              minItems: 1
              description: Payments associated to this order.
              items:
                $ref: '#/components/schemas/Payment'
            subtotal:
              type: number
              description: |-
                Cost of Items, Including Inclusive Taxes, reduced by overall amount by item level reductions.
                > Deprecated: you should use `cart_totals` instead
              example: 83.74
              deprecated: true
            cart_totals:
              $ref: '#/components/schemas/CartTotals'
        CartTotals:
          title: Cart Totals
          description: Cumulative amounts totaled for functions within calculate.
          type: object
          properties:
            discounts_total:
              type: number
              format: float
              example: -15.00
              description: contains all the discounts for items accumulated, that value is always represented as a negative value.
            fees_total:
              type: number
              format: float
              example: 2.50
              description: contains all the fees for items  accumulated.
            exclusive_tax:
              type: number
              format: float
              example: 1.25
              description: contains all exclusive taxes for items and mods accumulated.
            inclusive_tax:
              type: number
              format: float
              example: 0
              description: contains all inclusive taxes for items and mods accumulated.
            subtotal:
              type: number
              format: float
              example: 79.99
              description: Cost of Items and Modifiers, Including Inclusive Taxes, reduced by overall amount by item level reductions.
            original_total:
              type: number
              format: float
              description: Original cost of Items and Modifiers without applied taxes, discounts or any other price modification.
              example: 94.99
            total:
              type: number
              format: float
              example: 83.74
              description: Subtotal, reduced by cart level reductions, plus Exclusive Taxes, Plus Fees.
        CartItemRequest:
          title: Cart Item Request
          required:
            - cost
            - id
            - name
            - quantity
          type: object
          description: All information for an item within a cart. used in `Calculate` Request
          properties:
            id:
              type: string
              example: "12691"
              description: "Identifier given to an item upon creation in Connect"
            quantity:
              type: number
              example: 1
              description: "Quantity of units of an identical cart item. Items with different modifiers will be separate quantities."
            cost:
              type: number
              example: 6.63
              description: "Price of a single unit of an item id including modifiers that are included or increase parent price. Does not include mods that add price to order. Assigned in Connect."
            notes:
              type: string
              example: "very spicy"
              description: "Additional notes added in Connect"
            name:
              type: string
              example: "Cheeseburger"
              description: "Item name in Connect"
            sku:
              type: string
              example: "7782-9300-9282"
              description: "SKU Number in Connect"
            tare_weight:
              example: 1
              type: number
              description: "Associated with Tare Weight field in Connect. This is the weight associated with any non-chargable sundries required for sanitation, etc. when measuring the weight of an item."
            menu_groups:
              type: array
              items:
                $ref: '#/components/schemas/CartItemMenuGroup'
            modifiers:
              type: array
              items:
                $ref: '#/components/schemas/CartItemModifier'
            categories:
              type: array
              items:
                $ref: '#/components/schemas/CartItemCategory'
        CartItem:
          title: Cart Item
          required:
            - cost
            - id
            - name
            - quantity
          type: object
          description: "All information for an item within a cart."
          properties:
            id:
              type: string
              example: "12691"
              description: "Identifier given to an item upon creation in Connect"
            quantity:
              type: number
              example: 1
              description: "Quantity of units of an identical cart item. Items with different modifiers will be separate quantities."
            cost:
              type: number
              example: 30.00
              description: "Price of a single unit of an item id including modifiers that are included or increase parent price. Does not include mods that add price to order. Assigned in Connect."
            original_total:
              type: number
              example: 39.98
              description: Original unit cost multiplied by quantity.
            original_unit_cost:
              type: number
              example: 19.99
              description: Price of a single item before deductions were calculated
            total:
              type: number
              example: 30.00
              description: Unit cost multiplied by quantity
            unit_cost:
              type: number
              example: 15.00
              description: Unit cost after application of discounts, if applicable.
            subvendor_id:
              type: string
              description: List of identifiers that represents the sub-vendors assigned to a vendor (venue level). This element is created in connect under the Vendors page. Click on the `Add Sub` button that corresponds to the desired vendor. After the sub-vendor creation, it can be assigned to an existing item under the page Items > Items > Assigned Vendor. If this value is not set in connect the value "0" is returned.
              example: "5"
            notes:
              type: string
              example: "very spicy"
              description: "Additional notes added in Connect"
            name:
              type: string
              example: "Cheeseburger"
              description: "Item name in Connect"
            sku:
              type: string
              example: "7782-9300-9282"
              description: "SKU Number in Connect"
            tare_weight:
              example: 1
              type: number
              description: "Associated with Tare Weight field in Connect. This is the weight associated with any non-chargable sundries required for sanitation, etc. when measuring the weight of an item."
            price_override:
              type: boolean
              example: True
            is_gift_card_item:
              type: boolean
              example: True
              description: Whether or not this item is purchased with a gift card
            menu_groups:
              type: array
              items:
                $ref: '#/components/schemas/CartItemMenuGroup'
            modifiers:
              type: array
              items:
                $ref: '#/components/schemas/CartItemModifier'
            taxes:
              type: array
              items:
                $ref: '#/components/schemas/Taxes'
            categories:
              type: array
              items:
                $ref: '#/components/schemas/CartItemCategory'
            discounts:
              type: array
              items:
                $ref: '#/components/schemas/AppliedDiscount'
        CartItemWrappedWithOriginalItemRequest:
          title: Cart Item Wrapped With Original Item Request
          description: This is an extra layer used for polymorphic functionality within the service, this is a request so contains fewer properties.
          type: object
          properties:
            original_cart_item:
              $ref: '#/components/schemas/CartItemRequest'
        CartItemWrappedWithOriginalItem:
          title: Cart Item Wrapped With Original Item
          description: This is an extra layer used for polymorphic functionality within the service.
          type: object
          properties:
            original_cart_item:
              $ref: '#/components/schemas/CartItem'
        CartItemWithModifiersRequest:
          title: Cart Item With Modifiers Request
          required:
            - cost
            - id
            - name
            - quantity
          type: object
          description: "Cart item with nested modifiers, this is a request so contains fewer properties."
          properties:
            item:
              $ref: '#/components/schemas/SellableAPIItem'
            quantity:
              type: number
              example: 1.00
              description: "Quantity of units of an identical cart item. Items with different modifiers will be separated quantities."
            activity:
              title: Cart Item Activity
              type: string
              description: "A string representing if it is a purchase or a return"
              example: ACTIVITY_PURCHASE
              enum:
                - ACTIVITY_PURCHASE
                - ACTIVITY_RETURN
            cart_item_cost:
              $ref: '#/components/schemas/CartItemCost'
            menu:
              type: object
              description: "Item position and configuration not part of calculation"
              properties:
                course_id:
                  type: string
                  description: "ID of \"course\" or \"Delivery Time\" used to group items for fulfillment."
                  example: "41312"
                is_off_menu:
                  type: boolean
                  description: "Indicates if item selected is no part of a pre-configured menu.  Item must still be available/assigned to vendor catalog and be available for purchase."
                  default: false
                  example: true
            map_node_items:
              type: object
              description: "Contains the flattened map of modifier selections keyed by the modifier's uuid to its cart item data"
              properties:
                <uuid>:
                  $ref: '#/components/schemas/MapNodeItem'
        MapNodeItem:
          type: object
          title: Map Node Item
          description: Contains a single map node item, Used to contain the references to a chosen modifier.
          properties:
            item:
              $ref: '#/components/schemas/Item'
            quantity:
              type: number
              example: 1.00
            activity:
              type: string
              description: "A string representing if it is a purchase or a return"
              example: ACTIVITY_PURCHASE
              enum:
                - ACTIVITY_PURCHASE
                - ACTIVITY_RETURN
            cart_item_cost:
              $ref: '#/components/schemas/CartItemCost'
        CartItemWithModifiers:
          title: Cart Item With Modifiers
          required:
            - cost
            - id
            - name
            - quantity
          type: object
          description: "Cart item with nested modifiers."
          properties:
            item:
              $ref: '#/components/schemas/SellableAPIItem'
            quantity:
              type: number
              example: 1.00
              description: "Quantity of units of an identical cart item. Items with different modifiers will be separated quantities."
            activity:
              title: Cart Item Activity
              type: string
              description: "A string representing if it is a purchase or a return"
              example: ACTIVITY_PURCHASE
              enum:
                - ACTIVITY_PURCHASE
                - ACTIVITY_RETURN
            cart_item_cost:
              $ref: '#/components/schemas/CartItemCost'
            discounts:
              type: array
              items:
                $ref: '#/components/schemas/AppliedDiscount'
            taxes:
              type: array
              items:
                $ref: '#/components/schemas/Taxes'
            menu:
              type: object
              description: "Item position and configuration not part of calculation"
              properties:
                course_id:
                  type: string
                  description: "ID of \"course\" or \"Delivery Time\" used to group items for fulfillment."
                  example: "41312"
                is_off_menu:
                  type: boolean
                  description: "Indicates if item selected is no part of a pre-configured menu.  Item must still be available/assigned to vendor catalog and be available for purchase."
                  default: false
                  example: true
            map_node_items:
              type: object
              description: "Contains the flattened map of modifier selections keyed by the modifier's uuid to its cart item data"
              properties:
                <uuid>:
                  type: object
                  properties:
                    item:
                      $ref: '#/components/schemas/Item'
                    quantity:
                      type: number
                      example: 1.00
                    activity:
                      type: string
                      description: "A string representing if it is a purchase or a return"
                      example: ACTIVITY_PURCHASE
                      enum:
                        - ACTIVITY_PURCHASE
                        - ACTIVITY_RETURN
                    cart_item_cost:
                      $ref: '#/components/schemas/CartItemCost'
            map_node_item_computations:
              type: object
              description: "Contains the adjusted cost and computation method of each modifier in map_node_items"
              properties:
                <uuid>:
                  $ref: "#/components/schemas/CartItemsUsedForModifiersComputation"
        CartItemWrappedWithRootMapNodeRequest:
          title: Cart Item Wrapped With RootMapNode Request
          description: Wrapper used only to contain cart_item_with_root_map_node, it is necessary because protobuf oneof is used and it requires this structur, this is a request so contains fewer properties.
          type: object
          properties:
            cart_item_with_root_map_node:
              $ref: '#/components/schemas/CartItemWithModifiersRequest'
        CartItemWrappedWithRootMapNode:
          title: Cart Item Wrapped With RootMapNode
          description: Wrapper used only to contain cart_item_with_root_map_node, it is necessary because protobuf oneof is used and it requires this structure.
          type: object
          properties:
            cart_item_with_root_map_node:
              $ref: '#/components/schemas/CartItemWithModifiers'
        CartItemsUsedForModifiers:
          title: Cart Item Used For Modifiers
          description: Being used to contain SellableItem and anything else needed to identify an item in a cart with modifiers.
          required:
            - cost
            - id
            - name
            - quantity
          type: object
          properties:
            item:
              $ref: '#/components/schemas/SellableItem'
            quantity:
              type: number
              description: "Quantity of units of a given cart item with identical modifiers. Items with different modifiers will be separated quantities."
              example: 1.00
            activity:
              type: string
              description: "A string representing if it is a purchase or a return"
              example: ACTIVITY_PURCHASE
              enum:
                - ACTIVITY_PURCHASE
                - ACTIVITY_RETURN
            cart_item_cost:
              $ref: '#/components/schemas/CartItemCost'
            discounts:
              type: array
              items:
                $ref: '#/components/schemas/AppliedDiscount'
            taxes:
              type: array
              items:
                $ref: '#/components/schemas/Taxes'
        CartItemsUsedForModifiersComputation:
          title: Cart Items Used For Modifiers Computation
          description: Being used to know the value or amount that results from applying a modifier.
          type: object
          properties:
            item:
              type: object
              properties:
                mode:
                  type: string
                  example: "ADD_PRICE_TO_ORDER"
            price_adjustment:
              type: number
              example: "1.39"
              description: "The amount this item's TotalCost has been increased or decreased in regard to the pricing mode.  If this modifier's pricing mode is Increases or Included, the number will be negative or 0."
            original_unit_cost:
              type: number
              example: 12.49
              description: the original price of a single unit of this item
            original_total_cost_per_unit:
              type: number
              example: 24.98
              description: "the total cost of the quantity of this modifier per direct parent item.  If 3 of this item exist per parent item, this value is 3 * original_unit_cost"
            original_total_cost:
              type: number
              example: 49.96
              description: "total total cost of the modifier for the entire quantity of this cart item.  If 3 of this item exist per parent item, and 2 parent items exist per top level cart item, and the top level cart item has quantity 2, this amount is 2 (top level cart item quantity) * 2 (parent item quantity) * 3 (quantity per parent) * original_unit_cost"
            adjusted_unit_cost:
              type: number
              example: 15.49
              description: "unit cost after adjusting for pricing modes.  If this item's pricing mode is Increases Parent Price or Included in Parent price, this number will be 0"
            adjusted_total_cost_per_unit:
              type: number
              example: 30.98
              description: "total cost per parent unit after adjusting for pricing modes. If this item's pricing mode is Increases Parent Price or Included in Parent price, this number will be 0"
            adjusted_total_cost:
              type: number
              example: 61.96
              description: "total cost of the modifier across the entire quantity of this cart item after adjusting for pricing modes.  If this item's pricing mode is Increases Parent Price or Included in Parent price, this number will be 0"
            quantity_per_unit:
              type: number
              example: 2
              description: "quantity of this modifier per parent item"
            total_quantity:
              type: number
              example: 12
              description: "quantity of this modifier for the quantity of the top level cart item"
        CartItemCost:
          title: Cart Item Cost
          description: Object containing all the costs associated with an item
          type: object
          properties:
            original_total:
              description: "The cost of the original_unit_cost * the quantity of the item"
              type: number
              example: "20.00"
            original_unit_cost:
              description: "The cost of one quantity of the item. "
              type: number
              example: "10.00"
            total:
              description: "The cost of unit_cost * quantity of the item. "
              type: number
              example: "18.00"
            unit_cost:
              description: "The cost of one unit after discounts of the item."
              type: number
              example: "9.00"
            is_open_price:
              type: boolean
              description: "Indicates if the pricing is actually manually input by user.  As opposed to being a price selected \"Custom Price Level\". Must be used in conjunction with \"price_overide\" to bypass calculation use of current active price level.  Does not affect price calculation.  Used for reporting purposes."
              default: false
              example: false
            active_price_level:
              $ref: '#/components/schemas/PriceLevel'
        Credential:
          description: Credentials used for PPI discounts
          properties:
            card_number:
              type: string
              example: "123454678"
              description: Associated card number for the credential
            card_pin:
              type: string
              example: "1234"
              description: Associated card pin number
            card_encryption:
              type: string
              example: "cnp"
              description: Used encryption method
            name:
              type: string
              example: "John Smith"
              description: User name associated to the card
            phone:
              type: string
              example: "1-888-88457158"
              description: Associated user's phone number
            email:
              type: string
              example: "some@email.com"
              description: Associated user's email account
            room_number:
              type: string
              example: "5"
              description: Associated user's room number
        Item:
          #TODO: this element should be reviewed on PLAT-681, and remove this comment from PLAT-680, cause V2 have more fields than V1
          title: Item
          description: Contains all the information about an item
          type: object
          properties:
            id:
              type: string
              example: "4554"
              description: "Identifier given to an item upon creation in Connect"
            name:
              type: string
              example: "Fruit Loops"
              description: Human readable name made in Connect. Updateable, non-unique. This field is set in Connect during the item creation.
            display_name:
              type: string
              example: "Cheese"
              description: Human readable name made in Connect when setting the modifier.
            notes:
              #PLAT-680 This item is not shown in Connect>Items ??
              type: string
              description: Field for including various notes about items.
              example: "Item needs to be applied with milk."
            sku:
              type: string
              description: Maps to SKU (Stock keeping unit) number field in Connect.
              example: "sku-555"
            gift_card:
              #PLAT-680 This item is not shown in Connect>Items ?? We do have type=giftcard
              type: boolean
              description: This field represents if the current item is a gift card or not.
              example: false
            price_override:
              type: boolean
              example: true
              description: This field shows if the price is overridden at venue/vendor level. Let's suppose that for BigCompany with 3 vendors in only one vendor they want to sell an item, lets say Coca-cola, in a higher rate, the BigCompany administrator can override the Coca-cola price at vendor level.
            tare_weight:
              type: number
              example: "0.55"
              description: Associated with `Tare Weight` field in Connect. This is the weight associated with any non-chargable sundries required for sanitation, etc. when measuring the weight of an item. In Connect, this field can be found under the item form in the `Secondary section`.
            discountable:
              type: boolean
              example: true
              description: This field represents if an item is used to satisfy requisites or rewards for cart or item-level discounts. If this value is set to false, the item value will not be eligible to satisfy rewards, so the item cost or the subtotal won't be affected. This field is set in Connect.
            taxable:
              type: boolean
              example: true
              description: This field represents if the item is applied to taxes calculation. If it is set to true, then the value of the item will be included when calculating taxes. If no, this item won't be used in taxes calculation. This fields doesn't affect the modifiers taxes values by itself.
            categories:
              description: This field holds an array elements `Category Items`, that describes all the categories assigned to the item.
              type: array
              items:
                $ref: '#/components/schemas/CartItemCategory'
            item_attributes:
              description: This field holds an array elements `Attributes`, that describes all the attributes assigned to the item.
              type: array
              items:
                $ref: '#/components/schemas/ItemAttribute'
            pos_category_ids:
              description: This is field is an array of IDs. Every ID represents an identifier that can be used to fetch additional information to be displayed on the Point of Sale (POS).
              type: array
              items:
                $ref: '#/components/schemas/POSCategoryID'
              example: [ "1","2","3","4" ]
            upsell_items:
              type: array
              description: "List of upsell items.  An upsell item is an extra item that gets offered as a suggestion when selling a product.  They are set in connect."
              items:
                $ref: '#/components/schemas/UpsellItem'
            custom_fields:
              type: array
              description: "Documentation Forthcoming"
              items:
                $ref: '#/components/schemas/ItemCustomField'
            external_names:
              description: This field holds the information about the name existing in a external system used in a special integration case.
              $ref: "#/components/schemas/ExternalNames"
            images:
              description: This field is an array with all the images paths associated to the item.
              type: array
              items:
                $ref: "#/components/schemas/Image"
            item_availability:
              description: This field shows whether or not the item is available in given day part(s).
              $ref: "#/components/schemas/ItemAvailability"
            original_cost:
              type: number
              description: This field represents the active price of the modifier item.
              example: 1.49
            show_desc:
              type: boolean
              description: This fields is set in Connect under `Items form` in the `Display section`. If this value is set to true the item description is shown in the menu.
              example: false
            description:
              type: string
              description: This field holds the description to be shown in the menu, only visible if the show_desc field is set as true. This fields is set in Connect under `Items form` in the `Display section`
              example: "Family size fruit loops with extra sugar"
            calories:
              type: string
              description: Calories number set in Connect under `Items form` in the `Secondary section`. The type of this field is a string but it holds a number. *** This field will be shown in certain items types ***
              example: "450"
            calories_label:
              type: string
              example: "Kilocalories"
              description: Label to be applied to the `calories` field in the menu, this item set in Connect under `Items form` in the `Secondary section` *** This field will be shown in certain items types ***
            type:
              description: This field holds the information about the type of this item.
              $ref: "#/components/schemas/ItemType"
            is_alcohol:
              type: boolean
              description: This field shows if the item is an alcohol drink, this value is set in Connect under `Items form` in the `Display section`. *** This field will be shown in certain items types ***
              example: false
            sort_order:
              type: string
              example: 1
              description: This fields is string but internally is a number, this field set in  in Connect under `Items form` in the `Display section`. This element is used in the serving orders, for example first the meat then the beverage.
            is_suite_item:
              type: boolean
              example: True
              description: This field shows if the item is a suite item or not.
            sold_as_item:
              type: boolean
              description: "Indicates item can be sold on its own without parent item."
              example: true
            used_as_modifier:
              type: boolean
              description: "Indicates if items is a 'modifier' item"
              example: true
            print_on_receipt:
              type: boolean
              description: "Indicates if item should appear on customer facing screens or receipt"
              example: false
            is_suite_package:
              type: boolean
              description: "Indicates if item is used as a Suite package item (contains suite items) and is a suite item"
              example: false
    
        ItemType:
          title: Item Type
          description: This object represents an item type.
          type: string
          enum:
            - "Meal"
            - "Food"
            - "Drink"
            - "Merchandise"
            - "Bundle"
            - "Gift"
            - "Shipping"
        ItemAvailability:
          type: object
          description: This object represents if an item is available at one more day parts.
          properties:
            always_available:
              type: boolean
              description: This field represents if the item is available or not, true means it is available.
              example: "true"
            availability:
              $ref: "#/components/schemas/Availability"
        Availability:
          type: object
          description: This object represents if an item is available at one more day parts.
          properties:
            daypart_ids:
              type: array
              description: This field holds an array of strings with that represents the IDs for the daypart that this availability object applies.
              items:
                type: string
              example: [ "5","7" ]
        ExternalNames:
          type: object
          description: This object represents a unique item in third party systems
          properties:
            status:
              type: string
              example: STATUS_ACTIVE
              enum:
                - STATUS_ACTIVE
            id:
              type: string
              example: "cer-1256677"
            class:
              type: string
              example: "cereal"
        POSCategoryID:
          title: POS Category ID
          description: Identifier of a POS Category element, a POS Category registry holds additional information about a category assigned to the point of sale, for example allergies or restrictions like alcohol limit restriction.
          type: string
          example: "1"
        SellableItem:
          title: Sellable Item
          description: An item that can be sold. Item is embedded but also has a root map node. It also contains all the possible child selections in map_node_items and map_node_item_computations associated to a modifier
          type: object
          properties:
            item:
              $ref: '#/components/schemas/Item'
            root_map_node:
              $ref: '#/components/schemas/RootMapNode'
            map_node_items:
              type: object
              properties:
                <uuid>:
                  $ref: '#/components/schemas/SellableItem'
            map_node_item_computations:
              type: object
              description: "Contains the adjusted cost and computation method of each modifier in map_node_items"
              properties:
                <uuid>:
                  $ref: "#/components/schemas/CartItemsUsedForModifiersComputation"
        SellableAPIItem:
          title: Sellable API Item
          description: This object represents an item that can be sold and wraps information about the item itself, its modifiers in a tree representation, and all the selected modifiers to apply to the item. The fields for this objects are `Item`, `root_map_node` and `map_node_items`. The field `Item` holds information created in connect with common fields for an Item. The `root_map_node` field holds the full tree of modifiers applicable to this element. Finally `map_node_items` hold the modifiers to be applied to an item in the context of an order (process and checkout endpoints). For additional information in every field please consult the reference in this document.
          type: object
          properties:
            item:
              $ref: '#/components/schemas/Item'
            root_map_node:
              $ref: '#/components/schemas/RootMapNode'
            map_node_item:
              $ref: '#/components/schemas/MapNodeItems'
        Location:
          title: Location (Vendor)
          description: The store, station and employee that made the purchase
          type: object
          properties:
            store_id:
              type: string
              example: "123"
              description: The store id where the purchase is made
            station_id:
              type: string
              example: "456"
              description: The station id where the purchase is made
            employee_id:
              type: string
              example: "789"
              description: The signed in employee that made the purchase
        MapNodeItems:
          type: object
          title: Map of selected Items in an order
          description: This map is a key, value object that represents a modifiers selection applicable to an Item in the context of an order. The key is the modifier identifier, and the value is the modifier itself. This object applies to Calculate and Checkout endpoints ***Only available in v2.***
          properties:
            <uuid>:
              $ref: '#/components/schemas/Item'
        PriceLevel:
          title: Price Level
          description: This object represents a selection in the cart for a given item. It contains information about the item cost. Connect determines the appropriate price level to assign for the item when used by Ordering API.
          type: object
          properties:
            status:
              type: string
              enum:
                - "STATUS_UNSPECIFIED"
                - "STATUS_ACTIVE"
              description: This value represents the current status for the price level.
            Cost:
              type: number
              example: 458.58
              description: This is field represents the value of the cost for the given price level, this value is stored including decimals (float)
        CartItemCategory:
          title: Cart Item Category
          required:
            - id
            - level
          type: object
          description: This object represents a category selected for an item, this selection is made by the user in Connect under the form Item > 'Secondary'.
          properties:
            id:
              type: string
              example: "15876"
              description: "Identifier assigned to item category in Connect at time of creation."
            name:
              type: string
              example: Food
              description: "Category Name from Connect"
            level:
              type: number
              example: 1
              description: The category level in the category hierarchy.
        CartItemMenuGroup:
          title: Cart Item Group
          type: object
          description: Used to sort the item in the menu.
          properties:
            name:
              type: string
              example: Beverage
              description: User readable grouping name.
            description:
              type: string
              example: Shared group for Beverage
              description: User readable grouping description.
            rules:
              type: array
              items:
                $ref: '#/components/schemas/CartItemGroup_rules'
        CartItemGroup:
          title: Cart Item Group
          type: object
          description: "Documentation Forthcoming"
          properties:
            name:
              type: string
              example: Beverage
              description: User readable grouping.
            rules:
              $ref: '#/components/schemas/CartItemGroup_rules'
            items:
              type: array
              items:
                $ref: '#/components/schemas/CartItem'
        CartItemModifier:
          title: Cart Item Modifier
          type: object
          description: Item that can be added to the main item as a modifier
          properties:
            id:
              type: string
              example: "34254"
              description: "Id from Connect"
            cost:
              type: number
              example: 1.59
              description: "Cost from Connect"
            quantity:
              type: number
              example: 2
              description: "Quantity from Connect"
            name:
              type: string
              example: Pickle
              description: "Modifier name from Connect"
            sku:
              type: string
              example: 3452-7468-3457
              description: "SKU from Connect"
          required:
            - id
            - cost
            - quantity
            - name
        CartItemModifiersItem:
          title: Cart Item Modifiers Item
          type: object
          properties:
            <uuid>:
              type: array
              example: 'asdf9-iuai8d-fas83-asnfia9'
              description: 'UUID matches a uuid of a map node. The object is the same of a cart item'
              items:
                $ref: '#/components/schemas/SellableItem'
        CartItemGroup_rules:
          title: Cart Item Group Rules
          type: object
          properties:
            required:
              type: number
              example: 0
              description: boolean true false represented by integer.
            maximum:
              type: number
              example: 3
              description: max item limit for group.
        CartDiscount_external_reference:
          title: Cart Discount External Reference
          type: object
          description: "Reference to an external system"
          properties:
            name:
              example: "HAPPY-HOUR"
              description: "The external system's name"
              type: string
            id:
              example: 451
              description: "The external system's id. This is an appetize field."
              type: string
            value:
              example: 10
              description: "The value in which the external discount overwrote the value of the discount. This is an internal field."
              type: number
        CartDiscount_reduction_computation:
          title: Cart Discount Reduction Computation
          type: object
          description: "Describes how the discount was calculated."
          properties:
            value:
              type: number
              example: -15
              description: "Value taken off the price of an item."
            method:
              type: string
              example: FINAL_COST
              description: "How the value taken off the price of an item. FINAL_COST, PERCENT and SUBTOTAL are the current values. For internal reference."
        CartLine:
          title: Calculated Cart Sum entry
          type: object
          description: "A single client-supplied expectation of what the subtotal of the cart should be.  Review Cart.Subtotal for the definition of subtotal.  The overall expected cart's subtotal can be broken into individual entries for readability and descriptions."
          properties:
            title:
              type: string
              description: "Client-specified name for this entry.  This is a custom string value that is not validated."
              example: "expected full cart subtotal"
            type:
              type: string
              description: "Client-specified type for this entry.  This is a custom string value that is not validated"
              example: "subtotal"
            value:
              type: number
              description: "A portion or complete value of the expected cart subtotal."
              example: 49.99
        CheckoutRounding:
          title: Rounding
          description: Used to add rounding instructions
          type: object
          properties:
            amount:
              type: number
              description: "Is the difference between the cart total and the final amount with the right rounding precision added to it. For example, if you cart total is $1.50 and your precision is 1 (round to the next dollar), your amount should be 0.50"
              example: 0.79
            is_round_up_for_charity:
              type: boolean
              description: "Defines if rounding for charity."
            hash:
              type: string
              description: "Encrypted rounding congiguration. Hash could be retrivied from vendors endpoint. See GET vendors endpoint for hash information."
              example: "464f876b9a8990d2c067e9144f8eff6b08ea9e0f4bfb9d4fc9599c43ea289e7b.eyJjcmVhdGVUaW1lIjoxNjIyMjM2NzI0LCJ0dGwiOjAsImRhdGEiOiJ7XCJ0eXBlXCI6XCJST1VORF9VUF9GT1JfQ0hBUklUWV9ET05BVElPTlwiLFwicHJlY2lzaW9uXCI6XCIxXCIsXCJhbGxvd2VkUGF5bWVudFR5cGVzXCI6W1wiQUxMXCJdfSJ9"
        Check:
          title: Check
          type: object
          description: Used to add additional information to an order.
          properties:
            number:
              type: string
              example: "1597"
              description: |-
                Used to quickly identify a check
                - Does not have to be unique
            number_additional_text:
              type: string
              example: "Brent"
              description: |-
                Additional information to display
                > Usually is a name
            guest_count:
              type: number
              example: 3
              description: "Allows us to specify the number of guests at the table"
        RequestMalformed:
          title: Checkout Malformed
          type: object
          properties:
            Code:
              type: integer
              default: 400
            message:
              type: string
              description: "Contains the returned message from the service after an unexpected request"
              example: "malformed request syntax"
        CharityRoundingType:
          title: Charity Rounding
          type: object
          properties:
            enabled:
              type: boolean
              description: "Tells if the rounding is enabled or disabled"
              example: true
            precision:
              type: number
              description: "Rounding precision"
              example: 1.50
            allowed_payment_type:
              type: string
              description: "Describes the allowed payment.  Option is set in Connect"
              example: "ALL"
            message:
              type: string
              description: "Message to display for the type at terminal"
              example: "Some interesting message"
            title:
              type: string
              description: "Title that displays at the terminal for the type"
              example: "The title"
            hash:
              type: string
              description: "Verification hash.  Generated from Connect's signing key internally"
              example: "c455781f50cf33311e3f6e34886267e77f0e5916b65ad254143de531e58a8c9d.eyJjcmVhdGVUaW1lIjoiMTYyNTg2MDUxNyIsInR0bCI6MCwiZGF0YSI6IntcInR5cGVcIjpcIlJPVU5EX1VQX0ZPUl9DSEFSSVRZX0RPTkFUSU9OXCIsXCJwcmVjaXNpb25cIjpcIjEuMDBcIixcImFsbG93ZWRQYXltZW50VHlwZXNcIjpcIlwifSJ9"
    
        CheckoutRequest:
          title: Checkout Request
          type: object
          description: "Checkout V1 Request without modifiers"
          properties:
            send_email_receipt:
              type: boolean
              example: true
              description: "When 'true' is sent for this field, a receipt will be generated and emailed to the address passed in the Customer block"
            signed_cart:
              $ref: '#/components/schemas/SignedCart'
        CheckoutRequestWithModifiers:
          title: Checkout Request With Modifiers
          type: object
          description: "Checkout V2 Request with map node modifiers (signed_cart is not necessary if only device_order_uuid is provided)"
          properties:
            signed_cart:
              $ref: '#/components/schemas/SignedCartWithModifiers'
            payments:
              type: array
              items:
                $ref: "#/components/schemas/Payment"
              description: "A payments block for use when using stored cart functionality.  Payments can be passed in both on this field as well as SignedCart.Payments, but if this field is populated, it will be preferred over SignedCart.Payments"
            device_order_uuid:
              type: string
              format: uuid
              example: "84cd9786-2825-4fbe-94d7-0bfd37e8761e"
              description: "the device order UUID returned as part of CalculateCart's Signed Cart.  Supplying this field, along with the sibling payments block, will allow the client to skip passing in the entirety of the signed cart."
            send_email_receipt:
              type: boolean
              example: true
              description: "When 'true' is sent for this field, a receipt will be generated and emailed to the address passed in the Customer block"
        CheckoutResponse:
          title: Checkout Response
          type: object
          description: "This is the response after sending a checkout request"
          properties:
            order_id:
              type: integer
              example: 12345
              description: "This is the order id of the checkout in connect"
        Customer:
          title: Customer
          type: object
          properties:
            external_id:
              type: string
              example: patsmith
              description: Customer external identifier passed to checkout and then to connect.
            first_name:
              type: string
              example: Pat
              description: First Name
            last_name:
              type: string
              example: Smith
              description: Last Name
            email:
              type: string
              example: patsmith@example.com
              description: Email in lowercase
            address1:
              type: string
              example: 123 Happy Lane
              description: Main Address
            address2:
              type: string
              example: Apt 7
              description: Alternative Address
            city:
              type: string
              example: Darling Heights
              description: City
            postal_code:
              type: string
              example: 90163
              description: Postal Code Number
              maxLength: 5
              minLength: 5
              pattern: ([0-9]{5})
            state:
              type: string
              example: CA
              maxLength: 2
              minLength: 2
              pattern: ([A-Z]{2})
              description: State in `Postal Code` format, two letters in upper case.
            notes:
              type: string
              example: Sample notes
              description: Notes included by the customer
            phone_number:
              type: string
              description: 10 digits customer's phone number. Customers can receive order updates through text messages.
              example: 8881112233
              pattern: ([1-9][0-9]{9})
          required:
            - first_name
            - last_name
            - email
            - address1
            - state
        CustomFee:
          title: Custom Fee
          type: object
          description: |-
            Custom Fees that can be applied to a cart.
            When interacting with Custom Fees via Ordering API it is mandatory to have `Default mobile ordering account` defined in Connect and pointing to a valid Terminal account.
            If this field is not set then custom fees are not going to be applied even if `Calculate Fees` flag is enabled.
          properties:
            id:
              type: string
              description: "Fee Identifier from Connect"
            name:
              type: string
              description: "Fee Name from Connect"
            hash:
              type: string
              description: "Fee hash"
            type:
              type: integer
              description: "Type of fee. FEE_TYPE_UNASSIGNED = 0 (represent a non assigned fee); FEE_TYPE_PERCENT = 1 (will make the fee be charged as a percentage); FEE_TYPE_FLAT = 2 (will make the fee a flat amount); FEE_TYPE_CUSTOM = 3; (Accounts for a manual flat fee)"
            value:
              type: number
              description: "Fee value is a number that can represent amount or percentage based on type"
            apply_before_discount:
              type: boolean
              description: "Applies fee to net or gross"
            auto_apply:
              type: boolean
              description: "From Connect. Sets fee to be automatically applied."
            is_taxable:
              type: boolean
              description: "Value from Connect, indicating whether fee is taxable or not."
            class:
              type: string
              description: "Indicates whether this is a standard fee, a gratuity charge or something else"
            vendor_id:
              type: string
              description: "Assigned vendor id to this fee."
        DayPart:
          title: Day Part
          type: object
          description: "Day parts are time periods in which a subset of items are available that is pulled from Connect."
          properties:
            name:
              type: string
              description: "Day part name"
            id:
              type: integer
              description: "Day part identifier"
            days:
              type: array
              items:
                $ref: '#/components/schemas/DayPartDay'
        DayPartDay:
          title: Day Part Day
          type: object
          description: "The part(range of hours) of a given day when an item is available"
          properties:
            day:
              type: string
              description: "The day of the week when the items assigned to the day part will be available"
            start_time:
              type: string
              format: ISO8601
              description: "The hour of the day in which the availability period for items assigned to the day part starts"
            end_time:
              type: string
              format: ISO8601
              description: "The hour of the day in which the availability period for items assigned to the day part ends"
        DiscountsResponse:
          title: Discounts Response
          type: object
          description: "This describe the structure of the response from discounts endpoint"
          properties:
            discounts:
              type: array
              items:
                $ref: '#/components/schemas/DisplayReduction'
        DisplayReduction:
          title: Display Reduction
          type: object
          description: "Reduction object, this reduction is a minimal version of a normal reduction, coming from stored discounts created on **Discounts->discounts** in Connect WEB"
          properties:
            id:
              type: string
              description: "Internal ID for the reduction"
              example: "123"
            name:
              type: string
              description: "Reduction name"
              example: "Buy One Item, Get 1 Free"
            tags:
              type: array
              items:
                type: string
                description: "Reference Tag(s) assigned or added to the reductions"
              example:
                - "10Off"
                - "50Off"
        ExternalData:
          title: External Data
          description: External payment data, Record of a payment not run through Connect
          type: object
          properties:
            card_art_cmid:
              type: string
              example: ""
              description: Card CMID
            auth_amount:
              type: string
              example: "72.44"
              description: String representation of the auth amount
            auth_currency:
              type: string
              example: "USD"
              description: String representation of currency type
            auth_status_code:
              type: string
              example: A
              description: Auth status code
            auth_code:
              type: string
              example: NU1508
              description: Auth code
            balance:
              type: string
              example: "72.44"
              description: Account Balance
            capture_method:
              type: string
              example: SWIPED
              enum:
                - SWIPED
                - MANUAL
              description: How the credit card information was captured
            card_class:
              type: string
              example: ""
              description: Card class name
            card_status_code:
              type: string
              example: SUCCESS
              description: Card status code result
            card_token:
              type: string
              example: 4111111111111111
              description: Cart internal token
            card_type:
              type: string
              example: "CREDIT_CARD"
              description: Issuing credit company
            confirmation_code:
              type: integer
              example: 447572755357
              description: Confirmation payment code
            device_transaction_id:
              type: string
              example: "6494940015424444710 8594968817264133960"
              description: Device transaction identifier
            expiration_date:
              type: string
              example: "0204"
              description: String representation of card's expiration date
            invoice_number:
              type: string
              example: "123456789ade"
              description: Should be the same as deviceOrderId
            issuer_name:
              type: string
              example: "CHASE"
              description: Issuing bank
            masked_acc:
              type: string
              example: "1234***********9098"
              description: obfuscated card number
            payment_gateway:
              type: string
              example: "FIPAY"
              description: External patement gateway name
            payment_partner_data:
              type: object
              description: Data used and populated internally to facilitate returns for transactions using the PPI service.
              $ref: '#/components/schemas/PaymentPartnerData'
            receipt_identifier:
              type: object
              description: Not yet defined
              $ref: '#/components/schemas/ReceiptIdentifier'
            req_amount:
              type: string
              example: "50.20"
              description: Requested amount
            req_currency:
              type: string
              example: USD
              description: Requested currency
            transaction_identifier:
              type: object
              $ref: '#/components/schemas/TransactionIdentifier'
            transaction_type:
              type: string
              example: Purchase
              enum:
                - Purchase
                - Return
                - Void
                - Sale
              description: Purchase, return, void, sale etc.
            transaction_uid:
              type: string
              description: Should contain the same value as deviceTransactionId
              example: "123456783ada"
            entitlement_id:
              type: string
              example: ""
              description: Entitlement identifier
            entitlement_type:
              type: string
              example: ""
              description: Entitlement type
        GetItemResponseV1:
          title: Get item V1 Response
          type: object
          description: "This object represents a response for get item version one (v1). It contains an element of type `item`"
          properties:
            item:
              $ref: '#/components/schemas/MenuItem'
        GetItemResponseV2:
          title: Get items response V2
          type: object
          description: This object represents a response for the endpoint `GET /ordering/venues/{venue_id}/vendors/{vendor_id}/items` version two (v2). It contains an array of elements of type `item` with nested modifiers instead of simple items.
          properties:
            item:
              type: array
              items:
                $ref: '#/components/schemas/ItemV2'
        GetVenuesResponse:
          title: Get venues response
          type: object
          description: This object represents a response for the endpoint `GET /ordering/corporate/{corporate_id}/venues`. It contains an array of elements of type `venue`.
          properties:
            venues:
              type: array
              items:
                $ref: '#/components/schemas/Venue'
        Venue:
          title: Venue Object
          type: object
          description: This object represents a venue and includes its properties
          properties:
            venue_id:
              type: string
              description: Venue identifier
              example: "22"
            admin_email:
              type: string
              description: administrator email
              example: "some@email.com"
            call_number:
              type: string
              example: "1-800-55555555"
            convenience_fee:
              type: number
              description: convenience fee set up in connect for the venue
              example: 1.5
            default_vendor_id:
              type: string
              description: default vendor id set up in connect
              example: "12"
            event:
              type: string
              description: Event title
              example: "January 26th - Disney on Ice: Worlds of Enchantment - San Diego"
            fee:
              type: boolean
              description: Describes if fees are activated or not
              example: true
            fee_in_percent:
              type: boolean
              description: Describes if the fee should be applied as a percentage
              example: false
            fee_text:
              type: string
              description: Fee description
              example: Some fee description
            image_url:
              type: string
              description: Url for the the display Image
              example: "http://someurl.net/image.png"
            info:
              type: string
              example: "some info"
            info_only:
              type: boolean
              example: true
            is_drink_limit_per_event:
              type: boolean
              description: Sets an amount of drinks limit for the event
              example: true
            is_open:
              type: boolean
              description: Tells if the venue is open
              example: true
            links:
              type: string
              example: http://valleyviewcasinocenter.com
            name:
              type: string
              description: Venue name
              example: Valle View Casino
            seat_required:
              type: boolean
              example: false
            status:
              type: number
              example: 1
            text_number:
              type: string
              example: "45678"
            time_zone:
              type: string
              example: "America/Los_Angeles"
            tip_status:
              type: number
              description: Status for the tip 1-ENABLE 0-DISABLE
              enum:
                - 1
                - 0
              example: 1
            type:
              type: number
              example: 1
            alcohol_enabled:
              type: boolean
              description: Show if alcohol sells are enabled
              example: true
            disable_receipt:
              type: boolean
              description: Disable receipt print
              example: false
            email_opt_in_enabled:
              type: boolean
              example: true
            attributes:
              type: array
              items:
                $ref: '#/components/schemas/Attribute'
            custom_fields:
              type: array
              items:
                $ref: '#/components/schemas/CustomField'
        ItemV2:
          title: Items with modifiers (V2)
          type: object
          description: This object represents an item for the endpoint `GET /ordering/venues/{venue_id}/vendors/{vendor_id}/items`
          properties:
            item:
              $ref: '#/components/schemas/SellableAPIItem'
            active_price_level:
              $ref: '#/components/schemas/PriceLevel'
            subvendor_id:
              $ref: '#/components/schemas/SubVendorID'
        SubVendorID:
          title: Sub Vendor ID
          type: string
          description: List of identifiers that represents the sub-vendors assigned to a vendor (venue level). This element is created in connect under the Vendors page. Click on the `Add Sub` button that corresponds to the desired vendor. After the sub-vendor creation, it can be assigned to an existing item under the page Items > Items > Assigned Vendor. If this value is not set in connect the value "0" is returned.
          example: "5"
        LevelsMalformed:
          title: Checkout Levels Malformed
          properties:
            error:
              type: string
              description: "Documentation Forthcoming"
        MenuDayPart:
          title: Menu Day Part
          type: object
          description: "MenuDayPart schema describes the elements of the Menu V1 endpoint response"
          properties:
            daypart_id:
              type: string
              description: "Unique identifier in Connect of the vendor day part"
            daypart_name:
              type: string
              description: "Name of the vendor day part"
              example: "Monday mornings"
            days:
              type: array
              description: "Array of days and time frame of the days included in the day part"
              items:
                $ref: '#/components/schemas/DayPartDay'
            items:
              type: array
              description: "Array of all the items available for the vendor in plain item instructure"
              items:
                $ref: '#/components/schemas/MenuItem'
        MenuDayPartV2:
          title: Menu Day Part
          type: object
          properties:
            daypart_id:
              type: string
              description: "Unique identifier in Connect of the vendor day part"
              example: "123"
            daypart_name:
              type: string
              description: "Name of the vendor day part"
              example: "Monday mornings"
            days:
              type: array
              description: "Array of days and time frame of the days included in the day part"
              items:
                $ref: '#/components/schemas/DayPartDay'
            items:
              type: array
              description: "Array of all the items available for the vendor in node map structure"
              items:
                $ref: '#/components/schemas/ItemV2'
        MenuItem:
          title: Menu Item
          required:
            - add_price_override
            - alcohol
            - cost
            - daypart_ids
            - default
            - description
            - id
            - image_url
            - name
            - original_bundle_cost
            - original_cost
            - sku
            - status
            - tare_weight
            - type
            - unit_cost
            - weight_item
          type: object
          properties:
            id:
              type: string
              description: "Unique identifier of the item in Connect"
              example: "123"
            name:
              type: string
              description: "Original name of the item. Does not support i18n"
              example: "Gouda Beef Burger"
            description:
              type: string
              description: "Short description of the item. Connect configurable"
              example: "200gr of beef wrapped in gouda in home made burger buns"
            status:
              type: string
              enum:
                - UNASIGNED
                - INACTIVE
                - ACTIVE
                - DELETED
              description: "Describes the current status of the item. Can be configured in Connect.<br/> Possible values:
    
                - UNASIGNED: The item is not assigned. Can't  be displayed or interacted with
    
                - INACTIVE: The item may be available for display but cannot be interacted with
    
                - ACTIVE: Can be seen and interacted with
    
                - DELETED: The item has been deleted (soft) from Connect. Can be interacted to set it active or inactive"
            type:
              type: string
              enum:
                - FOOD
                - DRINK
                - MIXER
                - MIXER_BUILT
                - MERCH
                - BUNDLE
                - PARKING
                - TICKET
                - GIFT_CARD
                - SHIPPING
                - INTANGIBLE_MERCHANDISE
                - OTHER
              description: "Describes the mayor category the ite belongs to. Can be configured in Connect.<br/> Possible values:
    
                - FOOD: Edibles
      
                - DRINK: Beverages. Alcoholic beverages also have **alcohol** property set to TRUE
      
                - MIXER: Custom made drinks
      
                - MIXER_BUILT: Pre-made mixer drinks
      
                - MERCH: Any kind of merchandise like T-Shirts, mugs, etc.
      
                - BUNDLE: A package of two items (food and beverage)
      
                - PARKING: Parking pass items
      
                - TICKET: Event tickets
      
                - GIFT_CARD: Venue gift cards
      
                - SHIPPING: Shipping fees or services
      
                - INTANGIBLE_MERCHANDISE: Digital merchandise and alikes
      
                - OTHER: Items that don't belong to any of the previous categories"
            cost:
              type: number
              description: "Item total cost. Can be modified by quantities, taxes, or discounts."
              example: 3.14
            unit_cost:
              type: number
              description: "The price of a single unit of the item."
              example: 1
            original_cost:
              type: number
              description: "The original cost of the item, before any type of discounts or extra charges have been added."
              example: 0.5
            original_bundle_cost:
              type: number
              description: "The original cost of the bundle, before any discount or extra charges have been added."
              example: 1.13
            tare_weight:
              type: number
              description: "Net weight of the item."
              example: 1.166
            alcohol:
              type: boolean
              description: "Flag that indicates if a beverage is alcoholic or not."
              example: true
            weight_item:
              type: boolean
              description: "Flag that indicates if the item weight has to be measured for charging."
              example: false
            default:
              type: boolean
              description: "Indicates if the item is preselected."
              example: true
            calories:
              type: number
              description: "The number of calories an item has."
              example: 1.166
            sku:
              type: string
              description: "SKU number of the item."
            daypart_ids:
              type: array
              items:
                type: string
                description: "Array containing the unique identifiers in Connect of the day parts this item is assigned to"
              example:
                - "10"
                - "25"
            modifiers:
              type: array
              description: "Array containing available modifiers for the item"
              items:
                $ref: '#/components/schemas/Modifier'
            wizard_steps:
              type: array
              description: "Array containing the steps required to build or prepare this item. It may or may not include modifiers"
              items:
                $ref: '#/components/schemas/WizardStep'
            taxes:
              type: array
              description: "Array containing the tax rates that apply to the item"
              items:
                $ref: '#/components/schemas/MenuItemTax'
            categories:
              type: array
              description: "Custom report categories for the item. Can be configured in Connect Report Category"
              items:
                $ref: '#/components/schemas/CartItemCategory'
            image:
              type: string
              description: "Contains the server location (url) of the item image"
              example: "http://uploads.dev.ent.appetize-dev.com/images/thumb_239_1600969890.png"
            calories_label:
              type: string
              description: "the item unit or portion in which the calories are expressed. Package, portion, etc."
              example: "calories"
            item_attributes:
              type: array
              description: "Array including a additional attributes of the item. The attributes are special traits or considerations the item requires, like disclaimers or warnings."
              items:
                $ref: '#/components/schemas/ItemAttribute'
            allow_sold_out_sales:
              type: boolean
              description: "Flag that indicates is an item can still be sold after its inventory has ben exhausted"
              example: true
            images:
              type: array
              description: "Array containing the server location (url) of the item images"
              items:
                $ref: '#/components/schemas/ItemImage'
            item_max_quantity:
              type: string
              description: "Indicates the maximum quantity of an item"
              example: "10"
            min_qty_per_transaction:
              type: number
              description: "Indicates the minimum quantity per item"
              example: 1
            display_name:
              type: string
              description: "The name of the item to be displayed. Can be configured in Connect"
              example: "Cheeseburger"
            interact_display_name:
              type: string
              description: "The name of the item to be displayed in Interact. Can be configured in Connect"
              example: "Cheeseburger IW"
            sold_out:
              type: boolean
              description: "Flag that indicates if the inventory of an item has been exhausted"
              example: false
            show_description:
              type: boolean
              description: "Flag that indicates if UI should display the description property"
              example: true
            sort_order:
              type: string
              description: "Number indicating the sort order. Smaller numbers have higher priority. <br> If two objects have the same priority, then they are sorted alphabetically. <br> Every item with sort order defined has higher priority than those who don't have it."
              example: "1"
            featured:
              type: boolean
              description: "Flag that indicates if an item must be displayed in the featured section of the UI"
              example: true
            subvendor_id:
              type: number
              description: "Unique identifier in Connect of the subvendor serving the item"
              example: 22
            item_restrictions:
              type: array
              description: "Documentation Forthcoming"
              items:
                $ref: '#/components/schemas/ItemRestriction'
            custom_fields:
              type: array
              description: "Documentation Forthcoming"
              items:
                $ref: '#/components/schemas/ItemCustomField'
            pos_category_ids:
              type: array
              description: "Array containing unique POS categories identifiers. POS categories are a mechanism to allow unlimited nested categorization of items. Can be configured in Connect"
              items:
                type: string
              example:
                - "10"
                - "25"
            upsell_items:
              type: array
              description: "List of upsell items.  An upsell item is an extra item that gets offered as a suggestion when selling a product.  They are set in connect."
              items:
                $ref: '#/components/schemas/UpsellItem'
          example:
            id: "12691"
            name: Cheeseburger
            description: Salty blue cheese, sweet onions, and juicy beef are a classic
              and addictive combination.
            status: ACTIVE
            type: FOOD
            cost: 8.44
            unit_cost: 0
            original_cost: 8.55
            original_bundle_cost: 5.44
            tare_weight: 2.34
            alcohol: false
            weight_item: false
            default: false
            calories: 560.44
            sku: "58889309657"
            image: "test.jpg"
            daypart_ids:
              - "10"
              - "25"
            modifiers:
              - id: 123
                name: Mustard
                display_name: Lots of Mustard
                description: Yellow mustard
                status: ACTIVE
                sku: abc123
                modifier_id: 5335
                image_url: mustard.jpg
            wizard_steps:
              - id: "123"
                title: Wizard Steps
                description: Would you like to modify your burger?
                index: 0
                multiple_choice: true
                is_required: true
                enabled_min_max_modifiers: true
                cross_threshold: true
                additional_modifier_charge: 0.99
                min_modifiers: 2
                max_modifiers: 6
                modifiers:
                  - id: "123"
                    name: Mustard
                    display_name: Lots of Mustard
                    description: Yellow mustard
                    status: ACTIVE
                    sku: abc123
                    modifier_id: "5335"
                    image_url: mustard.jpg
            taxes:
              - id: "123"
                order: 0
                is_active: true
                is_geo_tax: false
                type: TAX_TYPE_EXCLUSIVE
                value_type: TAX_VALUE_TYPE_PERCENTAGE
                threshold_logic: THRESHOLD_LOGIC_UNASSIGNED
                rate: 9.89
                price_threshold:
                  amount: 10.23
                name: My Tax Rate
                code: ""
            categories:
              - id: "15876"
                name: "Category Food"
                level: "The category level in the category hierarchy"
            item_attributes:
              - id: "21"
                name: "mexican"
                description: "mexican food"
                sort_order: 0
                display_name: "mexican"
                display_description: "mexican food"
                attribute_image_icon: ""
            images:
              - image_full_res: "http://uploads.dev.ent.appetize-dev.com/images/full_res_239_1600969890.png"
                image: "http://uploads.dev.ent.appetize-dev.com/images/thumb_239_1600969890.png"
            item_restrictions:
              - type: "restriction type"
                name: "restriction name"
                value: 5
            custom_fields:
              - id: "field id"
                value: "field value"
                key: "field key"
                name: "field name"
            calories_label: "calories"
            allow_sold_out_sales: true
            item_max_quantity: "2"
            display_name: "Cheeseburger"
            interact_display_name: "Cheeseburger IW"
            sold_out: true
            show_description: true
            sort_order: "1"
            featured: false
            subvendor_id: 22
            pos_category_ids:
              - "10"
              - "25"
            upsell_items:
              - id: "1023"
              - id: "25364"
        ItemAttribute:
          title: Item Attribute
          type: object
          description: The different attributes associated to an item. This is set up in Connect and helps determine where and how a given item can be used, as well as which functionality is or is not applicable to it.
          properties:
            id:
              type: string
              description: "Identifier given to item upon creation in Connect"
            name:
              type: string
              description: "Name made upon creation of item. Updatable, non-unique"
            description:
              type: string
              description: "Short description of the attribute. Updatable, non-unique"
            sort_order:
              type: number
              description: "Number indicating the sort order. Smaller numbers have higher priority. <br> If two objects have the same priority, then they are sorted alphabetically. Every item with sort order defined has higher priority than those who don't have it."
            display_name:
              type: string
              description: "Name of the attribute to be displayed in UI. When not set, the *name* property is used."
            display_description:
              type: string
              description: "Description of the attribute to be displayed in UI. When not set, the *description* property is used."
            attribute_image_icon:
              type: string
              description: "The server location (URL) of the attribute icon image."
          example:
            id: "21"
            name: "mexican"
            description: "mexican food"
            sort_order: 0
            display_name: "mexican"
            display_description: "mexican food"
            attribute_image_icon: ""
        ItemImage:
          title: Item Image
          type: object
          description: "An object containing the server location (URL) of the item images"
          properties:
            image_full_res:
              type: string
              description: "Contains a link to the full resolution image of the item"
            image:
              type: string
              description: "Contains a link to a lower quality image of the item"
          example:
            image_full_res: "http://uploads.dev.ent.appetize-dev.com/images/full_res_239_1600969890.png"
            image: "http://uploads.dev.ent.appetize-dev.com/images/thumb_239_1600969890.png"
        ItemRestriction:
          title: Item Restriction
          type: object
          description: "Sale restrictions that may apply over an item"
          properties:
            type:
              type: string
              description: "The type of the restriction. Indicates how should be used.<br/> Possible values:
              - AGE: An age restriction for the purchase of an item.
              - EXTERNAL: Any other type of restriction that's required"
            name:
              type: string
              description: "Name of the restriction. To be displayed in UI"
            value:
              type: number
              description: "When the restriction is of type *AGE* this field represents the age limit for the restriction to apply. It has no use in other types of restrictions."
          example:
            type: "restriction type"
            name: "restriction name"
            value: 5
        ItemCustomField:
          title: Item Custom Field
          type: object
          description: "Custom fields are any extra property a user needs to add to an item. Used for customization and improving of reporting and other uses."
          properties:
            id:
              type: string
              description: "The unique identifier in Connect of the custom field"
            value:
              type: string
              description: "The actual value of the property"
            key:
              type: string
              description: "The key used to locate the property internally"
            name:
              type: string
              description: "A name for the field. Can be used for reporting and display purposes"
          example:
            id: "field id"
            value: "field value"
            key: "field key"
            name: "field name"
        MenuNotFound:
          title: Menu Not Found
          description: "Documentation Forthcoming"
        MenuResponse:
          title: Menu Response
          type: object
          description: "Documentation Forthcoming"
          properties:
            menu:
              type: array
              description: "Documentation Forthcoming"
              items:
                $ref: '#/components/schemas/MenuDayPart'
        MenuV2Response:
          title: Menu V2 response
          description: "This describe the structure of the response from the Menu V2 endpoint"
          type: object
          properties:
            menu:
              type: array
              items:
                $ref: '#/components/schemas/MenuDayPartV2'
        UpsellItem:
          title: Upsell Item
          type: object
          description: This object represents an upsell item; an extra item that gets optionally offered to entice the client when a main product is sold.
          properties:
            id:
              type: string
              example: "15876"
              description: "Identifier assigned to upsell item.  Set in connect."
        TipResponse:
          title: Tip
          type: object
          description: "Documentation Forthcoming"
          properties:
            message:
              type: string
              description: "Documentation Forthcoming"
              example: "Payment processed"
        LevelsResponse:
          title: Levels Response
          type: object
          description: "Levels array"
          properties:
            levels:
              type: array
              items:
                $ref: '#/components/schemas/Level'
        Level:
          title: Level
          type: object
          description: "Level basic information"
          properties:
            id:
              type: string
              description: "Level internal identifier"
              example: "4"
            name:
              type: string
              description: "Level name"
              example: "Legends 100 server"
        LevelNotFound:
          title: Level Not Found
          description: "Documentation Forthcoming"
        PaymentPartnerData:
          properties:
            provider:
              type: string
              description: string name of the used partner
            credential:
              $ref: '#/components/schemas/Credential'
              description: Contains the basic credentials that will be applied
            payment_data:
              type: string
              description: a is the string just as it comes out of the payment in the generic payment response
            transaction_uid:
              type: string
              description: Should contain the same value as deviceTransactionId
              example: "123456783ada"
        ReceiptIdentifier:
          properties:
            authorization_code:
              type: string
              description: Not yet defined
              example: "110024"
        SeatsResponse:
          title: Seats Response
          type: object
          description: "Returns all seats assigned to a venue's level."
          properties:
            sections:
              type: array
              items:
                $ref: '#/components/schemas/Section'
        Section:
          title: Section
          type: object
          description: "Sections consist of an internally generated id and a human readable descriptive name. The hierarchy under which sections exist is as follows: Levels -> Sections"
          properties:
            id:
              type: string
              description: "Documentation Forthcoming"
              example: "4"
            name:
              type: string
              description: "Documentation Forthcoming"
              example: "section A"
            rows:
              type: array
              description: "Documentation Forthcoming"
              items:
                $ref: '#/components/schemas/Row'
        TransactionIdentifier:
          properties:
            local_request_id:
              type: string
              description: to be defined
              example: "576408"
            remote_request_id:
              type: string
              description: Unique identifier generated remotely by the Payment.  Processor Gateway for this transaction (may be null if it never reached the Gateway)
              example: "ID:6592079941720216"
            merchant_reference_code:
              type: string
              description: to be defined
              example: "6695c4ee4b040ff045743ed37"
            authorization_code:
              type: string
              description: to be defined
              example: "197408"
            original_transaction_type:
              type: string
              description: to be defined
              enum:
                - "SALE"
                - "VOID"
                - "REFUND"
                - "AUTHORIZE"
                - "ADJUSTMENT"
                - "CAPTURE"
              example: "CAPTURE"
            expiration_date:
              type: string
              description: to be defined
              example: "1223"
            current_total_amount:
              type: number
              description: to be defined
              example: "22.5"
            account_token:
              type: string
              description: to be defined
        Row:
          title: Row
          type: object
          description: "Rows consist of an internally generated id and a human readable descriptive name. The name can be modified using Appetize's Connect dashboard. The hierarchy under which rows exist is as follows: Levels -> Sections -> Rows"
          properties:
            id:
              type: string
              description: "Documentation Forthcoming"
              example: "4"
            name:
              type: string
              description: "Documentation Forthcoming"
              example: "row 12"
            seats:
              type: array
              description: "Documentation Forthcoming"
              items:
                $ref: '#/components/schemas/Seat'
        Seat:
          title: Seat
          type: object
          description: "Seats consist of an internally generated id and a human readable descriptive name. The name can be modified using Appetize's Connect dashboard. The hierarchy under which seats exist is as follows: Levels -> Sections -> Rows -> Seats"
          properties:
            id:
              type: string
              description: "Documentation Forthcoming"
              example: "4"
            name:
              type: string
              description: "Documentation Forthcoming"
              example: "seat 1"
        Modifier:
          title: Modifier
          type: object
          description: "Modifiers are other items that can be included to change or enhance an item. They can be configured in Connect."
          properties:
            id:
              type: string
              description: "Unique identifier of the modifier-item association. Changes every time the item is assigned to an item"
              example: "456"
            name:
              type: string
              description: "Original name of the item. Does not support i18n"
              example: "Onion rings small"
            description:
              type: string
              description: "Short description of the item. Connect configurable"
              example: "3 onion rings with sauce of your choice"
            display_name:
              type: string
              description: "The name of the item in displays. When not configured, the **name** property will be used."
            status:
              type: string
              enum:
                - UNASIGNED
                - INACTIVE
                - ACTIVE
                - DELETED
              description: "Describes the current status of the item. Can be configured in Connect.<br/> Possible values:
    
                - UNASIGNED: The item is not assigned. Can't  be displayed or interacted with
    
                - INACTIVE: The item may be avilable for display but cannot be interacted with
    
                - ACTIVE: Can be seen and interacted with
    
                - DELETED: The item has been deleted (soft) from Connect. Can be interacted to set it active or inactive"
            sku:
              type: string
              description: "SKU number of the item"
            modifier_id:
              type: string
              description: "Unique identifier in Connect of the modifier item"
            cost:
              type: number
              description: "Total cost of the modifier"
          example:
            id: "123"
            name: Mustard
            display_name: Lots of Mustard
            description: Yellow mustard
            status: ACTIVE
            sku: abc123
            modifier_id: "5335"
            cost: 12.99
        OpenHour:
          title: Open Hour
          type: object
          description: "Defines the range of time for which the vendor is open."
          properties:
            day:
              type: integer
              description: "UNASSIGNED = 0; MONDAY = 1; TUESDAY = 2; WEDNESDAY = 3; THURSDAY = 4; FRIDAY = 5; SATURDAY = 6; SUNDAY = 7;"
            start_time:
              type: integer
              description: "Amount of seconds since midnight that represent the open time.  This value, for its nature, is not time zoned"
            end_time:
              type: integer
              description: "Amount of second since midnight that represent the closing time.  This value, for its nature, is not time zoned"
        OrderType:
          title: Order Type
          type: object
          description: "User defined field that describes an order type.  This is set inside connect"
          properties:
            id:
              type: string
              description: "Internally generated order type identifier"
            name:
              type: string
              description: "Contains the name of the order type associated to the previous ID field.  The name gets set in connect under the order types section and the id is internally associated when created"
        Payment:
          title: Payment
          required:
            - amount
            - authorization_code
            - card_encoded
            - card_number
            - card_status
            - card_type
            - cardholder_fullname
            - cardholder_name
            - code_map
            - encryption_type
            - exp_date
            - fee
            - payment_index
            - payment_status
            - payment_type
            - payment_valid
            - refunded
            - remaining_balance
            - subpayment_type
            - subtotal_amount
            - tax
            - tip
          type: object
          description: Object containing all the information to be added as payment to an order.
          properties:
            amount:
              type: number
              format: double
              example: 83.74
              description: Payment amount.
            authorization_code:
              type: string
              example: "A10123"
              description: Issuer authorization reference code for CC payments (Response).
            card_encoded:
              type: boolean
              example: true
              description: Indicates whether the card number is encoded.
            cardholder_fullname:
              type: string
              format: ISO7813
              example: "Test Card 12       UAT USA"
              description: Extended name. Used when length > 26 chars using ISO7813, usually from EMV tag 5F20.
            cardholder_name:
              type: string
              example: "Test Card"
              format: ISO7813
              description: Short name in ISO7813 format, parsed from track data or EMV tag 9F0B.
            card_number:
              type: string
              example: 374245XXXXX1006
              description: |-
                Card Number always is masked, some examples:
                - 374245XXXXX1006
                - 374245000001006
            card_status:
              type: string
              example: Active
              description: |-
                Likely a gift card field returned from status query, some examples:
                - Active
                - Inactive
                > This value depends on issuer.
            card_type:
              type: string
              enum:
                - VISA
                - MASTERCARD
                - DISCOVER
                - AMEX
              example: VISA
              description: Card issuer name.
            code_map:
              type: integer
              example: 22
              description: Code maps are the core of how CBORD works, They are configurable on Connect - Settings - Integrations - CBORD page.
            custom_tender_id:
              type: string
              example: "1234"
              description: |-
                The ID of the custom tender used to make the purchase.
                To use a custom tender as payment, you must include the custom tender ID and ensure you're using payment type 12.
                You can also use the additional_data field to indicate the invoice number for the payment.
            encryption_type:
              type: string
              enum:
                - cp
                - cnp
                - p2pe
                - onguard
                - applepay
                - nfc
                - nfc_unencrypted
                - emv
              example: cp
              description: |-
                This describes both encryption type AND entry mode.
                ```
                ENCRYPTION_TYPE_CARD_PRESENT = "cp"; //swiped with unencrypted swiper, encrypted with Appetize Key
                ENCRYPTION_TYPE_CARD_NOT_PRESENT = "cnp"; //manually entered, encrypted with Appetize Key
                ENCRYPTION_TYPE_P2PE = "p2pe"; //P2P injected reader, swiped. Likely encrypted with BridgePay Key
                ENCRYPTION_TYPE_ON_GUARD = "onguard"; //Ingenico Encryption,
                ENCRYPTION_TYPE_APPLE_PAY = "applepay"; //Should deprecate. Mobile payment using ACS NFC reader, denoting ApplePay, could be GPay..
                ENCRYPTION_TYPE_NFC = "nfc"; //Ingenico contactless tap (MSD) using onGuard encryption
                ENCRYPTION_TYPE_NFC_UNENCRYPTED = "nfc_unencrypted"; // Non-CC ACS NFC reader, i.e.Fortress?
                ENCRYPTION_TYPE_EMV = "emv"; //Ingenico chip inserted using onGuard encryption
                ```
            exp_date:
              type: string
              format: MM/YY
              example: 09/23
              description: Credit card expiration date.
            external_data:
              $ref: "#/components/schemas/ExternalData"
            fee:
              type: number
              format: double
              example: 35.53
              description: Fee amount.
            gateway_response_data:
              type: string
              example: "{\"customResponseData\":\"Some custom response here\"}"
              description: |-
                BLOB containing all the data received from indirect integration
            payment_index:
              type: integer
              example: 0
              description: Position in JSON payments array
            payment_status:
              type: string
              enum:
                - COMPLETED
                - REFUNDED
                - FAILED
                - DECLINED
                - AWAITING PAYMENT
                - OFFLINE
              example: COMPLETED
              description: current status of the payment.
            payment_type:
              type: integer
              example: 1
              description: |
                Describes the link to a value in the paymentType Block in Store or Vendor
                ```
                SERVER_PAYMENT_TYPE_UNDEFINED = -1;
                SERVER_PAYMENT_TYPE_SPLIT_INT = 0;
                SERVER_PAYMENT_TYPE_CREDIT_INT = 1;
                SERVER_PAYMENT_TYPE_CASH_INT = 2;
                SERVER_PAYMENT_TYPE_GIVEX_INT = 3;
                SERVER_PAYMENT_TYPE_PARTIAL_INT = 4;
                SERVER_PAYMENT_TYPE_HOUSE_INT = 5;
                SERVER_PAYMENT_TYPE_BEACON_INT = 6;
                SERVER_PAYMENT_TYPE_APPLEPAY_INT = 7;
                SERVER_PAYMENT_TYPE_WRISTBAND_INT = 8;
                SERVER_PAYMENT_TYPE_SUBMIT_WITH_NO_PAYMENT_INT = 9;
                SERVER_PAYMENT_TYPE_STORED_VALUE_INT = 11;
                SERVER_PAYMENT_TYPE_SKIDATA_DIRECT_INT = 14;
                SERVER_PAYMENT_TYPE_LOADED_VALUE_INT = 15;
                SERVER_PAYMENT_TYPE_TIN_CAPS_INT = 16;
                SERVER_PAYMENT_TYPE_FOLIO_INT = Integer.valueOf(SERVER_PAYMENT_TYPE_FOLIO);
                SERVER_PAYMENT_TYPE_DINING_PLAN_INT = Integer.valueOf(SERVER_PAYMENT_TYPE_DINING);
                SERVER_PAYMENT_TYPE_FIPAY_GIFT_MERCH_CREDIT_INT = 23;
            payment_valid:
              type: boolean
              example: true
              description: abstract implementation -> payment_status != null && !payment.status.equals(PAYMENT_STATUS_ERROR_FATAL)
            payment_uuid:
              type: string
              format: uuid
              example: e54f5e96-0139-4fca-80b9-ef7ec6d03f1b
              description: Unique Identifier for this payment.
            refunded:
              type: boolean
              example: true
              description: On order lookup we return all payments. This fields denotes whether or not this payment in the payments array has already been refunded.
            remaining_balance:
              type: number
              format: double
              example: 8.21
              description: Remaining Balance of gift card after payment. Typically Gift Cards can be from Debit Gift Cards but not always.
            subpayment_type:
              type: integer
              example: 1
              description: |
                Describes the secondary properties of primary payment type (conceptual example -> CreditCard.Elavon, GiftCard.SkiData, where Elavon and SkiData are the subpayment type)
                ```
                SERVER_SUBPAYMENT_TYPE_UNDEFINED = -1;
                SERVER_SUBPAYMENT_TYPE_BRAINTREE = 3;
                SERVER_SUBPAYMENT_TYPE_SPREEDLY = 4;
                SERVER_SUBPAYMENT_TYPE_FORTRESS = 5;
                SERVER_SUBPAYMENT_TYPE_GIVEX = 7; // DSI-346 Is this correct?
                SERVER_SUBPAYMENT_TYPE_FREEWAY = 8;
                SERVER_SUBPAYMENT_TYPE_SKIDATA_POINTS = 9;
                SERVER_SUBPAYMENT_TYPE_SKIDATA_CASH = 10;
                SERVER_SUBPAYMENT_TYPE_STADIS = 12;
                SERVER_SUBPAYMENT_TYPE_SKIDATA_DIRECT = 13;
                SERVER_SUBPAYMENT_TYPE_SKIDATA_LOADED_VALUE = 14;
                SERVER_SUBPAYMENT_TYPE_MONERIS = 11;
                SERVER_SUBPAYMENT_TYPE_CBORD = 16;
                SERVER_SUBPAYMENT_TYPE_EIGEN = 17;
                SERVER_SUBPAYMENT_TYPE_FIPAY = 20;
                SERVER_SUBPAYMENT_TYPE_LEVEL_UP = 26;
                SERVER_SUBPAYMENT_TYPE_FOLIO = 24;
                SERVER_SUBPAYMENT_TYPE_DINING = 24;
                SERVER_SUBPAYMENT_TYPE_DVIC = 20;
                SERVER_SUBPAYMENT_TYPE_VALUTEC = 29;
                SERVER_SUBPAYMENT_TYPE_VANTIV = 39;
                SERVER_SUBPAYMENT_TYPE_FREEWAY_SDK = 32;
                SERVER_SUBPAYMENT_TYPE_ELAVON_SDK = 36;
                ```
            subtotal_amount:
              type: number
              format: double
              example: 34.02
              description: Subtotal amount is without tax, tip, fee, etc.
            tax:
              type: number
              format: double
              example: 2.17
              description: Amount of payment allocated to tax.
            tender_name:
              type: string
              enum:
                - Cash
                - Coupon Code
                - Others
              example: Cash
              description: Tender Type or Paymnet Method.
            tip:
              type: number
              format: double
              example: 2.17
              description: Amount of payment allocated to tip.
            payment_identifier_for_display:
              type: string
              example: 1234
            token_value:
              type: string
              example: bce451618c93a32e69e7a774504d994c
            ppi_loyalty_id:
              type: string
              example: 4125454
              description: Loyalty ID used to access PPI discounts.
            ppi_pin:
              type: string
              example: 789
              description: Secret PIN for PPI discounts
            additional_data:
              type: string
              example: "INV-124679"
              description: When doing checkout with a custom tender, the **additional_data** property can be used to send an invoice number related to this order for that custom tender.
            change:
              type: number
              format: double
              example: 4.5
              description: Amount to be returned to the customer when paying with *cash*.
            amount_tendered:
              type: number
              format: double
              example: 4.5
              description: Amount given by the customer when paying with *cash*.
        PaymentType:
          title: Payment Type
          type: object
          description: |
            title: Payment types
            table:
            | Payment ID | Subpayment ID| Name         |
            |------------|--------------|--------------|
            |0|0| Split Payment|
            |1|0| Credit Card  |
            |2|0| Paid in cash |
            |3|0|On loaded ticket (old Givex payment type)|
            |4|0|Partial Payment|
            |5|0| On House|
            |6|0| Beacon|
            |7|0| ApplePay|
            |8|0| Wristband|
            |9|0| Submit With no Payment|
            |10|0| Credit Chip|
            |11|5|Stored value - Fortress|
            |11|6|Stored value - Blackboard|
            |11|7|Stored value - Givex|
            |11|8|Stored value - Freeway Gift Card|
            |11|9|Stored value - Skidata points/member benefits|
            |11|10|Stored value - Skidata cash/loyalty|
            |11|12|Stored value - Stadis|
            |11|15|Streamline|
            |11|16|Stored value - CBORD|
            |11|23|Stored value - Lava|
            |11|29|Stored Value - Valutec Giftcards|
            |11|30|Stored value - The Customer Connection (TCC)|
            |11|33|Stored Value - Freeway Stored Value|
            |11|39|Stored Value - Vantiv Giftcard|
            |11|40|Atrium|
            |11|41|Atrium Debit|
            |11|42|Atrium Meal|
            |11|44|Freeway External Value|
            |11|46|Custom PPI Integration|
            |11|47|Paytronix|
            |12|0|Custom tender|
            |13|0|Paypal|
            |14|0|Skidata Direct Payment|
            |14|13|Skidata Direct Payment in Enterprise|
            |15|0|Skidata Loaded Value|
            |15|14|Skidata Loaded Value in Enterprise|
            |16|0|Streamline aka Tin Caps Loaded value (Classic checkout only)|
            |18|20|Prepaid Cards - Disney Rewards|
            |19|0|Folio Charge|
            |20|0|Lava|
            |21|0|Alvarado (Loaded Value)|
            |22|  |Tokenized Payment|
            |22|22|Freeway (Tokenized Payment)|
            |22|45|Elavon (Tokenized Payment)|
            |23|20|Store Credit|
            |24|27|Online Order|
            |25| |Dining Plan|
            |26|20|Virtual Card (Disney Visa Instant Credit)|
            |30|35|Punchh|
            |31|34|Skidata Enterprise Payments (Type 3 integration)|
    
    
    
    
          properties:
            id:
              type: string
              description: "Payment type identifier"
            name:
              type: string
              description: "Name describing the payment type"
            subpayment_type_id:
              type: string
              description: "Subpayment type for the payment"
            button_text:
              type: string
              description: "User facing name of the payment"
        SignedCart:
          title: Signed Cart
          type: object
          description: Contains the result of a calculate request, and adds a signature of the content with expiration date.
          additionalProperties: false
          properties:
            cart:
              $ref: '#/components/schemas/CartResponse'
            sig:
              type: string
              description: The signature is displayed in base64 format, HMAC and SHA256 are used to generate it.
              example: acP2yuwKrZDutFzVk2N5-QfaihQTVSyHaEeX6kT-aF4
            exp:
              type: string
              description: The expiration date in timestamp format is considered part of the signature, this value cannot be changed.
              example: "1619037777"
          required:
            - cart
            - sig
            - exp
        SignedCartWithModifiersWrapper:
          title: Signed Cart With Modifiers Wrapper
          type: object
          description: This schema exists cause of protobuf internal definition in order to wrap a cart with modifiers.
          properties:
            cart_with_modifier_items:
              $ref: '#/components/schemas/CartWithModifiersResponse'
        SignedCartWithModifiers:
          title: Signed Cart With Modifiers
          type: object
          description: "A validated cart that contains items that may have root map nodes"
          additionalProperties: false
          properties:
            cart:
              $ref: '#/components/schemas/SignedCartWithModifiersWrapper'
            sig:
              type: string
              description: The signature is displayed in base64 format, HMAC and SHA256 are used to generate it.
              example: acP2yuwKrZDutFzVk2N5-QfaihQTVSyHaEeX6kT-aF4
            exp:
              type: string
              description: The expiration date in timestamp format is considered part of the signature, this value cannot be changed.
              example: "1619037777"
          required:
            - cart
        StoreNotFound:
          title: Store Not Found
          type: string
          description: "This error will be returned when the store used to make a request is not found"
          example: 404 page not found
        StoreUser:
          title: Defines the active user
          properties:
            id:
              type: integer
              description: "User ID"
            email:
              type: string
              description: "user email"
        MenuItemTax:
          title: Menu Item Tax
          description: This object holds the information of the different tax rates that are assigned to an item. Tax can be added individually or by tax group. They can be assigned to the item or to a vendor through the vendor role.
          type: object
          properties:
            id:
              type: string
              description: "Unique identifier of the tax rate in Connect"
            order:
              type: integer
              description: "Order in which the tax rates should be sorted. "
            is_active:
              type: boolean
              description: "Flag that indicates if a tax rate is active and can be applied"
            is_geo_tax:
              type: boolean
              description: "Flag that indicates if the tax rate is a geotax. GeoTax is a an inclusive tax type that allows users to apply an inclusive tax rate to a defined geo-fence."
            type:
              type: string
              enum:
                - INCLUSIVE
                - EXCLUSIVE
              description: "The type of the tax rate. Type directly influences how a tax rate is charged.<br/> Possible values:
    
              - EXCLUSIVE: Tax rates explicitly added to an item. They are calculated over the item cost and always modify the order total.
    
              - INCLUSIVE: Tax rates implicitly added to an item. They are included in the item cost and never modify the order total"
            value_type:
              type: string
              enum:
                - PERCENTAGE
                - FLAT
                - TABLE
              description: "The type in which the tax rate value is expressed.<br/> Possible values:
    
              - PERCENTAGE: The amount representes a percentage of the item cost
    
              - FLAT: The amount represents a flat, invariable amount
    
              - TABLE: The amount represents a specific value of a given tax table."
            threshold_logic:
              type: string
              enum:
                - NOT SET
                - FULL
              description: "When enabled, the tax will be applied to the item only if the cart fullfils the threshold logic.<br/> Possible values:
    
              - NOT SET: No threshold is configured. The logic cannot be applied
    
              - FULL: When the price of the item is greater or equal than the threshold value, the threshold logic will apply."
            rate:
              type: number
              description: "The amount of the tax to be applied. It could represent a percentual or flat amount"
            price_threshold:
              $ref: '#/components/schemas/TaxPriceThreshold'
            name:
              type: string
              description: "The name of the tax rate. It can be configured in Connect"
            code:
              type: string
              description: "A configurable code for the tax rate. Is empty by default. Can be configured in Connect."
            generated_id:
              type: number
              description: "Documentation Forthcoming"
          example:
            id: "123"
            order: 0
            is_active: true
            is_geo_tax: false
            type: TAX_TYPE_EXCLUSIVE
            value_type: TAX_VALUE_TYPE_PERCENTAGE
            threshold_logic: THRESHOLD_LOGIC_UNASSIGNED
            rate: 9.89
            price_threshold:
              amount: 10.23
            name: My Tax Rate
            code: ""
            generated_id: 23
        VendorRole:
          title: Vendor Role
          type: object
          description: "Documentation Forthcoming"
          properties:
            taxes_on_total:
              type: boolean
              description: "When true, the vendor's assigned taxes are applied to the subtotal; when false, each individual item's assigned taxes are calculated for each respective item"
            taxes_on_fees:
              type: boolean
              description: "True for taxable fees"
          example:
            taxes_on_total: true
            taxes_on_fees: false
        VendorIntegrationPermission:
          title: Vendor Integration Permission
          type: object
          description: "Documentation Forthcoming"
          properties:
            integration_template_id:
              type: integer
              description: "Documentation Forthcoming"
            status:
              type: integer
              description: "Documentation Forthcoming"
          example:
            integration_template_id: 123
            status: 1
        VendorTax:
          properties:
            id:
              description: "Internal id for the vendor tax.  Gets created when the vendor tax is created in Connect"
              type: string
              example: 1234789
            order:
              description: "Defines the order in which the tax is applied"
              type: integer
              example: 1
            is_active:
              description: "Defines if the tax is applied or not.  A true value indicates that it is being applied"
              type: boolean
              example: 1
            is_geo_tax:
              type: boolean
              description: "It tells if a location should be used to activate the tax.  Uses specially formatted json location file at tax creation"
            type:
              $ref: '#/components/schemas/VendorTaxType'
            value_type:
              $ref: '#/components/schemas/VendorTaxValueType'
            threshold_logic:
              $ref: '#/components/schemas/VendorTaxThresholdLogic'
            rate:
              description: "Basis for the tax.  If it's ValueType Flat, and Rate is 2, it means $2 flat tax.  If it's Percent, it'd be a 2% tax"
              type: number
              example: 2
            price_threshold:
              type: object
              description: "Item or order subtotal value that when reached will have the tax applied in its entirety. If tax is triggered at a 20 dollar threshold because value is 36 dollars, taxable amount is 36 and not 16 or 20"
              properties:
                amount:
                  type: number
                  example: 20
            name:
              type: string
              description: "Name assigned for the tax in connect"
              example: "10% inclusive"
            code:
              type: string
              description: "Two digit code that get printed in the receipt.  It is defined by the user in the tax creation process"
              example: 34
            generated_id:
              type: integer
        VendorTaxThresholdLogic:
          type: integer
          description: " Determines at what point to apply the tax.  See price threshhold for further explanation (OAPI doesn't handle this right now) THRESHOLD_LOGIC_UNASSIGNED = 0; THRESHOLD_LOGIC_FULL = 1; THRESHOLD_LOGIC_ABOVE = 2; THRESHOLD_LOGIC_BELOW = 3;"
          enum: [ 0,1,2,3 ]
        VendorTaxType:
          type: integer
          description: "Predefined tax value to determine if the tax is inclusive or exclusive. Inclusive tax is already accounted in the items prices, exclusive does not. TAX_TYPE_UNASSIGNED = 0; TAX_TYPE_INCLUSIVE = 1; TAX_TYPE_EXCLUSIVE = 2"
          enum: [ 0,1,2 ]
          example: 2
        VendorTaxValueType:
          type: integer
          description: "Defines if the tax is a flat, percentile or table tax.  If it is a table tax, it gets determined by subsets of value ranges for the sale amount(low end value and high end value setup in connect when creating the tax) TAX_VALUE_TYPE_UNASSIGNED = 0; TAX_VALUE_TYPE_PERCENTAGE = 1; TAX_VALUE_TYPE_FLAT = 2; TAX_VALUE_TYPE_TABLE = 3;"
          enum: [ 0,1,2,3 ]
          example: 1
        POSCategory:
          type: object
          properties:
            id:
              type: string
              description: "Internal system id associated to the category"
              example: "12345678"
            display_name:
              type: string
              description: "Associated name for the category.  Get assigned at creation time"
              example: "pos number 1"
            level:
              description: "POS categories can be nested.  This value defines their depth level.  LEVEL_UNSPECIFIED = 0; LEVEL_ONE = 1; LEVEL_TWO = 2; LEVEL_THREE = 3;"
              enum: [ 0,1,2,3 ]
            parent_category_id:
              description: "In case of nested categories, a child category will include here the id of the immediate parent category id"
              type: string
            sort_order:
              type: integer
              description: "Defines the order in which the category gets displayed"
              example: 2
            sales_channel:
              type: string
              description: "Field used to filter sales.  It is usually POS or KIOSK"
            image:
              $ref: '#/components/schemas/Image'
            image_icon:
              type: string
              description: "Defines the icon path.  Normally a .png file"
              example: http://uploads.dev.ent.appetize-dev.com/receipt-images/thumb_239_1600969890.png
        Image:
          title: Image
          type: object
          description: "Contains the url paths for an image"
          properties:
            image_full_res:
              type: string
              description: "Path for the full resolution image"
            image:
              type: string
              description: "Path for the commonly used image"
          example:
            image_full_res: "http://uploads.dev.ent.appetize-dev.com/receipt-images/239_1600969637.jpg"
            image: "http://uploads.dev.ent.appetize-dev.com/receipt-images/thumb_239_1600969637.jpg"
        ActiveUser:
          title: Active User
          type: object
          description: "Documentation Forthcoming"
          properties:
            id:
              type: string
              description: "Documentation Forthcoming"
            email:
              type: string
              description: "Documentation Forthcoming"
          example:
            id: "5028988"
            email: "active.user@appetize.com"
        Taxes:
          title: Taxes
          required:
            - active
            - generated_id
            - id
            - price_threshold
            - tax_name
            - tax_rate
            - tax_type
            - tax_value
            - value_type
          type: object
          description: Taxes applied to a set of items.
          properties:
            id:
              type: integer
              example: 16546
              description: ID of tax type
            generated_id:
              type: integer
              example: 1234
              description: ID of this Instance of the tax
            uid:
              type: string
              format: uuid
              description: "Unique service generated UUID"
              example: "4dc0f47e-5beb-457a-9ec9-32a8f4aefc10"
            active:
              type: boolean
              example: true
              description: whether this tax is currently active
            value_type:
              type: string
              enum:
                - PERCENT
                - FLAT
                - TABLE
              example: PERCENT
              description: The method of tax application
            price_threshold:
              type: number
              example: 20
              description: Item or order subtotal value that when reached will have the tax applied in its entirety. If tax is triggered at a 20 dollar threshold because value is 36 dollars, taxable amount is 36 and not 16 or 20
            threshold_logic:
              type: string
              example: FULL
              enum:
                - FULL
                - UNDER
                - BELOW
              description: Logic used to apply threshold.
            tax_name:
              type: string
              example: Il State Tax
              description: Readable name of tax for printing
            tax_rate:
              type: number
              example: 5.0
              description: Percentage of tax rate.
            tax_code:
              type: string
              example: NT
              description: Code used to identify internaly this Tax.
            tax_type:
              type: string
              enum:
                - INCLUSIVE
                - EXCLUSIVE
              example: INCLUSIVE
              description: Exclusive is what you see in tax totals. Inclusive is embedded tax in the item which the customer doesn't see directly.
            tax_value:
              type: number
              example: 0.87
              description: The calculated value.
        TaxPriceThreshold:
          title: Tax Price Threshold
          type: object
          description: "This object defines the amount the item has to cost in order for the threshold logic to apply"
          properties:
            amount:
              type: number
              description: "A number representing the price the item must surpass for the threshold logic to apply"
          example:
            amount: 12.35
        TaxRuleSet:
          title: Tax Rule Set
          type: object
          description: "Rules on tax application"
          properties:
            is_charged_after_discount:
              type: boolean
              description: "Charge the tax after applying the discount"
            is_tax_on_fee:
              type: boolean
              description: "Determines if fee is taxed"
            is_tax_on_tip:
              type: boolean
              description: "Determines if tip is taxed"
            is_tax_on_total:
              type: boolean
              description: "Determines if tax is applied to total amount"
        UnprocessableEntity:
          title: Unprocessable Entity
          properties:
            Code:
              type: integer
              default: 422
            message:
              example: "At least one product does not belong to vendor or has incorrect price."
              type: string
              description: Response due to an error in the format of the request body, such as a string sent as a number.
        Content-Type:
          type: string
        CartUserRequest:
          $ref: '#/components/schemas/CartUser'
        CartUser:
          title: Cart User
          type: object
          description: User properties that can be used in an order, such as discount codes.
          properties:
            discounts:
              $ref: '#/components/schemas/UserDefinedDiscounts'
        UserDefinedDiscount:
          title: User Defined Discount
          required:
            - discount_type
          type: object
          description: Discounts that the user can use on an order, a type is required and the barcode can be optional.
          additionalProperties: false
          properties:
            discount_type:
              type: string
              description: This will match an internal reference tag set up in Discounts.
              example: vacation-club
            barcode:
              type: string
              description: Used as an external identifier for discount validations.
              example: 97801-45678-5678-6
        UserDefinedDiscounts:
          title: User Defined Discounts
          type: array
          description: List of user defined discounts
          nullable: true
          items:
            $ref: '#/components/schemas/UserDefinedDiscount'
        Vendor:
          title: Vendor
          type: object
          description: "Vendor general information"
          properties:
            id:
              type: string
              description: "Vendor identifier"
            name:
              type: string
              description: "Vendor Name"
            additional_info:
              type: string
              description: "This maps to the 'Additional Info' field for the vendor role. It is used by Interact Web and other 3rd party applications to display vendor information"
            alcohol_rule_set:
              description: "Establishes alcohol sales restrictions"
              $ref: '#/components/schemas/AlcoholRuleSet'
            alcohol_enabled:
              type: boolean
              description: "Allows the sale of alcoholic products for the selected vendor"
            bundle_count:
              type: integer
              description: "Documentation Forthcoming"
            hours_of_operation_enabled:
              type: boolean
              description: "Lets the end user know if the vendor is open or closed"
            custom_fees:
              type: array
              description: "Available set of custom fees"
              items:
                $ref: '#/components/schemas/CustomFee'
            open_hours:
              type: array
              description: "This ties to the 'hours of operation' field up above. Return an object containing the configured hours of operation for the vendor when set.<br/>
                            If not set, returns an empty array. Hours of operation are what it sounds like - the hours during the day that the vendor is open for orders. It is used to indicate whether the vendor is open or closed, instead of the vendor status of open / closed"
              items:
                $ref: '#/components/schemas/OpenHour'
            order_capacity:
              type: integer
              description: "Documentation Forthcoming"
            is_pickup_order:
              type: boolean
              description: "Defines if orders can be picked up at the vendor. In connect you can find it under mobile ordering option under the fiel Pickup Vendor"
            pickup_location:
              type: string
              description: "Usually the location of the vendor/subvendor"
            tax_rule_set:
              $ref: '#/components/schemas/TaxRuleSet'
              description: "Documentation Forthcoming"
            tip_enabled:
              type: boolean
              description: "Indicates if a tip can be charged"
            venue_id:
              type: string
              description: "Identifier for the venue that contains the current vendor"
            open:
              type: boolean
              description: "Indicates if the vendor is open"
            dayparts:
              type: array
              description: "Set of dayparts for the vendor"
              items:
                $ref: '#/components/schemas/DayPart'
            payment_types:
              type: array
              description: "Vendor's available payment types"
              items:
                $ref: '#/components/schemas/PaymentType'
            order_types:
              type: array
              description: "Returns all of the order types configured for the vendor, these are user configured values but typically are things like 'For Here' and 'To Go' or 'Delivery'"
              items:
                $ref: '#/components/schemas/OrderType'
            vendor_role:
              $ref: '#/components/schemas/VendorRole'
            vendor_taxes:
              type: array
              items:
                $ref: '#/components/schemas/VendorTax'
            external_id:
              type: string
              description: "A field for clients to write the IDs of the items in their own systems. So if they have like an inventory system of their own, they can 'link' the information."
            multi_level_modifiers:
              type: boolean
              description: "Specifies if the vendor is using new modifiers, which is a multi level/nested schema of modifiers. Nested modifiers are items composed by other items of the product catalog instead of standalone entities (edited)"
            pos_categories:
              type: array
              items:
                $ref: '#/components/schemas/POSCategory'
            terminal_id:
              type: string
              description: "The account id of the account that is setup for the 'default mobile ordering account' inside the vendor - this is used by IW and others to communicate with other internal systems and to grab terminal role information for this vendor"
            time_zone:
              type: string
              description: "Vendor's time zone"
              example: "America/Los_Angeles"
            vendor_integration_permissions:
              type: array
              items:
                $ref: '#/components/schemas/VendorIntegrationPermission'
            seat_confirmation_enabled:
              type: boolean
              description: "Indicates if the vendor requires the customer to confirm their selected seat before ordering"
            image_url:
              type: string
              description: "URL of the vendor's configured image"
            display_name:
              type: string
              description: "Display namefor the vendor"
              example: "3554 World of Disney"
            active_user:
              description: "Contains basic user information based on the userID."
              $ref: '#/components/schemas/StoreUser'
            scan_to_add_to_cart:
              type: boolean
              description: "Enables or disables Scan & Go functionality in Interact Web based on Scan to Add to Cart Flag in Connect under Vendor Role - Mobile Ordering Transactions"
            pickup_time_selection_enabled:
              type: boolean
              description: "Indicates if Order Ahead is enabled for this vendor"
            pickup_times:
              description: "A list of avaibale pick up times for the vendor. Then only pickup times that are later than current time + configured prep time will be considered valid"
              type: array
              items:
                type: string
                description: Represents Order Ahead available Time Slots in ISO8601 format
                example: 2006-01-02T15:04:05-07:00
            charity_rounding_types:
              description: "Includes rounding details for charity rounding types only"
              type: array
              items:
                $ref: '#/components/schemas/CharityRoundingType'
            custom_fields:
              type: array
              items:
                $ref: '#/components/schemas/CustomField'
            hide_menu:
              type: boolean
              description: "Enables or disables hide menu in Interact Web based on Hide Menu in Connect under Vendor Role - Mobile Ordering Transactions. Scan to Add to Cart must be enabled in order 
              to have access to this toggle"
            seat_required:
              type: boolean
              description: "Indicates if the seat is required for a mobile ordering in a venue with Interact Web. This is in Connect under Settings - Mobile Ordering"
        VendorsResponse:
          title: Vendors Response
          type: object
          description: "Documentation Forthcoming"
          properties:
            vendors:
              type: array
              description: "Documentation Forthcoming"
              items:
                $ref: '#/components/schemas/Vendor'
        CustomField:
          title: Custom field
          type: object
          properties:
            id:
              type: string
              description: id for the field
              example: "22"
            key:
              type: string
              example: "some key"
            name:
              type: string
              example: "some name"
            value:
              type: string
              example: "some value"
            type:
              type: string
              example: "some type"
            attributes:
              type: string
              example: '{"foo":"bar"}'
            reference_id:
              type: string
              example: "123456789"
        WizardStep:
          title: Wizard Step
          type: object
          description: "In Connect, a wizard is a series of well defined steps to prepare an item. A wizard step is any given step of that series"
          properties:
            id:
              type: string
              description: "Unique identifier in Connect of the current wizard step"
            title:
              type: string
              description: "Title or name of the current wizard step"
            index:
              type: integer
              description: "Position in which this step should be blaced in the whole wizard process"
            multiple_choice:
              type: boolean
              description: "Flag that indicates if the current wizard step allows the selection of multiple modifiers"
            is_required:
              type: boolean
              description: "Flag that indicates if the current wizard step is required to order the item it belongs to"
            enabled_max_min_modifiers:
              type: boolean
              description: "Flag that indicates if the current wizard step has minimum and maximum bounds for the number of modifiers that can be assigned"
            cross_threshold:
              type: boolean
              description: "Flag that indicates if the threshold of modifiers can be crossed in the current wizard step"
            additional_modifier_charge:
              type: number
              description: "How much will be charged for any modifier beyond the max"
            min_modifiers:
              type: integer
              description: "Minimum number of modifiers that can be assigned in the current wizard step"
            max_modifiers:
              type: integer
              description: "Maximum number of modifiers that can be assigned in the current wizard step"
            modififers:
              type: array
              description: "Modifiers to be considered for a given wizard step."
              items:
                $ref: '#/components/schemas/Modifier'
          example:
            id: "123"
            title: Would you like to modify your burger?
            index: 0
            multiple_choice: true
            is_required: true
            enabled_min_max_modifiers: true
            cross_threshold: true
            additional_modifier_charge: 0.99
            min_modifiers: 2
            max_modifiers: 6
            modifiers:
              - id: "123"
                name: Mustard
                display_name: Lots of Mustard
                description: Yellow mustard
                status: ACTIVE
                sku: abc123
                modifier_id: "5335"
                image_url: mustard.jpg
        RootMapNode:
          title: Root Map Node
          type: object
          description: When working with composed modifiers, the root map node represents the main item to which modifiers will be associated. ***Only available in v2.***
          properties:
            id:
              $ref: '#/components/schemas/BsonID'
              description: "Unique internal Product Catalog identifier of the object"
              example: "4dc0f47e-5beb-457a-9ec9-32a8f4aefc10"
            template_id:
              $ref: '#/components/schemas/BsonID'
              description: "Unique internal Product Catalog identifier of the template map node being used as root map node"
              example: "4dc0f47e-5beb-457a-9ec9-32a8f4aefc11"
            item_id:
              $ref: '#/components/schemas/ItemID'
              description: "Unique internal Connect identifier of the item being used as root map node"
              example: 12345
            tags:
              type: array
              description: "Searchable tags. "
              items:
                type: string
                description: "A string describing a tag used to search root map nodes when using Product Catalog service"
              example: [ "food", "spicy" ]
            sort_order:
              type: integer
              description: "Number indicating the sort order. Smaller numbers have higher priority. <br> If two objects have the same priority, then they are sorted alphabetically. <br> Every item with sort order defined has higher priority than those who don't have it."
              example: 1
            map_nodes:
              type: array
              description: "Array of other items related to the main (root) item as modifiers."
              items:
                $ref: '#/components/schemas/MapNode'
            map_groups:
              type: array
              description: "A named group of additional MapNodes and/or MapGroups. "
              items:
                $ref: '#/components/schemas/MapGroup'
            item_updated:
              description: deprecated and this field will be removed in the future.
              $ref: '#/components/schemas/EpochTime'
            updated:
              description: this field represents the actual modification time for the root map node
              $ref: '#/components/schemas/EpochTime'
            uuid:
              type: string
              format: uuid.v4
              description: "Unique service generated UUID v4."
              example: "4dc0f47e-5beb-457a-9ec9-32a8f4aefc10"
            unique_id:
              type: string
              description: "Product Catalog internal ID for the item"
              example: ""
            external_id:
              type: string
              description: "Unique 3rd party identifier for an item. Used to keep item data consistent across Appetize and client systems."
              example: "12345"
            status:
              type: string
              description: this field represents the current status of the root map node RMN, it shows if the RMN is active or deleted (soft deleted)
              example: ACTIVE
              enum:
                - ACTIVE
                - DELETED
        MapNode:
          title: Map Node
          type: object
          description: "A map node is any item marked as **modifier** in Connect and that is currently associated to another item as modifier through a **map group**"
          properties:
            template_id:
              $ref: '#/components/schemas/BsonID'
              description: "Unique internal Product Catalog identifier of the template map node being used as root map node"
              example: "4dc0f47e-5beb-457a-9ec9-32a8f4aefc11"
            item_id:
              $ref: '#/components/schemas/ItemID'
              description: "Unique internal Connect identifier of the item being used as root map node"
              example: "12345"
            tags:
              type: array
              description: "Searchable tags. "
              items:
                type: string
                description: "A string describing a tag used to search map nodes"
              example: [ "food", "spicy" ]
            uuid:
              type: string
              format: uuid.v4
              description: 'a service generated UUID v4, intended for use by Activate'
              example: "5ea0342f-fab3-447a-92e8-ed29055a6312"
            unique_id:
              type: string
              description: "Product Catalog internal ID for the item"
              example: ""
            external_id:
              type: string
              description: "Unique 3rd party identifier for an item. Used to keep item data consistent across Appetize and client systems."
              example: "552589"
            map_nodes:
              type: array
              description: "Array of items that are currently associated to this item as modifiers through a **map group**"
              example: [ ]
            map_groups:
              type: array
              description: "Array of named / purposed groups of additional MapNodes and/or MapGroups"
              items:
                $ref: '#/components/schemas/MapGroupNested'
            item_updated:
              $ref: '#/components/schemas/EpochTime'
        MapNodeNested:
          title: Map Node
          type: object
          description: "A map node is any item marked as **modifier** in Connect and that is currently associated to another item as modifier through a **map group**"
          properties:
            template_id:
              $ref: '#/components/schemas/BsonID'
              description: "Unique internal Product Catalog identifier of the template map node being used as root map node"
              example: "4dc0f47e-5beb-457a-9ec9-32a8f4aefc11"
            item_id:
              $ref: '#/components/schemas/ItemID'
              description: "Unique internal Connect identifier of the item being used as root map node"
              example: "12345"
            tags:
              type: array
              description: "Searchable tags. "
              items:
                type: string
                description: "A string describing a tag used to search map nodes"
              example: [ "food", "spicy" ]
            uuid:
              type: string
              format: uuid.v4
              description: 'a service generated UUID v4, intended for use by Activate'
              example: "5ea0342f-fab3-447a-92e8-ed29055a6312"
            unique_id:
              type: string
              description: "Product Catalog internal ID for the item"
              example: ""
            external_id:
              type: string
              description: "Unique 3rd party identifier for an item. Used to keep item data consistent across Appetize and client systems."
              example: "552589"
            map_nodes:
              type: array
              description: "Array of items that are currently associated to this item as modifiers through a **map group**"
              example: [ ]
            map_groups:
              type: array
              description: "Array of named / purposed groups of additional MapNodes and/or MapGroups"
            item_updated:
              $ref: '#/components/schemas/EpochTime'
        MapGroup:
          title: Map Group
          type: object
          description: "A named group of additional MapNodes and/or MapGroups."
          properties:
            name:
              type: string
              example: "Accesories"
              description: 'name for use in CoreAPI or Connect UI'
            tags:
              type: array
              description: "A string describing a tag used to search map nodes "
              items:
                type: string
              example: [ "connect-ui" ]
            sort_order:
              type: integer
              description: "Number indicating the sort order. Smaller numbers have higher priority. <br> If two objects have the same priority, then they are sorted alphabetically. <br> Every item with sort order defined has higher priority than those who don't have it."
              example: 1
            type:
              $ref: '#/components/schemas/MapGroupType'
              description: "Type of the map group. References Map Group Type"
            rules:
              $ref: '#/components/schemas/GroupRules'
              description: "Rules for the map group. References Group Rules"
            map_groups:
              type: array
              description: "Array of named / purposed groups of additional MapNodes and/or MapGroups"
            map_nodes:
              type: array
              description: "Array of items that are currently associated to this item as modifiers through a **map group**"
              items:
                $ref: '#/components/schemas/MapNodeNested'
              example: [ ]
            uuid:
              type: string
              format: uuid.v4
              description: 'a service generated UUID v4, intended for use by Activate'
              example: "3487829f-8a89-4ea8-9585-9e37d72e9091"
            template_id:
              $ref: '#/components/schemas/BsonID'
              description: "Unique internal Product Catalog identifier of the template map node being used as root map node"
              example: "4dc0f47e-5beb-457a-9ec9-32a8f4aefc11"
            unique_id:
              type: string
              description: "Product Catalog internal ID for the item"
              example: ""
            external_id:
              type: string
              description: "Unique 3rd party identifier for an item. Used to keep item data consistent across Appetize and client systems."
              example: "12345"
            display_name:
              $ref: '#/components/schemas/MultiText'
              description: 'localized name'
            interact_display_name:
              $ref: '#/components/schemas/MultiText'
              description: 'localized name for Interact Web'
            sales_channels:
              type: array
              description: Sales channels associated with this ItemSet/MapGroup.  If omitted, defaults to ALL
              items:
                $ref: '#/components/schemas/SalesChannel'
        MapGroupNested:
          title: Map Group
          type: object
          description: "A named group of additional MapNodes and/or MapGroups."
          properties:
            name:
              type: string
              example: "Accesories"
              description: 'name for use in CoreAPI or Connect UI'
            tags:
              type: array
              description: "A string describing a tag used to search map nodes "
              items:
                type: string
              example: [ "connect-ui" ]
            sort_order:
              type: integer
              description: "Number indicating the sort order. Smaller numbers have higher priority. <br> If two objects have the same priority, then they are sorted alphabetically. <br> Every item with sort order defined has higher priority than those who don't have it."
              example: 1 
            type:
              $ref: '#/components/schemas/MapGroupType'
              description: "Type of the map group. References Map Group Type"
            rules:
              $ref: '#/components/schemas/GroupRules'
              description: "Rules for the map group. References Group Rules"
            map_nodes:
              type: array
              description: "Array of items that are currently associated to this item as modifiers through a **map group**"
              example: [ ]
            map_groups:
              type: array
              description: "Array of named / purposed groups of additional MapNodes and/or MapGroups"
            uuid:
              type: string
              format: uuid.v4
              description: 'a service generated UUID v4, intended for use by Activate'
              example: "3487829f-8a89-4ea8-9585-9e37d72e9091"
            template_id:
              $ref: '#/components/schemas/BsonID'
              description: "Unique internal Product Catalog identifier of the template map node being used as root map node"
              example: "4dc0f47e-5beb-457a-9ec9-32a8f4aefc11"
            unique_id:
              type: string
              description: "Product Catalog internal ID for the item"
              example: ""
            external_id:
              type: string
              description: "Unique 3rd party identifier for an item. Used to keep item data consistent across Appetize and client systems."
              example: "12345"
            display_name:
              $ref: '#/components/schemas/MultiText'
              description: 'localized name'
            interact_display_name:
              $ref: '#/components/schemas/MultiText'
              description: 'localized name for Interact Web'
            sales_channels:
              type: array
              description: Sales channels associated with this ItemSet/MapGroup.  If omitted, defaults to ALL
              items:
                $ref: '#/components/schemas/SalesChannel'
        MapGroupType:
          title: Map Group Type
          type: string
          description: "Describes the type a map group can have.
    
          - Set: Group of modifiers planned for use in an item/modifier (can only contain Modifiers)
    
          - Category: *Deprecated*
    
          - Instruction: Group of instructions available for selection with an item/modifier (can only contain Instructions)
    
          - Additional: Group of modifiers that can optionally be added to an item/modifier (can only contain Modifiers)"
          enum:
            - GROUP_SET
            - GROUP_CATEGORY
            - GROUP_INSTRUCTION
            - GROUP_ADDITIONAL
        EpochTime:
          title: Epoch Time
          type: string
          description: epoch time in milliseconds.
          example: "1585164084"
        SalesChannel:
          title: Sales Channel
          default: ALL
          type: string
          description: "Sales channel where an item is available to purchase. <br/> Possible values:
    
          - All: Available in all channel
    
          - POS: Point of sales
    
          - Kiosk: Interact Kios
    
          - Mobile: Phone apps"
          enum:
            - ALL
            - POS
            - KIOSK
            - MOBILE
        MultiText:
          title: Multi Text
          type: object
          description: 'localized group name data intended for use by Activate and Interact'
          example:
            en-us: A string In English
            fr: Une chaine en Francais
          additionalProperties:
            type: object
            properties:
              code:
                type: string
                example: "en_us"
              text:
                type: string
                example: "Mashed potatoes"
        GroupRules:
          title: Group Rules
          type: object
          description: "Descriptors of Product Catalog data.  They tell how the ItemSet should be displayed by the Client, and also the rules for its immediate child nodes"
          properties:
            show_description:
              $ref: '#/components/schemas/GroupRuleShowDescription'
            count:
              $ref: '#/components/schemas/GroupRuleCount'
            display_type:
              $ref: '#/components/schemas/GroupRuleDisplayType'
            default_mode:
              $ref: '#/components/schemas/GroupRuleDefaultMode'
            hidden_label:
              $ref: '#/components/schemas/GroupRuleHiddenLabel'
            fixed_item_selection:
              $ref: '#/components/schemas/GroupRuleFixedItemSelection'
            node_rules:
              type: object
              description: "Documentation Forthcoming"
              properties:
                <item_id>:
                  $ref: '#/components/schemas/MapNodeRules'
              example:
                "1378264": {
                  "count": {
                    "minimum": 1,
                    "maximum": 1
                  },
                  "default": {
                    "value": false
                  },
                  "pricing_mode": {
                    "mode": "ADD_PRICE_TO_ORDER"
                  },
                  "increases_max": {
                    "value": true
                  },
                  "exceed_max": {
                    "value": false
                  },
                  "exceed_max_price": {
                    "amount": 0
                  },
                  "appearance": {
                    "value": "VISIBLE"
                  },
                  "sort_order": {
                    "value": 0
                  }
                }
        GroupRuleShowDescription:
          title: Group Rule Show Description
          type: object
          description: "Show Description for Group; Text supports localization, text['en-us']='English Text'"
          required:
            - text
          properties:
            text:
              $ref: '#/components/schemas/MultiText'
        GroupRuleCount:
          title: Group Rule Count
          type: object
          description: "Indicates the maximum and minimum number of elements of the group that can be included with each group parent."
          properties:
            minimum:
              type: number
              description: "Lower bound"
              example: 1.0
            maximum:
              type: number
              description: "Upper bound"
              example: 1.0
        GroupRuleDisplayType:
          title: Group Rule Display Type
          type: object
          description: "
            Display type determines how Item Sets appear on Interact X (IX). By default is set to **Expanded**.<br/>Possible values are:
    
            - Expanded: Item Set and all its content appears visible when IX first displays the item details screen
    
            - Collapsed individually: Item Set and all its content appears collapsed when IX first displays the item details screen. User has to expand each item set individually by clicking the arrow button beside the item set name
    
            - Collapsed as group: All Item Sets flagged with this option at the same level will appear collapsed when IX first displays the item details screen (as one group). IX adopts the name from the item set with the lowest sort order on the UI. User has to expand all item sets as a group by clicking the arrow button beside the item set name."
          properties:
            value:
              type: string
              default: EXPANDED
              description: "One of the values described above"
              enum:
                - EXPANDED
                - COLLAPSED_INDIVIDUALLY
                - COLLAPSED_AS_GROUP
        GroupRuleDefaultMode:
          title: Group Rule Default Mode
          type: object
          description: "Default Mode indicates how Activate will display an Item Set by default.<br/>Possible values are:
    
              - Show Selections: Only display selected modifiers in the cart, receipt, etc., do not display deselected modifiers.
    
              - Show Adjustments: Only display modifiers in which there is an adjustment (deselected default, increased quantity) or if it has a price."
          properties:
            value:
              type: string
              description: "One of the strings described above."
              default: SHOW_SELECTIONS
              enum:
                - SHOW_SELECTIONS
                - SHOW_ADJUSTMENTS
        GroupRuleHiddenLabel:
          title: Group Rule Hidden Label
          type: object
          description: "Text that Interact will display inside an item set, when it contains hidden items "
          properties:
            text:
              $ref: '#/components/schemas/MultiText'
        GroupRuleFixedItemSelection:
          title: Group Rule Fixed Item Selection
          type: object
          description: "Value that describes if whether or not an item-set selection is fixed "
          properties:
            value:
              type: boolean
              example: true
        MapNodeRules:
          title: Map Node Rules
          type: object
          properties:
            pricing_mode:
              description: "Pricing mode describes how the modifier item cost should be charged"
              $ref: '#/components/schemas/NodeRulePricingMode'
            count:
              description: "Indicates the maximum and minimum number of elements of the group that can be included with each group parent."
              $ref: '#/components/schemas/NodeRuleCount'
            default:
              $ref: '#/components/schemas/NodeRuleDefault'
            increases_max:
              $ref: '#/components/schemas/NodeRuleIncreasesMax'
            exceed_max:
              $ref: '#/components/schemas/NodeRuleExceedMax'
            exceed_max_price:
              $ref: '#/components/schemas/NodeRuleExceedMaxPrice'
            appearance:
              $ref: '#/components/schemas/NodeRuleAppearance'
            sort_order:
              $ref: '#/components/schemas/NodeRuleSortOrder'
        NodeRulePricingMode:
          title: Node Rule Pricing Mode
          type: object
          description: "Describes how modifier cost should be charged.<br/>Possible values are:
    
            - Add price to order: Adds modifier cost directly to order total. Doesn't affect item cost calculation but affects cart subtotal.
    
            - Include in parent price: Modifier cost is included into parent cost. Generally does not affect subtotal.
    
            - Increase parent price: Modifier cost increases parent cost. Will affect both, item cost calculation and order subtotal."
          required:
            - mode
          properties:
            mode:
              type: string
              description: "One of the values described above"
              enum:
                - 'ADD_PRICE_TO_ORDER'
                - 'INCLUDED_IN_PARENT_PRICE'
                - 'INCREASES_PARENT_PRICE'
              example: ADD_PRICE_TO_ORDER
        NodeRuleCount:
          title: Node Rule Count
          type: object
          description: "Indicates the maximum and minimum number of elements of the group that can be included with each group parent."
          properties:
            minimum:
              type: number
              description: "Lower bound"
              example: 1
            maximum:
              type: number
              description: "Upper bound"
              example: 1
            default:
              type: number
              description: "Default count value"
              example: 1
        NodeRuleDefault:
          title: Node Rule Default
          type: object
          description: "Defines if the modifier is preselected within this item map."
          properties:
            value:
              type: boolean
              example: true
        NodeRuleIncreasesMax:
          title: Node Rule Increases Max
          type: object
          description: "Defines if the modifier counts towards the limits in the set. "
          properties:
            value:
              type: boolean
              example: true
        NodeRuleExceedMax:
          title: Node Rule Exceed Max
          type: object
          description: "Defines if the modifier can be selected to exceed the limit on the set"
          properties:
            value:
              type: boolean
              example: true
        NodeRuleExceedMaxPrice:
          title: Node Rule Exceed Max Price
          type: object
          description: "Cost that each unit of the modifier will have when beyond the max."
          properties:
            amount:
              type: number
              example: 10
        NodeRuleSortOrder:
          title: Node Rule Sort Order
          type: object
          description: "Number indicating the sort order. Smaller numbers have higher priority. <br> If two objects have the same priority, then they are sorted alphabetically. <br> Every item with sort order defined has higher priority than those who don't have it."
          properties:
            value:
              type: number
              example: 1
              description: "Number indicating the sort order"
        NodeRuleAppearance:
          title: Node Rule Appearance
          type: object
          description: "Describes the visibility of the node map.<br/>Possible values are:
    
              - Visible: The modifier shows in its regular menu placement
    
              - Hidden: The modifier is hidden from the UI
    
              - Featured: The modifier is in the featured/highlighted section of the menu"
          properties:
            value:
              type: string
              description: "One of the values described above"
              default: VISIBLE
              example: VISIBLE
              enum:
                - VISIBLE
                - HIDDEN
                - FEATURED
        AplSessionTokenRequest:
          title: APL Cloud Session Token Request
          type: object
          required:
            - terminal_id
            - amount
          properties:
            terminal_id:
              type: string
              example: "151922"
              description: Terminal ID (for which existing configuration under gateway credentials)
            amount:
              type: string
              example: "5.99"
            payment_type:
              type: string
              enum:
                - CreditCard
                - CardOnFile
                - ApplePay
                - GooglePay
                - Paypal
              example: CreditCard
            gateway:
              type: string
              example: FreedomPay
              description: Can be "Elavon, FreedomPay"
            freedom_pay_hpc:
              $ref: '#/components/schemas/FreedomPayHpc'
        FreedomPayHpc:
          type: object
          properties:
            credit_card:
              $ref: '#/components/schemas/CreditCard'
            apple_pay:
              $ref: '#/components/schemas/ApplePay'
            google_pay:
              $ref: '#/components/schemas/GooglePay'
            paypal:
              $ref: '#/components/schemas/Paypal'
        CreditCard:
          type: object
          properties:
            button_type:
              type: integer
              example: 1
              description: Can be a number between 1 and 7
            card_icon_display_type:
              type: integer
              example: 1
              description: Can be a number between 1 and 3
            card_number:
              $ref: '#/components/schemas/CreditCardSimpleCode'
            culture_code:
              type: string
              example: "en-US"
            expiration_date:
              $ref: '#/components/schemas/CreditCardCode'
            postal_code:
              $ref: '#/components/schemas/CreditCardCode'
            security_code:
              $ref: '#/components/schemas/CreditCardCode'
            styles:
              type: string
              example: ".exampleStyle{padding:10px;}#exampleStyle2{margin:5rem;}"
            validation_message_type:
              type: integer
              example: 1
              description: Can be a number between 1 and 3
            workflow_type:
              type: integer
              example: 1
              description: Can be a number between 1 and 2
        CreditCardSimpleCode:
          type: object
          properties:
            label_type:
              type: integer
              example: 1
            placeholder_type:
              type: integer
              example: 1
        CreditCardCode:
          type: object
          properties:
            label_type:
              type: integer
              example: 1
            placeholder_type:
              type: integer
              example: 1
            validation_type:
              type: integer
              example: 1
        ApplePay:
          type: object
          properties:
            button_type:
              type: integer
              example: 1
            button_color:
              type: integer
              example: 1
            styles:
              type: string
              example: ".exampleStyle{padding:10px;}#exampleStyle2{margin:5rem;}"
            response_type:
              type: integer
              example: 1
            auto_finalize_payment:
              type: boolean
              example: true
        GooglePay:
          type: object
          properties:
            button_type:
              type: integer
              example: 1
            button_color:
              type: integer
              example: 1
            billing_address:
              $ref: '#/components/schemas/BillingAddress'
            is_email_required:
              type: boolean
              example: false
            response_type:
              type: integer
              example: 1
        Paypal:
          type: object
          required:
            - invoice_number
          properties:
            currency_code:
              type: string
            intent:
              type: integer
              example: 1
            invoice_number:
              type: integer
              example: 12345
              description: "Only used by Paypal, generated by Appetize"
        BillingAddress:
          type: object
          properties:
            format:
              type: integer
              example: 1
            is_phone_number_required:
              type: integer
              example: 1
            is_required:
              type: boolean
              example: true
        AplSessionTokenResponse:
          type: object
          properties:
            session_token:
              type: string
              example: "abC0eXAiOiJKV1QiLCJhbGciOiJIU"
            timestamp:
              type: string
              example: "2019-06-26T04:47:55.196Z"
            iframe:
              type: string
              example: '<iframe frameborder="0" scrolling="no" src="https://hpc.uat.freedompay.com/api/v1.5/controls?sessionKey=eyJhbGciOiJBMjU2R0NNS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwiaXYiOiIxbDVUdkRSYTVmc0QzaW8yIiwidGFnIjoibG5SZmVVaWhFR2tHRVR4QzUyc1A3USIsInppcCI6IkRFRiJ9.zWyZFQdEtQBUjFatWox4pnWWFGSEs-dmXSftN6IDKB5DysbPhXTJftCy8gEgbQvIoBdKgGGlLYc9EbJOqRtiVA.3hzb6z0ySfe7PuRaEQ-wxQ.oeFjdim6h11jxvog2GKt91zc4uVD0YETsujjJzrZzr8LN5JhfdZIkUHOyqtiHCExQJZJSqA6dYhOsU_qzDtOpuXxOFfmKK4D2cO04YGUPIG29FF-2DV4m1f-myhA24LbMub-lHPg2oN7ENUR9d0ybgAGC8i2VKb_r6lEZgAaxuSCEkO1pKrRJ15NRZbEjuEjc5xpxTEm44tjZB-miQ0ATOG8pildmLy0vSFfsmYqeQsaWky_CRPVSF81ZXzpsr5_ogbjJxvmus3uk3nvW8uZHSxAJT1S5nFy65bCM2vEHgX8d2eykScr6F1Chv2SVeqk7yH0dDAWXDPPgIq9-i5MrxAVXjQArXabJlcdkg-hXUsEB95qgFLu3jvDpQNFOvAz_ytq7T2Wz9YcBcb8DBSJEn18AAnBuoyV6qs0yDP1Gwasl-SXu2em7E_lQqfMGCgpaOuAPH2D7ix3_TQL5oWr3OGUIqpftX0SeVV1m452n0gE6uGeA00sB4ZA6QvsPt_n.vY41IhVSzBW9x-6cq9HwP5cn6PPqj09qlAoFP48A4bY"></iframe>'
        AplPaymentRequest:
          type: object
          required:
            - session_key
          properties:
            session_key:
              type: string
              example: "eyJhbGciOiJBMjU2R0NNS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwiaXYiOiIxbDVUdkRSYTVmc0QzaW8yIiwidGFnIjoibG5SZmVVaWhFR2tHRVR4QzUyc1A3USIsInppcCI6IkRFRiJ9.zWyZFQdEtQBUjFatWox4pnWWFGSEs-dmXSftN6IDKB5DysbPhXTJftCy8gEgbQvIoBdKgGGlLYc9EbJOqRtiVA.3hzb6z0ySfe7PuRaEQ-wxQ.oeFjdim6h11jxvog2GKt91zc4uVD0YETsujjJzrZzr8LN5JhfdZIkUHOyqtiHCExQJZJSqA6dYhOsU_qzDtOpuXxOFfmKK4D2cO04YGUPIG29FF-2DV4m1f-myhA24LbMub-lHPg2oN7ENUR9d0ybgAGC8i2VKb_r6lEZgAaxuSCEkO1pKrRJ15NRZbEjuEjc5xpxTEm44tjZB-miQ0ATOG8pildmLy0vSFfsmYqeQsaWky_CRPVSF81ZXzpsr5_ogbjJxvmus3uk3nvW8uZHSxAJT1S5nFy65bCM2vEHgX8d2eykScr6F1Chv2SVeqk7yH0dDAWXDPPgIq9-i5MrxAVXjQArXabJlcdkg-hXUsEB95qgFLu3jvDpQNFOvAz_ytq7T2Wz9YcBcb8DBSJEn18AAnBuoyV6qs0yDP1Gwasl-SXu2em7E_lQqfMGCgpaOuAPH2D7ix3_TQL5oWr3OGUIqpftX0SeVV1m452n0gE6uGeA00sB4ZA6QvsPt_n.vY41IhVSzBW9x-6cq9HwP5cn6PPqj09qlAoFP48A4bY"
              description: obtained from AplSessionTokenResponse iframe
            freedom_pay:
              type: object
              required:
                - terminal_id
                - token_information
              properties:
                terminal_id:
                  type: string
                  example: "151922"
                  description: Terminal ID (for which there's a configuration under gateway credentials), required for creating PosSyncId
                payment_key:
                  type: string
                  example: "19d22def-a77e-4a60-a718-428577738864"
                  description: returned once the payment/submit button inside iframe has been clicked
                token_information:
                  $ref: '#/components/schemas/PaymentTokenInformation'
                card:
                  $ref: '#/components/schemas/PaymentCard'
                purchase_totals:
                  $ref: '#/components/schemas/PaymentPurchaseTotals'
                invoice_header:
                  $ref: '#/components/schemas/PaymentInvoiceHeader'
                ship_from:
                  $ref: '#/components/schemas/PaymentShipFrom'
                ship_to:
                  $ref: '#/components/schemas/PaymentShipTo'
                items:
                  type: array
                  items:
                    $ref: '#/components/schemas/PaymentItem'
                client_meta_data:
                  $ref: '#/components/schemas/PaymentClientMetaData'
                pos:
                  $ref: '#/components/schemas/PaymentPos'
                apple_pay:
                  $ref: '#/components/schemas/PaymentApplePay'
                token_create_service:
                  $ref: '#/components/schemas/PaymentTokenCreateService'
        PaymentTokenInformation:
          type: object
          properties:
            expiration_month:
              type: integer
              example: 01
            expiration_year:
              type: integer
              example: 2021
            token:
              type: string
              example: "abc123"
        PaymentCard:
          type: object
          properties:
            name_on_card:
              type: string
              example: "Jane Smith"
              maxLength: 35
              description: Level 2/3 data - Name of card holder
            card_type:
              type: string
              example: "credit"
              maxLength: 35
              description: Level 2/3 data - Denotes the rail in which a payment was processed i.e. debit, credit, cashless, token, stored value, Apple Pay, GooglePay
        PaymentPurchaseTotals:
          type: object
          required:
            - charge_amount
          properties:
            charge_amount:
              type: number
              example: 9.99
              description: Level 2 data - Tender amount, may be different than the actual grand total
            tax_total:
              type: number
              example: 9.99
              description: Level 2 data - Total amount of tax applied to the ticket
            discount_total:
              type: number
              example: 9.99
              description: Level 2 data - Total discounted amount from purchase
        PaymentInvoiceHeader:
          type: object
          properties:
            purchaser_code:
              type: string
              example: "abc123"
              description: Level 2 data - Customer identifier
        PaymentShipFrom:
          type: object
          properties:
            postal_code:
              type: string
              example: "12345"
              minLength: 4
              maxLength: 9
              description: Level 2 data - Postal Code of shipFrom information. Must have spaces and hyphens removed.
        PaymentShipTo:
          type: object
          properties:
            postal_code:
              type: string
              example: "12345"
              minLength: 4
              maxLength: 9
              description: Level 2 data - Postal Code of shipTo information. Must have spaces and hyphens removed.
            country:
              type: string
              example: "US"
              minLength: 2
              maxLength: 3
              description: Level 2 data - Country of shipTo information. Any ISO-3166 2- letter, 3-letter, or 3-digit code
        PaymentItem:
          type: object
          properties:
            product_sku:
              type: string
              example: "12345"
              maxLength: 30
              description: Level 3 data - SKU assigned to the product
            product_name:
              type: string
              example: "Product Name"
              maxLength: 35
              description: Level 3 data - Name of the product
            product_description:
              type: string
              example: "Product description..."
              maxLength: 40
              description: Level 3 data - Description of the product
            unit_price:
              type: number
              example: 9.99
              description: Level 3 data - Price per unit of the item
            quantity:
              type: number
              example: 1
              description: Level 3 data - Quantity of item purchased
            total_amount:
              type: number
              example: 9.99
              description: Level 3 data - Total amount of item (unit price x quantity), after discounts (use origTotalAmount and origUnitPrice if discounts are applied)
            tax_included_flag:
              type: string
              example: "N"
              description: Level 3 data - Used to determine if the tax was applied to the total amount. 'Y' if totalAmount includes taxAmount. 'N' if totalAmount does not include taxAmount. Default is 'N' if not specified.
            tax_amount:
              type: number
              example: 9.99
              description: Level 3 data - Total amount of tax applicable to the item
            unit_of_measure:
              type: string
              example: "abc"
              maxLength: 3
              description: Level 3 data - Unit of measure for the item. See FreeWay Specification for full list 'Appendix L - Unit Of Measure Table'.
            sale_code:
              type: string
              example: "S"
              description: Level 3 data - General sales code for item. 'S' for Sale. 'R' for Return. 'L' for Lease/Rental.
        PaymentClientMetaData:
          type: object
          required:
            - application_name
            - application_version
            - selling_middleware_name
          properties:
            application_name:
              type: string
              example: "InteractWeb"
              maxLength: 35
              description: Level 2/3 data - The system conducting the sale (POS, PMS, ecom website, etc)
            application_version:
              type: string
              example: "3.2.0"
              maxLength: 35
              description: Level 2/3 data - Version ID of the POS Application
            selling_middleware_name:
              type: string
              example: "HPC"
              maxLength: 35
              description: Level 2/3 data - The intermediate middleware between the POS/etc and FreedomPay's application (FCC, HPC, etc), if any.
            selling_middleware_version:
              type: string
              example: "1.4"
              maxLength: 35
              description: Level 2/3 data - The version of the middleware.
        PaymentPos:
          type: object
          properties:
            card_present:
              type: string
              example: "N"
              description: Level 2/3 data - indicates if cart is present.
            entry_mode:
              type: string
              example: "NFC"
              maxLength: 35
              description: Level 2/3 data - Denotes the way in which a payment terminal was engaged i.e. swiped, NFC.
            enc_mode:
              type: string
              example: "string"
              description: Level 2/3 data - Shows Apple Wallet and Google Wallet from in app transactions.
            msr_type:
              type: string
              example: "applepay"
              description: Level 2/3 data.
            tracke:
              type: object
              example: "{\"version\":\"EC_v1\",\"data\":\"UEQXal(...)ad4759\"}}"
              description: Level 2/3 data.
        PaymentApplePay:
          type: object
          properties:
            billing_contact:
              $ref: '#/components/schemas/PaymentApplePayBillingContact'
            shipping_contact:
              $ref: '#/components/schemas/PaymentApplePayShippingContact'
            token:
              $ref: '#/components/schemas/PaymentApplePayToken'
        PaymentApplePayBillingContact:
          type: object
          properties:
            address_lines:
              type: array
              items:
                type: string
                example: "2929 Walnut St"
            administrative_area:
              type: string
              example: "PA"
            country:
              type: string
              example: "United States"
            country_code:
              type: string
              example: "US"
            family_name:
              type: string
              example: "Pay"
            given_name:
              type: string
              example: "Freedom"
            locality:
              type: string
              example: "Philadelphia"
            phonetic_family_name:
              type: string
              example: ""
            phonetic_given_name:
              type: string
              example: ""
            postal_code:
              type: string
              example: "19104"
            sub_administrative_area:
              type: string
              example: ""
            sub_locality:
              type: string
              example: ""
        PaymentApplePayShippingContact:
          type: object
          properties:
            address_lines:
              type: array
              items:
                type: string
                example: "2929 Walnut St"
            administrative_area:
              type: string
              example: "PA"
            country:
              type: string
              example: "United States"
            country_code:
              type: string
              example: "US"
            email_address:
              type: string
              example: "freedompay@gmail.com"
            family_name:
              type: string
              example: "Pay"
            given_name:
              type: string
              example: "Freedom"
            locality:
              type: string
              example: "Philadelphia"
            phone_number:
              type: string
              example: "123456789"
            phonetic_family_name:
              type: string
              example: ""
            phonetic_given_name:
              type: string
              example: ""
            postal_code:
              type: string
              example: "19104"
            sub_administrative_area:
              type: string
              example: ""
            sub_locality:
              type: string
              example: ""
        PaymentApplePayToken:
          type: object
          properties:
            payment_data:
              type: string
            payment_method:
              type: string
            transaction_identifier:
              type: string
              example: "xxxx"
        PaymentTokenCreateService:
          type: object
          properties:
            run:
              type: boolean
              example: true
            type:
              type: integer
              format: int32
              example: "7"
        AplPaymentResponse:
          type: object
          properties:
            message:
              type: string
              example: "xxx"
        AplQueryTokenRequest:
          type: object
          required:
            - terminal_id
            - token
          properties:
            terminal_id:
              type: string
              example: "929"
            token:
              type: string
              example: "5866414822101478"
        AplQueryTokenResponse:
          type: object
          properties:
            customer:
              $ref: '#/components/schemas/QueryTokenCustomer'
            address:
              $ref: '#/components/schemas/QueryTokenAddress'
            contact:
              $ref: '#/components/schemas/QueryTokenContact'
            card_data:
              $ref: '#/components/schemas/QueryTokenCardData'
            token_info:
              $ref: '#/components/schemas/QueryTokenTokenInfo'
            transaction_info:
              $ref: '#/components/schemas/QueryTokenTransactionInfo'
        QueryTokenCustomer:
          type: object
          properties:
            customer_id:
              type: string
              example: "1234567"
            first_name:
              type: string
              example: "John"
            last_name:
              type: string
              example: "Doe"
            description:
              type: string
              example: "Some description"
        QueryTokenAddress:
          type: object
          properties:
            address:
              type: string
              example: "224 A, Golf Course Road, Gurgaon"
            address2:
              type: string
              example: "Houston, TX , KA 560043"
            zip:
              type: string
              example: "12345"
            city:
              type: string
              example: "Seattle"
            state:
              type: string
              example: "Washington"
            country:
              type: string
              example: "US"
        QueryTokenContact:
          type: object
          properties:
            company:
              type: string
              example: "Appetize"
            phone:
              type: string
              example: "123456789"
            email:
              type: string
              example: "user@example.com"
        QueryTokenCardData:
          type: object
          properties:
            exp_date:
              type: string
              example: "1122"
            card_type:
              type: string
              example: "MC"
            account_number:
              type: string
              example: "5204********1471"
        QueryTokenTokenInfo:
          type: object
          properties:
            token:
              type: string
              example: "5866414822101478"
            token_response:
              type: string
              example: "SUCCESS"
            token_provider:
              type: string
              example: "P"
            token_format:
              type: string
              example: "Universal"
        QueryTokenTransactionInfo:
          type: object
          properties:
            user_id:
              type: string
              example: "userid"
            result:
              type: string
              example: "0"
    
        # Refund schemas
        ErrorWithDetails:
          type: object
          required:
            - message
          properties:
            code:
              type: integer
              example: 500
            message:
              type: string
              example: "Internal error"
            details:
              type: string
              example: "something happened please contact administrator"
        RefundRequest:
          type: object
          required:
            - reason
          properties:
            reason:
              type: object
              required:
                - name
                - code
              properties:
                name:
                  type: string
                  example: "Wrong Product"
                code:
                  type: string
                  example: "RWP"
            active_user:
              type: object
              properties:
                id:
                  type: string
                  example: "199"
                login:
                  type: string
                  example: "jhondoe@mail.com"
        RefundedOrder:
          type: object
          properties:
            order_id:
              description: "ID generated by Connect"
              type: integer
              format: int32
              example: 38002
            device_order_id:
              description: "ID generated by client, like by AX or OAPI"
              type: string
              example: "AX00000111"
            venue_id:
              description: "Connect-assigned venue ID"
              type: integer
              example: 1371
            vendor_id:
              description: "Connect-assigned vendor ID"
              type: integer
              example: 865
            status:
              description: "Connect Status. All Orders related to refund will have the same status of completed. Showing now to prepare for potential future statuses. "
              type: string
              enum: [ COMPLETED, REFUND_PROCESSING, PARTIAL_REFUND, REFUNDED, REFUND_PROCESSED, PENDING ]
              example: "COMPLETED"
            source:
              description: "Where the order was created"
              type: string
              enum: [ activate, connect, oapi ]
              example: "oapi"
            amount:
              description: "Order amount"
              type: string
              example: "13.00"
            create_date:
              description: "Pulled from Connect device order time"
              type: string
              example: "2022-05-24T00:01:00Z"
            refund:
              description: "Refund object containing details about the refund. Will always be present even if the order has not been refunded yet. Look at the refundable object to determine the order's refund eligibility. "
              type: object
              properties:
                original_order_id:
                  description: "This field only appears on refunded orders. It is a link back to the corresponding order that is being refunded (the original order)."
                  type: integer
                  example: 100
                amount:
                  description: "Total amount refunded on the order"
                  type: string
                  example: "-13.00"
                remaining_amount:
                  type: string
                  description: "The amount remaining on the order that has yet to be refunded."
                  example: "0.00"
                reason:
                  description: "The reason object will only appear on refund orders. It indicates WHY the refund was created. For orders that have been refunded, the reason object will appear in the orders array."
                  type: object
                  properties:
                    code:
                      description: "The reason code that was submitted."
                      type: string
                      example: "122346"
                    name:
                      description: "The reason name or explaination"
                      type: string
                      example: "Customer not happy"
                active_user:
                  description: "The active object will only appear on refund orders. It indicates WHO created the refund order. For orders that have been refunded, the active_user object will appear in the orders array."
                  type: object
                  properties:
                    id:
                      type: string
                      example: "199"
                    login:
                      type: string
                      example: "jhondoe@mail.com"
                refundable:
                  description: "Refundable Object. Contains information about each refundable element. Today: only order level information. Future: items, fees, tips "
                  type: object
                  properties:
                    order:
                      description: "Is the order refundable by OAPI"
                      type: boolean
                      example: true
                orders:
                  description: "Order Array: List of corresponding refunded orders and information about each refunded order. An order can have 1 to many corresponding refund orders."
                  type: array
                  items:
                    type: object
                    properties:
                      order_id:
                        description: "The corresponding refund order ID."
                        type: integer
                        example: 200
                      device_order_id:
                        description: "ID generated by client, like by AX or OAPI"
                        type: string
                        example: "AX00000111"
                      create_date:
                        description: "Pulled from Connect device order time"
                        type: string
                        example: "2022-05-24T00:01:00Z"
                      amount:
                        description: "Order amount"
                        type: string
                        example: "13.00"
                      reason:
                        description: "The reason object indicates WHY the refund was created. The reason object appears in the orders array for Orders that have been refunded."
                        type: object
                        properties:
                          code:
                            description: "The reason code that was submitted."
                            type: string
                            example: "122346"
                          name:
                            description: "The reason name or explaination"
                            type: string
                            example: "Customer not happy"
                      active_user:
                        description: "The active object indicates WHO created the refund order. Active user object appears in the orders array for Orders that have been refunded."
                        type: object
                        properties:
                          id:
                            type: string
                            example: "199"
                          login:
                            type: string
                            example: "jhondoe@mail.com"
            payments:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    example: "100200"
                  amount:
                    type: string
                    example: "10.00"
                  change:
                    type: string
                    example: "0.00"
                  tip:
                    type: string
                    example: "0.00"
                  index:
                    type: integer
                    example: 1
                  tender_id:
                    description: "Connet paymentType"
                    type: integer
                    example: 1
                  tender_type:
                    description: "Connect Payment name"
                    type: string
                    example: "credit card"
                  tender_name:
                    description: "Connect Payment config.name"
                    type: string
                    example: "Elavon"
                  metadata:
                    type: string
                    example: "{\"AuthCurrency\":\"USD\",\"CaptureMethod\":\"MANUAL\",\"CardType\":\"VISA\",\"DeviceTransactionID\":\"160222ED3-1FD68B66-B65D-45A0-8063-584958463CCE\",\"ReqCurrency\":\"USD\",\"TransactionType\":\"SALE\"}"
                  transaction_id:
                    type: string
                    example: "260521ED3-8F67B6C8-DB4F-41CB-879D-006EAFE4409F"
        RefundedOrderList:
          type: object
          properties:
            orders:
              type: array
              items:
                type: object
                properties:
                  order_id:
                    description: "ID generated by Connect"
                    type: integer
                    example: 38002
                  device_order_id:
                    description: "ID generated by client, like by AX or OAPI"
                    type: string
                    example: "AX00000111"
                  status:
                    description: "Connect Status. All Orders related to refund will have the same status of completed. Showing now to prepare for potential future statuses. "
                    type: string
                    enum: [ COMPLETED, REFUND_PROCESSING, PARTIAL_REFUND, REFUNDED, REFUND_PROCESSED, PENDING ]
                    example: "COMPLETED"
                  venue_id:
                    description: "Connect-assigned venue ID"
                    type: integer
                    example: 1371
                  vendor_id:
                    description: "Connect-assigned vendor ID"
                    type: integer
                    example: 865
                  create_date:
                    description: "Pulled from Connect device order time"
                    type: string
                    example: "2022-05-24T00:01:00Z"
                  refund:
                    description: "Refund object containing details about the refund. Will always be present even if the order has not been refunded yet. Look at the refundable object to determine the order's refund eligibility. "
                    type: object
                    properties:
                      refundable:
                        description: "Refundable Object. Contains information about each refundable element. Today: only order level information. Future: items, fees, tips "
                        type: object
                        properties:
                          order:
                            description: "Is the order refundable by OAPI"
                            type: boolean
                            example: true
                      orders:
                        description: "Order Array: List of corresponding refunded orders and information about each refunded order. An order can have 1 to many corresponding refund orders."
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              description: "The corresponding refund order ID."
                              type: integer
      responses:
        "400_Checkout_Malformed":
          description: Checkout Malformed
          content:
            application/vnd.appetize+json;version=1:
              schema:
                $ref: '#/components/schemas/RequestMalformed'
        "400_Calculate_Malformed":
          description: Calculate Malformed
          content:
            application/vnd.appetize+json;version=1:
              schema:
                $ref: '#/components/schemas/RequestMalformed'
        "400_Levels_Malformed":
          description: Levels Malformed
          content:
            application/vnd.appetize+json;version=1:
              schema:
                $ref: '#/components/schemas/LevelsMalformed'
        "204":
          description: Success with no content.
        "400":
          description: Bad Request.
          content:
            application/vnd.appetize+json;version=1:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: 'malformed request syntax'
        "401":
          description: Unauthorized
          content:
            application/vnd.appetize+json;version=1:
              schema:
                $ref: '#/components/schemas/AuthenticationBearerFailure'
            application/json:
              examples:
                response:
                  value:
                    message: unauthorized
        "401_Invalid_XAPIKey":
          description: Unauthorized
          content:
            application/vnd.appetize+json;version=1:
              schema:
                $ref: '#/components/schemas/AuthenticationXAPIFailure'
            application/json:
              examples:
                response:
                  value:
                    message: unauthorized
        "404_Store_Not_Found":
          description: Not Found
          content:
            application/vnd.appetize+json;version=1:
              schema:
                $ref: '#/components/schemas/StoreNotFound'
        "404_Menu_Not_Found":
          description: Not Found
          content:
            application/vnd.appetize+json;version=1:
              schema:
                $ref: '#/components/schemas/MenuNotFound'
        "404_Level_Not_Found":
          description: Not Found
          content:
            application/vnd.appetize+json;version=1:
              schema:
                $ref: '#/components/schemas/LevelNotFound'
        "422":
          description: Unprocessable Entity
          content:
            application/vnd.appetize+json;version=1:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        "200_apl_session_token":
          description: The request has succeeded.
          headers:
            Content-Type:
              description: Content type of the response
              schema:
                $ref: '#/components/schemas/Content-Type'
          content:
            application/com.appetize.oapi.apl.v1+json:
              schema:
                $ref: '#/components/schemas/AplSessionTokenResponse'
        "200_apl_payment":
          description: The request has succeeded.
          headers:
            Content-Type:
              description: Content type of the response
              schema:
                $ref: '#/components/schemas/Content-Type'
          content:
            application/com.appetize.oapi.apl.v1+json:
              schema:
                $ref: '#/components/schemas/AplPaymentResponse'
        "200_apl_query_token":
          description: The request has succeeded.
          headers:
            Content-Type:
              description: Content type of the response
              schema:
                $ref: '#/components/schemas/Content-Type'
          content:
            application/com.appetize.oapi.apl.v1+json:
              schema:
                $ref: '#/components/schemas/AplQueryTokenResponse'
        "400_apl":
          description: The server cannot process the request due to a client error.
          content:
            application/com.appetize.oapi.apl.v1+json:
              schema:
                required:
                  - message
                properties:
                  message:
                    type: string
                    example: "Bad request: xxx"
                  code:
                    type: string
                    example: 600
        "401_apl":
          description: The requester is unauthorized.
          content:
            application/com.appetize.oapi.apl.v1+json:
              schema:
                required:
                  - message
                properties:
                  message:
                    type: string
                    example: "failed parsing Claims: xxx"
        "500_apl":
          description: The server cannot process the request due to a internal server error.
          content:
            application/com.appetize.oapi.apl.v1+json:
              schema:
                required:
                  - message
                properties:
                  message:
                    type: string
                    example: "Internal Server Error: xxx"
    
        # Refund responses
        "create_refund_201":
          description: The order full refund was created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundedOrder'
              examples:
                Refund Order:
                  value:
                    order_id: 200
                    device_order_id: "AX00000111"
                    venue_id: 865
                    vendor_id: 1371
                    status: "COMPLETED"
                    source: "oapi"
                    amount: "-13"
                    create_date: "2022-05-25T00:01:00Z"
                    refund:
                      original_order_id: 100
                      refundable:
                        order: false
                      reason:
                        code: "122346"
                        name: "Customer not happy"
                      active_user:
                        id: "199"
                        login: "jhondoe@mail.com"
                    payments:
                      - id: "100200"
                        amount: "-13.00"
                        change: "0.00"
                        tip: "0.00"
                        index: 0
                        tender_id: 36
                        tender_type: "Credit Card"
                        tender_name: "Elavon"
                        metadata: "{\"AuthCurrency\":\"USD\",\"CaptureMethod\":\"MANUAL\",\"CardType\":\"VISA\",\"DeviceTransactionID\":\"160222ED3-1FD68B66-B65D-45A0-8063-584958463CCE\",\"ReqCurrency\":\"USD\",\"TransactionType\":\"SALE\"}"
                        transaction_id: "260521ED3-8F67B6C8-DB4F-41CB-879D-006EAFE4409F"
    
    
        "create_refund_400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Order is not in the completed status":
                  value:
                    code: 400
                    message: "Order is not in the completed status"
                    details: "Cannot refund the order. The Order has not been paid or is pending or has already by refunded"
                "Order ID Invalid":
                  value:
                    code: 400
                    message: "Bad formatted order id"
                    details: "strconv.atoi: parsing \"545\": value out of range"
                "Invalid JSON format":
                  value:
                    code: 400
                    message: "Invalid JSON format"
                    details: "Invalid character 'f' after object key"
                "Bad request":
                  value:
                    code: 400
                    message: "Bad request"
                    details: "Invalid parameter: order_id"
                "Unsupported payment type":
                  value:
                    code: 400
                    message: "Bad request"
                    details: "unsupported payment type: 4"
                "Unsupported refund type":
                  value:
                    code: 400
                    message: "Bad request"
                    details: "Unsupported refund type: FULL"
                "Order don't contains a UUID":
                  value:
                    code: 400
                    message: "Order don't contains a UUID"
                    details: "empty property"
                "Order can't be refunded":
                  value:
                    code: 400
                    message: "Order can't be refunded"
                    details: "Cannot refund the order. Order was paid with multiple credit cards or other tender types, we can only refund orders paid in full by a single credit card"
                "Already refunded, partial refunds unsupported":
                  value:
                    code: 400
                    message: "Already refunded, partial refunds unsupported"
                    details: "Cannot refund the order. Order was paid with multiple credit cards or other tender types, we can only refund orders paid in full by a single credit card"
                "Order is not paid in full by a single credit card":
                  value:
                    code: 400
                    message: "Order is not paid in full by a single credit card"
                    details: "Cannot refund the order. Order was paid with multiple credit cards or other tender types, we can only refund orders paid in full by a single credit card"
                "Order can not be refunded due to NonRefundable flag":
                  value:
                    code: 400
                    message: "Order can not be refunded due to NonRefundable flag"
                    details: "Cannot refund the order. Order was paid with multiple credit cards or other tender types, we can only refund orders paid in full by a single credit card"
                "Only completed order can be refunded":
                  value:
                    code: 400
                    message: "Only completed order can be refunded"
                    details: "Cannot refund the order. Order was paid with multiple credit cards or other tender types, we can only refund orders paid in full by a single credit card"
        "create_refund_401":
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Invalid credentials":
                  value:
                    code: 401
                    message: "Invalid credentials"
                    details: "Venue not found in claims"
    
        "create_refund_404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Order not found":
                  value:
                    code: 404
                    message: "Order is not found"
                    details: "order not found. please check your Order ID"
                "Order details not found":
                  value:
                    code: 404
                    message: "Order details not found"
                    details: "Please check your Order UUID"
        "create_refund_422":
          description: Doesn't meet the preconditions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Failed refund precondition":
                  value:
                    code: 422
                    message: "Failed refund precondition"
                    details: "The order already has a previous refund associated"
        "create_refund_500":
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Error getting store details":
                  value:
                    code: 500
                    message: "Error getting store details"
                    details: "Can't get store details"
                "Error parsing terminal id":
                  value:
                    code: 500
                    message: "Error parsing terminal id"
                    details: "strconv.atoi: parsing \"545\": value out of range"
                "Tenders not found":
                  value:
                    code: 500
                    message: "Tenders not found"
                    details: "[...]"
                "Credit card payment return error":
                  value:
                    code: 500
                    message: "Credit card payment return error"
                    details: "[...]"
                "Custom card payment return error":
                  value:
                    code: 500
                    message: "Custom card payment return error"
                    details: "[...]"
                "Error generating Order receipt":
                  value:
                    code: 500
                    message: "Error generating Order receipt"
                    details: "[...]"
                "Error saving Order receipt":
                  value:
                    code: 500
                    message: "Error saving Order receipt"
                    details: "[...]"
                "Order checkout error":
                  value:
                    code: 500
                    message: "Order checkout error"
                    details: "[...]"
                "Error updating refunded order status":
                  value:
                    code: 500
                    message: "Error updating refunded order status"
                    details: "[...]"
                "Error building refund order":
                  value:
                    code: 500
                    message: "Error building refund order"
                    details: "[...]"
        "get_refund_200":
          description: Returns the order details by order ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundedOrder'
              examples:
                Order that has NOT been refunded:
                  value:
                    order_id: 100
                    device_order_id: "AX00000111"
                    venue_id: 865
                    vendor_id: 1371
                    status: "COMPLETED"
                    source: "ax"
                    amount: "13"
                    create_date: "2022-05-24T00:01:00Z"
                    refund:
                      refundable:
                        order: true
                    payments:
                      - id: "100200"
                        amount: "13.00"
                        change: "0.00"
                        tip: "0.00"
                        index: 0
                        tender_id: 36
                        tender_type: "Credit Card"
                        tender_name: "Elavon"
                        metadata: "{\"AuthCurrency\":\"USD\",\"CaptureMethod\":\"MANUAL\",\"CardType\":\"VISA\",\"DeviceTransactionID\":\"160222ED3-1FD68B66-B65D-45A0-8063-584958463CCE\",\"ReqCurrency\":\"USD\",\"TransactionType\":\"SALE\"}"
                        transaction_id: "260521ED3-8F67B6C8-DB4F-41CB-879D-006EAFE4409F"
                Order that has been refunded:
                  value:
                    order_id: 100
                    device_order_id: "AX00000111"
                    venue_id: 865
                    vendor_id: 1371
                    status: "COMPLETED"
                    source: "ax"
                    amount: "13"
                    create_date: "2022-05-24T00:01:00Z"
                    refund:
                      total_amount: "-13"
                      remaining_amount: "0.00"
                      refundable:
                        order: false
                      orders:
                        - order_id: 200
                          device_order_id: "AX00000111"
                          create_date: "2022-05-25T00:01:00Z"
                          amount: "-13"
                          reason:
                            code: "122346"
                            name: "Customer not happy"
                          active_user:
                            id: "199"
                            login: "jhondoe@mail.com"
                    payments:
                      - id: "100200"
                        amount: "13.00"
                        change: "0.00"
                        tip: "0.00"
                        index: 0
                        tender_id: 36
                        tender_type: "Credit Card"
                        tender_name: "Elavon"
                        metadata: "{\"AuthCurrency\":\"USD\",\"CaptureMethod\":\"MANUAL\",\"CardType\":\"VISA\",\"DeviceTransactionID\":\"160222ED3-1FD68B66-B65D-45A0-8063-584958463CCE\",\"ReqCurrency\":\"USD\",\"TransactionType\":\"SALE\"}"
                        transaction_id: "260521ED3-8F67B6C8-DB4F-41CB-879D-006EAFE4409F"
                Refund Order:
                  value:
                    order_id: 200
                    device_order_id: "AX00000111"
                    venue_id: 865
                    vendor_id: 1371
                    status: "COMPLETED"
                    source: "oapi"
                    amount: "-13"
                    create_date: "2022-05-25T00:01:00Z"
                    refund:
                      original_order_id: 100
                      refundable:
                        order: false
                      reason:
                        code: "122346"
                        name: "Customer not happy"
                      active_user:
                        id: "199"
                        login: "jhondoe@mail.com"
                    payments:
                      - id: "100200"
                        amount: "-13.00"
                        change: "0.00"
                        tip: "0.00"
                        index: 0
                        tender_id: 36
                        tender_type: "Credit Card"
                        tender_name: "Elavon"
                        metadata: "{\"AuthCurrency\":\"USD\",\"CaptureMethod\":\"MANUAL\",\"CardType\":\"VISA\",\"DeviceTransactionID\":\"160222ED3-1FD68B66-B65D-45A0-8063-584958463CCE\",\"ReqCurrency\":\"USD\",\"TransactionType\":\"SALE\"}"
                        transaction_id: "260521ED3-8F67B6C8-DB4F-41CB-879D-006EAFE4409F"
        "get_refund_400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Order ID Invalid":
                  value:
                    code: 400
                    message: "Bad formatted order id"
                    details: "strconv.atoi: parsing \"545\": value out of range"
                "Bad request":
                  value:
                    code: 400
                    message: "Bad request"
                    details: "Invalid parameter: order_id"
        "get_refund_401":
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Invalid credentials":
                  value:
                    code: 401
                    message: "Invalid credentials"
                    details: "Venue not found in claims"
        "get_refund_404":
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Order not found":
                  value:
                    code: 404
                    message: "Order is not found"
                    details: "order not found. please check your Order ID"
                "Order details not found":
                  value:
                    code: 404
                    message: "Order details not found"
                    details: "Can't get orders details"
        "get_refund_500":
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Internal error":
                  value:
                    code: 500
                    message: "Internal error"
                    details: "Error connecting against Connect"
        "list_refunds_200":
          description: Returns the list of the refunds associated to the account ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundedOrderList'
              examples:
                List of orders that have Not been refunded:
                  value:
                    orders:
                      - order_id: 100
                        device_order_id: "AX00000111"
                        status: "COMPLETED"
                        venue_id: 865
                        vendor_id: 1371
                        create_date: "2022-05-24T00:01:00Z"
                        refund:
                          refundable:
                            order: true
                List of orders that Have been refunded:
                  value:
                    orders:
                      - order_id: 500
                        device_order_id: "AX00000111"
                        status: "COMPLETED"
                        venue_id: 865
                        vendor_id: 1371
                        create_date: "2022-05-24T00:01:00Z"
                        refund:
                          refundable:
                            order: false
                          orders:
                            - id: 600
    
    
        "list_refunds_400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Bad request":
                  value:
                    code: 400
                    message: "Bad request"
                    details: "Invalid parameter: venue_id"
                "Timezone invalid":
                  value:
                    code: 400
                    message: "Timezone invalid"
                    details: "Unknown time zone America/KO"
                "Invalid date format":
                  value:
                    code: 400
                    message: "Invalid date format, expected: YYYY-MM-DD hh:mm:ss"
                    details: "Parsing time \"2022-10-19 10:54:32y\": extra text: \"y\""
        "list_refunds_401":
          description: Invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Invalid credentials":
                  value:
                    code: 401
                    message: "Invalid credentials"
                    details: "Venue not found in claims"
        "list_refunds_500":
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorWithDetails'
              examples:
                "Error getting orders":
                  value:
                    code: 500
                    message: "Error getting orders"
                    details: "Can't get orders"
                "Error parsing terminal id":
                  value:
                    code: 500
                    message: "Error parsing terminal id"
                    details: "strconv.atoi: parsing \"545\": value out of range"
                "Error getting store details":
                  value:
                    code: 500
                    message: "Error getting store details"
                    details: "Can't get store details"
    
      requestBodies:
        Checkout:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutRequest'