TAPI 2.3.0 - Current Version

Released on 02/24/2023

  • openapi: 3.0.0
    info:
      version: 2.3.0
      title: Transactions API
      description: |
        The Appetize Transactions API provides access to get and list order information.<br />
        Use the ListOrders endpoint to get a list of all orders to which you have access, within a date and time range that you specify. <br/>
        Use the GetOrder endpoint to get order details for a specific order, using the UUID you got from the ListOrders endpoint.<br/> 
        We use JWT to authenticate your requests. You can generate it using the auth endpoint described below. Please contact Appetize to get the API key. 
      contact: { }
    
    servers:
      - description: Appetize API URL. This URL will be provided by our team.
        url: https://{environment}.appetize.com
    
    paths:
      /auth/transactions:
        post:
          summary: Authentication of API Key
          tags:
            - Auth
          description: This auth endpoint will return the JWT token required to call Transactions API.
          parameters:
            - $ref: '#/components/parameters/x_api_key'
          responses:
            '200':
              description: OK
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      auth_key:
                        type: string
                        example: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ2..."
            '400':
              description: Bad Request
              content:
                    application/json:
                      schema:
                        type: object
                        properties:
                          message :
                            type : string
                            example: 'bad request'
                          code:
                            type: integer
                            example: 400
            '401':
              description: Unauthorized
              content:
                    application/json:
                      schema:
                        type: object
                        properties:
                          message :
                            type : string
                            example: 'unauthorized'
                          code:
                            type: integer
                            example: 401
      /orders:
        get:
          tags:
            - ListOrders
          summary: Get a List of Orders
          description: List orders to which you have access, as defined in your JWT.
          operationId: listOrders
          parameters:
            - $ref: '#/components/parameters/start_date'
            - $ref: '#/components/parameters/end_date'
            - $ref: '#/components/parameters/start_sync_date'
            - $ref: '#/components/parameters/end_sync_date'
            - $ref: '#/components/parameters/limit'
            - $ref: '#/components/parameters/page'
            - $ref: '#/components/parameters/retrieval_status'
          responses:
            '200':
              description: Success
              content:
                'application/com.appetize.transactions_api.listOrders.v1.0+json':
                  schema:
                    $ref: '#/components/schemas/list_transactions_result'
            '400':
              $ref: '#/components/responses/400'
            '401':
              $ref: '#/components/responses/401'
            '415':
              $ref: '#/components/responses/415'
            '422':
              $ref: '#/components/responses/422'
            '500':
              $ref: '#/components/responses/500'
      /orders/{local_order_uuid}:
        get:
          tags:
            - GetOrder
          summary: Get a Specific Order
          description: Get a specific order and its details.
          operationId: getOrder
          parameters:
            - $ref: '#/components/parameters/local_order_uuid'
          responses:
            '200':
              description: Success
              content:
                'application/com.appetize.transactions_api.getOrder.v1+json':
                  schema:
                    $ref: '#/components/schemas/order'
            '400':
              $ref: '#/components/responses/400'
            '401':
              $ref: '#/components/responses/401'
            '415':
              $ref: '#/components/responses/415'
            '422':
              $ref: '#/components/responses/422'
            '500':
              $ref: '#/components/responses/500'
      /quarantine-orders/{local_order_uuid}/mark-dead-letter:
        put:
            tags:
              - MarkDeadLetterQuarantineOrder
            summary: Mark Order as Dead Letter
            description: Mark a quarantine order as dead letter.
            operationId: markDeadLetterQuarantineOrder
            parameters:
              - $ref: '#/components/parameters/local_order_uuid'
            responses:
              '200':
                description: Success
              '400':
                $ref: '#/components/responses/400'
              '401':
                $ref: '#/components/responses/401'
              '415':
                $ref: '#/components/responses/415'
              '422':
                $ref: '#/components/responses/422'
              '500':
                $ref: '#/components/responses/500'
      /quarantine-orders:
       get:
          tags:
            - ListQuarantineOrders
          summary: Get a List of Quarantined Orders
          description: List quarantine orders to which you have access, as defined in your JWT.
          operationId: listQuarantineOrders
          parameters:
            - $ref: '#/components/parameters/start_date'
            - $ref: '#/components/parameters/end_date'
            - $ref: '#/components/parameters/page'
            - $ref: '#/components/parameters/status'
          responses:
            '200':
              description: Success
              content:
                'application/com.appetize.transactions_api.listQuarantineOrders.v1.0+json':
                  schema:
                    $ref: '#/components/schemas/list_quarantine_orders_result'
            '400':
              $ref: '#/components/responses/400'
            '401':
              $ref: '#/components/responses/401'
            '415':
              $ref: '#/components/responses/415'
            '422':
              $ref: '#/components/responses/422'
            '500':
              $ref: '#/components/responses/500'        
      /orders/{local_order_uuid}/reprocess:
        post:
          tags:
            - Reprocess
          summary: Reprocess a Specific Order
          description: Reprocess an order that is stored in quarantine collection.
          parameters:
            - $ref: '#/components/parameters/local_order_uuid'
          responses:
            '200':
              description: OK
            '400':
              description: Bad Request
              content:
                    application/json:
                      schema:
                        type: object
                        properties:
                          message :
                            type : string
                            example: 'bad request'
                          code:
                            type: integer
                            example: 400
            '401':
              description: Unauthorized
              content:
                    application/json:
                      schema:
                        type: object
                        properties:
                          message :
                            type : string
                            example: 'unauthorized'
                          code:
                            type: integer
                            example: 401
    components:
      parameters:
        corporate_id:
          description: "The Corporate ID of the target transactions"
          in: path
          name: corporate_id
          required: true
          schema:
            $ref: "#/components/schemas/corporate_id"
        limit:
          description: "The max number of results to be returned"
          in: query
          name: limit
          schema:
            $ref: "#/components/schemas/limit"
        local_order_uuid:
          description: "The order UUID of the target transaction"
          in: path
          name: local_order_uuid
          required: true
          schema:
            $ref: "#/components/schemas/local_order_uuid"
        page:
          description: "Page number to be returned"
          in: query
          name: page
          schema:
            $ref: "#/components/schemas/page"
        start_date:
          description: "The lower bound for order creation date and time (UTC) to be returned"
          in: query
          name: start_date
          schema:
            $ref: "#/components/schemas/start_date"
        end_date:
          description: "The exclusive upper bound for order creation date and time (UTC) to be returned"
          in: query
          name: end_date
          schema:
            $ref: "#/components/schemas/end_date"
        start_sync_date:
          description: "The lower bound for order submission date and time (UTC) to be returned"
          in: query
          name: start_sync_date
          schema:
            $ref: "#/components/schemas/start_sync_date"
        end_sync_date:
          description: "The exclusive upper bound for order submission date and time (UTC) to be returned"
          in: query
          name: end_sync_date
          schema:
            $ref: "#/components/schemas/end_sync_date"
        venue_id:
          description: "The venue ID of the target transactions"
          in: path
          name: venue_id
          required: true
          schema:
            $ref: "#/components/schemas/venue_id"
        retrieval_status:
          description: "Current retrieval status of the order. default value is completed"
          in: query
          name: retrieval_status
          schema:
            $ref: "#/components/schemas/retrieval_status"
        x_api_key:
          name: X-API-Key
          in: header
          required: true
          schema:
            type: string
        status:
          description: "Status of the quarantine order [DEADLETTER | DELETED]. Empty for orders with no status"
          in: query
          name: status
          schema:
            $ref: "#/components/schemas/status"    
      schemas:
        corporate_id:
          example: 1238
          type: integer
        custom_field:
          description: "Connect-configured custom field"
          properties:
            key:
              description: "Connect-configured Custom Field key"
              example: Buyer
              type: string
              maxLength: 100
            name:
              description: "Connect-configured Custom Field name"
              example: "Merchandise Buyer"
              type: string
              maxLength: 255
            value:
              example: "Sally M."
              type: string
              maxLength: 65535
          type: object
        discount:
          properties:
            amount:
              description: "Currency amount of the discount applied multiplied by the quantity"
              example: "-1.1"
              type: string
              format: float
            index:
              description: "Order of the discount applied"
              example: 1
              type: integer
            name:
              description: "Connect-configured reduction name"
              example: "Gold Tier 10%"
              type: string
              maxLength: 255
            reference:
              description: "Connect-configured reference ID for the discount"
              example: SomeUniqueValue
              type: string
              maxLength: 50
            type:
              description: "The type of discount applied"
              enum:
                - FLAT
                - PERCENT
              example: PERCENT
              type: string
            value:
              description: "Value of the percent or flat amount to be discounted"
              example: "0.1"
              type: string
              format: float
            metadata:
              description: "External data of the discount (no max length)"
              example: "{\"id\":\"silver\",\"display_name\":\"Discount Validation Interface\",\"integration_id\":95,\"entry_method\":\"K\"}"
              type: string
          type: object
        end_date:
          description: "Date/time the transaction was created in UTC"
          example: "2021-05-26T00:01:00Z"
          type: string
        start_date:
          description: "Date/time the transaction was created in UTC"
          example: "2021-05-24T00:01:00Z"
          type: string
        end_sync_date:
          description: "Date/time the transaction was synced in UTC"
          example: "2021-05-26T00:01:00Z"
          type: string
        start_sync_date:
          description: "Date/time the transaction was synced in UTC"
          example: "2021-05-24T00:01:00Z"
          type: string
        fee:
          type: object
          properties:
            amount:
              type: string
              format: float
              example: "5.50"
              description: "Currency amount of the fee applied"
            name:
              type: string
              example: "10% Corkage Fee"
              description: "Connect-configured fee name"
              maxLength: 255
            index:
              type: integer
              example: 1
              description: "Order of the fee applied"
            class:
              type: string
              enum:
                - FEE
                - SERVICE CHARGE
                - GRATUITY
                - TIP
            type:
              type: string
              example: "PERCENT"
              description: "The type of fee applied"
              enum:
                - FLAT
                - PERCENT
            value:
              type: string
              format: float
              example: "0.1"
              description: "Value of the fee applied"
            taxes:
              type: array
              items:
                $ref: "#/components/schemas/tax"
        item:
          properties:
            custom_fields:
              items:
                $ref: "#/components/schemas/custom_field"
              type: array
            discounts:
              items:
                $ref: "#/components/schemas/discount"
              type: array
            identifiers:
              properties:
                item_id:
                  description: "Connect-assigned unique item identifier"
                  example: 47391
                  type: integer
                name:
                  description: "Connect-configured item name"
                  example: Cheeseburger
                  type: string
                  maxLength: 200
                display_name:
                  description: "Connect-configured item display name"
                  example: Cheeseburger
                  type: string
                  maxLength: 200
                sku:
                  description: "Connect-configured item SKU"
                  example: "5834b8503840"
                  type: string
                external_id:
                  description: "Connect-configured item External ID"
                  example: "AA749f04948"
                  type: string
                unique_id:
                  description: "Unique identifier for the item, which may or may not be unique. Items with the same ID will be grouped together in reports"
                  example: "AB123"
              type: object
            index:
              description: "Relative position of the item in the cart, used in other references, one-based"
              example: 1
              type: integer
            line_item_uuid:
              description: "Appetize-generated identifier for this item cart sale"
              example: "ae76b6c4-6c35-42a5-93f9-ea6d60c642de"
              format: uuid
              type: string
            operation:
              description: "Indicates if this item is an item sale or an item refund"
              enum:
                - SALE
                - REFUND
              example: "SALE"
              type: string
            parent_item_uuid:
              description: Appetize-generated identifier for the parent. It is only present if the item is a modifier."
              example: "91105ae1-c3bb-43bb-bd4b-2b13a693701d"
              format: uuid
              type: string
            prices:
              properties:
                original:
                  description: "The extended price configured in Connect"
                  example: "12.0"
                  type: string
                  format: string
                sold:
                  description: "The extended price net of all adjustements, discounts, and fees"
                  example: "11.45"
                  type: string
                  format: string
              type: object
            taxes:
              type: array
              items:
                $ref: "#/components/schemas/tax"
            quantity:
              description: "Quantity of the item sold"
              example: "2.0"
              format: float
              type: string
            measure:
              properties:
                unit:
                  type: string
                  example: "lb"
                  description: "Connect-configured item unit"
                  default: "each"
                tare:
                  type: string
                  example: "0.45"
                  description: "Connect-assigned tare weight"
                is_manual:
                  type: boolean
                  example: true
                  description: "Indicate if net_weight was assigned manually"
                net_weight:
                  type: string
                  example: "3.45"
                  description: "Quantity of the item sold"
            kitchen_id:
              description: "The kitchen ID associated with this item"
              example: "123"
              type: string
            original_order_id:
              description: "If this is a refunded item, the original id of the order were the purchase was made"
              example: "12345678"
              type: string  
          type: object
        limit:
          default: 100
          example: 100
          type: integer
          maximum: 500
        list_transactions_result:
          properties:
            orders:
              type: array
              items:
                type: object
                properties:
                  local_order_uuid:
                    $ref: "#/components/schemas/local_order_uuid"
                  corporate_id:
                    description: "Connect-assigned corporation ID"
                    example: 40
                    type: integer
                  external_vendor_id:
                    description: "Connect-configured External Vendor ID"
                    example: "BH0105"
                    nullable: true
                    type: string
                  vendor_id:
                    description: "Connect-assigned vendor ID"
                    example: 865
                    type: integer
                  venue_id:
                    description: "Connect-assigned venue ID"
                    example: 1371
                    type: integer
                  end_date:
                    description: "Date/time the transaction was created in UTC"
                    example: "2021-07-21T18:56:32Z"
                    type: string
                  sync_date:
                    description: "Date/time the transaction was synced in UTC"
                    example: "2021-07-21T18:56:32Z"
                    type: string
                  retrieval_status:
                    description: "If retrieved order has all available values or it is missing some"
                    example: "completed"
                    type: string
                    enum: [ completed, in_progress, incomplete ]
            pagination:
              $ref: "#/components/schemas/pagination"
        list_quarantine_orders_result:
          properties:
            orders:
              type: array
              items:
                type: object
                properties:
                  local_order_uuid:
                    $ref: "#/components/schemas/local_order_uuid"
                  corporate_id:
                    description: "Connect-assigned corporation ID"
                    example: 40
                    type: integer
                  external_vendor_id:
                    description: "Connect-configured External Vendor ID"
                    example: "BH0105"
                    nullable: true
                    type: string
                  vendor_id:
                    description: "Connect-assigned vendor ID"
                    example: 865
                    type: integer
                  venue_id:
                    description: "Connect-assigned venue ID"
                    example: 1371
                    type: integer
                  date:
                    description: "Date/time the transaction was quarantined in UTC"
                    example: "2021-07-21T18:56:32Z"
                    type: string
                  status:
                    description: "Status of the order"
                    example: ""
                    type: string
                    enum: [ DELETED, DEADLETTER ]
                  errors:
                    description: "The errors the order had"
                    type: array
                    items:
                      properties:
                        Fields: 
                          description: "fields that are missing from the transaction"
                          type: array
                          items:
                            type: string
                            example: "order.user"
                        Errors:
                          type: string
                          description: "Error message from the consumer service"
                          example: "User id not exists" 
            pagination:
              $ref: "#/components/schemas/pagination"      
        local_order_uuid:
          description: "The presented device order UUID"
          example: "ee23e571-ca78-4578-a0d1-8ecfe104d04f"
          type: string
        location:
          description: "Identifiers for the location originating the ordere happened"
          properties:
            custom_fields:
              items:
                $ref: "#/components/schemas/custom_field"
              type: array
            vendor_id:
              description: "Connect-assigned vendor ID"
              example: 865
              type: integer
            vendor_name:
              description: "Connect-configured vendor name"
              example: Burgerland
              type: string
              maxLength: 200
            venue_id:
              description: "Connect-assigned venue ID"
              example: 1371
              type: integer
            venue_name:
              description: "Connect-configured venue name"
              example: "Big Island Venue"
              type: string
              maxLength: 200
            corporate_id:
              description: "Connect-assigned corporation ID"
              example: 40
              type: integer
            external_vendor_id:
              description: "Connect-configured External Vendor ID"
              example: "BH0105"
              nullable: true
              type: string
          type: object
        order:
          properties:
            items:
              items:
                $ref: "#/components/schemas/item"
              type: array
            local_order_id:
              description: "The presented device order ID printed on receipts and shown in Connect"
              example: "A0001999920063009000001"
              type: string
            local_order_uuid:
              description: "The order UUID of the target transaction"
              example: "ee23e571-bt75-4578-a0d1-7ecfe306d04f"
              type: string
            location:
              $ref: "#/components/schemas/location"
            order_id:
              description: "The database identity value after the order is stored in Connect"
              example: 1234
              type: integer
            payments:
              items:
                $ref: "#/components/schemas/payment"
              type: array
            fees:
              type: array
              items:
                $ref: "#/components/schemas/fee"
            origin:
              description: Appetize application where this order was created"
              example: "appetize_android"
              type: string
              maxLength: 50
            terminals:
              items:
                $ref: "#/components/schemas/terminal"
              type: array
            time:
              properties:
                end:
                  description: "Date/time the transaction was created in UTC"
                  example: "2020-11-21T14:00:00Z"
                  format: date-time
                  type: string
                sync:
                  description: "Date/time the transaction was synced in UTC"
                  example: "2020-11-21T14:00:00Z"
                  format: date-time
                  type: string
                timezone:
                  example: "America/New_York"
                  description: "Connect-configured venue time zone"
                  type: string
              type: object
            users:
              items:
                $ref: "#/components/schemas/user"
              type: array
            event:
              description: "Event associated to the order"
              properties:
                id:
                  description: "Connect-assigned event ID"
                  example: 40
                  type: integer
            order_type:
              description: "The order type, as passed in from the client in the case of Ordering API, and as set in the terminal role in the case of Activate orders."
              properties:
                id:
                  description: "Connect-assigned order type ID"
                  example: 40
                  type: integer
                name:
                  description: "Connect-assigned order type name"
                  example: "POS"
                  type: string
            retrieval_status:
              description: "If retrieved order has all available values or it is missing some"
              example: "completed"
              enum: [ completed, in_progress, incomplete ]
              type: string
            seat_id:
              description: "Connect-assigned seat ID"
              example: 40
              type: integer
            customer_id:
              description: "Connect-assigned customer ID"
              example: "7037796"
              type: string
          type: object
        page:
          default: 1
          example: 50
          type: integer
        pagination:
          properties:
            limit:
              default: 50
              example: 1
              type: integer
            page:
              default: 1
              example: 3
              type: integer
            total_pages:
              example: 4
              type: integer
            total_results:
              example: 4
              type: integer
          required:
            - page
            - limit
            - total_results
            - total_pages
          type: object
        payment:
          description: "Instance of a payment made on the order"
          properties:
            amount:
              description: "The amount of money which was paid on with this payment"
              example: "43.74"
              format: float
              type: string
            change:
              description: "The amount of money which was given back to the customer in change"
              example: "6.26"
              format: float
              type: string
            tip:
              description: "The amount of money which was given as tip"
              example: "1.26"
              format: float
              type: string
            index:
              description: "Relative sequence of payment applied"
              example: 1
              type: integer
            tender_id:
              description: "Connect-configured tender id, or Connect-defined tender id if null"
              type: integer
            tender_name:
              description: "Name of the tender"
              example: CREDIT
              type: string
              maxLength: 200
            metadata:
              description: "External data of the payment (no max length)"
              example: "{\"AuthCurrency\":\"USD\",\"CaptureMethod\":\"MANUAL\",\"DeviceTransactionID\":\"260521ED3-8F67B6C8-DB4F-41CB-879D-006EAFE4409F\",\"ReqCurrency\":\"USD\"}"
              type: string
            transaction_id:
              description: "Transaction id of the payment (not in all payment methods)"
              example: "260521ED3-8F67B6C8-DB4F-41CB-879D-006EAFE4409F"
              type: string
              maxLength: 100
          type: object
        tax:
          type: object
          description: "Tax assessed on an item, fee or other taxable good"
          properties:
            amount:
              type: string
              example: "0.53"
              description: "The calculated mount of tax assessed"
            class:
              type: string
              enum:
                - INCLUSIVE
                - EXCLUSIVE
            type:
              type: string
              enum:
                - PERCENTAGE
                - FLAT
                - TABLE
            name:
              type: string
              example: "Incl State Tax 5%"
              maxLength: 20
            index:
              type: integer
              example: 1
            rate:
              type: string
              example: "5.0"
        terminal:
          description: "Information about the terminal used during the order lifetime"
          properties:
            id:
              default: "9999"
              description: "Locally configured terminal ID"
              example: "0012"
              type: string
              maxLength: 40
          type: object
        user:
          description: "Information about the users (employees) that handled the order during its lifetime"
          properties:
            login:
              description: "Connect-configured employee users' login"
              example: "59385859"
              type: string
            name:
              description: "Connect-configured employee users' Name as defined in Connect"
              example: "Jane Smith"
              type: string
              maxLength: 200
            known_as:
              description: "Connect-configured employee users' Known As name displayed on receipts"
              example: "Jane S."
              type: string
              maxLength: 200
            external_id:
              description: "Connect-configured employee users' external ID"
              example: "SAP0001289"
              type: string
              maxLength: 15
          type: object
        venue_id:
          example: 1238
          type: integer
        retrieval_status:
          example: "completed"
          type: string
          default: "completed"
          enum: [ completed, in_progress, incomplete ]
        status:
          example: "DEADLETTER"
          type: string
          default: ""
          enum: [ "DEADLETTER", "DELETED",  ""]  
      responses:
        '400':
          description: bad request
        '401':
          description: unauthorized
        '403':
          description: forbidden
        '404':
          description: not found
        '415':
          description: unsupported media type in content-type header
        '422':
          description: unprocessable entity
        '500':
          description: internal server error