#
# NOTE: This file is auto generated by Pipe17 OpenAPI Tools.
#       Please, do not edit manually.
#
openapi: 3.0.1
info:
  title: Pipe17 API
  description: Generic interface to Pipe17 services
  termsOfService: https://pipe17.com/terms-of-service
  contact:
    email: support@pipe17.com
  license:
    name: Pipe17 License
    url: https://apidoc.pipe17.com/pipe17-api-license.html
  version: 3.0.540
  x-logo:
    href: https://pipe17.com
    url: https://assets.pipe17.com/logos/pipe17/Pipe17-Logo-final.svg
    backgroundColor: '#fafafa'
    altText: Pipe17 logo
externalDocs:
  description: About Pipe17
  url: https://pipe17.com
servers:
  - url: https://api-v3.pipe17.com/api/v3
    description: production
tags:
  - name: Accounts
    description: |
      Operations about Accounts
      ## Account Model
      <SchemaDefinition schemaRef="#/components/schemas/Account" />
  - name: Api Keys
    description: |
      Operations about Api Keys
      ## Api Key Model
      <SchemaDefinition schemaRef="#/components/schemas/ApiKey" />
  - name: Appeasement Codes
    description: |
      Operations about Appeasement Codes
      ## Appeasement Code Model
      <SchemaDefinition schemaRef="#/components/schemas/AppeasementCode" />
  - name: Appeasements
    description: |
      Operations about Appeasements
      ## Appeasement Model
      <SchemaDefinition schemaRef="#/components/schemas/Appeasement" />
  - name: Arrivals
    description: |
      Operations about Arrival Notifications
      ## Arrival Model
      <SchemaDefinition schemaRef="#/components/schemas/Arrival" />
  - name: Automation Rules
    description: |
      Operations around Automation Rules. An automation rule contains filters and actions that determine when and how to execute automation actions. An automation rule always belongs to an automation.
      ## Automation Rule Model
      <SchemaDefinition schemaRef="#/components/schemas/AutomationRule" />
  - name: Automation Runs
    description: |
      Operations around Automation Runs. An automation run captures the history of an automation being executed on an entity.
      ## Automation Run Model
      <SchemaDefinition schemaRef="#/components/schemas/AutomationRun" />
  - name: Automations
    description: |
      Operations around Automations. An automation is the highest level entity of the Automation Engine.
      ## Automation Model
      <SchemaDefinition schemaRef="#/components/schemas/Automation" />
  - name: Catalog Products
    description: |
      Operations about Catalog Products
      ## Catalog Product Model
      <SchemaDefinition schemaRef="#/components/schemas/CatalogProduct" />
  - name: Catalogs
    description: |
      Operations about Catalogs
      ## Catalog Model
      <SchemaDefinition schemaRef="#/components/schemas/Catalog" />
  - name: Connectors
    description: |
      Operations about Connectors
      ## Connector Model
      <SchemaDefinition schemaRef="#/components/schemas/Connector" />
  - name: Contacts
    description: |
      Operations about contacts
      ## Contact Model
      <SchemaDefinition schemaRef="#/components/schemas/Contact" />
  - name: Custom Objects
    description: |
      Operations with Custom Objects
      ## Custom Object Model
      <SchemaDefinition schemaRef="#/components/schemas/CustomObject" />
  - name: Customers
    description: |
      Operations about customers
      ## Customer Model
      <SchemaDefinition schemaRef="#/components/schemas/Customer" />
  - name: Cycle Count Entries
    description: |
      Operations about Cycle Count Entries
      ## Cycle Count Entry Model
      <SchemaDefinition schemaRef="#/components/schemas/CycleCountEntry" />
  - name: Cycle Counts
    description: |
      Operations about Cycle Counts
      - CycleCount Status Enum: [`open`, `counted`, `approved`, `posted`, `canceled`, `deleted`, `processing`, `completed`]
      - CycleCount Lifecycle: 
          - `[]` --open-► `open` --commit-► `counted` --approve-► `approved` --post-► `posted` --|-► `processing` --|-► `completed`
          - `counted`|`approved` --reopen-► `open`
          - `open`|`counted`|`approved` --cancel-► `canceled`
          - `open`|`counted`|`approved`|`canceled`|`posted`|`deleted` --soft-delete-► `deleted`
          - `open`|`counted`|`approved`|`canceled`|`posted`|`deleted` --hard-delete-► `[]`
      ## Cycle Count Model
      <SchemaDefinition schemaRef="#/components/schemas/CycleCount" />
  - name: Delivery Promises
    description: |
      Immutable delivery promises for orders.
      ## Delivery Promise Model
      <SchemaDefinition schemaRef="#/components/schemas/DeliveryPromise" />
  - name: Event Log
    description: |
      Operations on Event Log
      ## Event Model
      <SchemaDefinition schemaRef="#/components/schemas/Event" />
  - name: Exceptions
    description: |
      Operations on Exceptions
      ## Exception Model
      <SchemaDefinition schemaRef="#/components/schemas/Exception" />
  - name: Fulfillments
    description: |
      When shipments gets fulfilled, a Fulfillment object is created within Pipe17
      ## Fulfillment Model
      <SchemaDefinition schemaRef="#/components/schemas/Fulfillment" />
  - name: Integrations
    description: |
      Operations about Integrations
      ## Integration Model
      <SchemaDefinition schemaRef="#/components/schemas/Integration" />
  - name: Inventory
    description: |
      Operations about Inventory
      ## Inventory Model
      <SchemaDefinition schemaRef="#/components/schemas/Inventory" />
  - name: Invoices
    description: |
      Operations with Invoices
      ## Invoice Model
      <SchemaDefinition schemaRef="#/components/schemas/Invoice" />
  - name: Labels
    description: |
      Operations on Labels
      ## Label Model
      <SchemaDefinition schemaRef="#/components/schemas/Label" />
  - name: Location Groups
    description: |
      Operations with Location Groups
      ## Location Group Model
      <SchemaDefinition schemaRef="#/components/schemas/LocationGroup" />
  - name: Locations
    description: |
      Operations about Locations
      ## Location Model
      <SchemaDefinition schemaRef="#/components/schemas/Location" />
  - name: Mappings
    description: |
      Operations about Mappings
      ## Mapping Model
      <SchemaDefinition schemaRef="#/components/schemas/Mapping" />
  - name: Notes
    description: |
      Operations about Notes
      ## Note Model
      <SchemaDefinition schemaRef="#/components/schemas/Note" />
  - name: Order Statement Transactions
    description: |
      Operations about Order Statement Transactions
      ## Order Statement Transaction Model
      <SchemaDefinition schemaRef="#/components/schemas/Transaction" />
  - name: Order Statements
    description: |
      Operations about Order Statements
      ## Order Statement Model
      <SchemaDefinition schemaRef="#/components/schemas/Statement" />
  - name: Orders
    description: |
      Operations about Orders
      ## Order Model
      <SchemaDefinition schemaRef="#/components/schemas/Order" />
  - name: Organizations
    description: |
      Operations about Organizations
      ## Organization Model
      <SchemaDefinition schemaRef="#/components/schemas/Organization" />
  - name: Payments
    description: |
      Operations about Payment Transactions
      ## Payment Model
      <SchemaDefinition schemaRef="#/components/schemas/PaymentTransaction" />
  - name: Products
    description: |
      Operations about Products
      ## Product Model
      <SchemaDefinition schemaRef="#/components/schemas/Product" />
  - name: Purchases
    description: |
      Operations about Purchase Orders
      ## Purchase Model
      <SchemaDefinition schemaRef="#/components/schemas/Purchase" />
  - name: Receipts
    description: |
      Operations about Receipts
      ## Receipt Model
      <SchemaDefinition schemaRef="#/components/schemas/Receipt" />
  - name: Returns
    description: |
      Operations about Returns
      ## Return Model
      <SchemaDefinition schemaRef="#/components/schemas/Return" />
  - name: Roles
    description: |
      Operations about User Roles
      ## User Role Model
      <SchemaDefinition schemaRef="#/components/schemas/Role" />
  - name: Schedules
    description: |
      Operations about Schedules
      ## Schedule Model
      <SchemaDefinition schemaRef="#/components/schemas/Schedule" />
  - name: Shipment Boxes
    description: |
      Operations about Shipment Boxes
      ## Shipment Box Model
      <SchemaDefinition schemaRef="#/components/schemas/ShipmentBox" />
  - name: Shipping Methods
    description: |
      Operations about Shipping Methods
      ## Shipping Method Model
      <SchemaDefinition schemaRef="#/components/schemas/ShippingMethod" />
  - name: Shipping Requests
    description: |
      Operations with shipping requests. The obsolete `/shipments` path will be supported along with `/shipping_requests` until further notice.
      ## Shipping Request Model
      <SchemaDefinition schemaRef="#/components/schemas/Shipment" />
  - name: Stores
    description: |
      Operations about Stores
      ## Store Model
      <SchemaDefinition schemaRef="#/components/schemas/Store" />
  - name: Suppliers
    description: |
      Operations about Suppliers
      ## Supplier Model
      <SchemaDefinition schemaRef="#/components/schemas/Supplier" />
  - name: Trackings
    description: |
      Operations about Fulfillment Tracking `(- unused, reserved for future use)`
      ## Tracking Model
      <SchemaDefinition schemaRef="#/components/schemas/Tracking" />
  - name: Transfers
    description: |
      Operations about Transfer Orders
      ## Transfer Model
      <SchemaDefinition schemaRef="#/components/schemas/Transfer" />
  - name: User Preferences
    description: |
      Operations about User Preferences
      ## User Preference Model
      <SchemaDefinition schemaRef="#/components/schemas/UserPreferences" />
  - name: Users
    description: |
      Operations about Users
      ## User Model
      <SchemaDefinition schemaRef="#/components/schemas/User" />
  - name: Waves
    description: |
      Operations about Waves - Wave fulfillment for grouping shipment requests
      ## Wave Model
      <SchemaDefinition schemaRef="#/components/schemas/Wave" />
  - name: Webhooks
    description: |
      Operations about Webhooks
      ## Webhook Model
      <SchemaDefinition schemaRef="#/components/schemas/Webhook" />
x-tagGroups:
  - name: General
    tags:
      - Arrivals
      - Customers
      - Custom Objects
      - Contacts
      - Cycle Counts
      - Cycle Count Entries
      - Fulfillments
      - Inventory
      - Invoices
      - Labels
      - Locations
      - Location Groups
      - Orders
      - Order Statements
      - Order Statement Transactions
      - Catalogs
      - Catalog Products
      - Payments
      - Products
      - Purchases
      - Receipts
      - Returns
      - Shipping Requests
      - Shipment Boxes
      - Shipping Methods
      - Suppliers
      - Trackings
      - Transfers
      - User Preferences
  - name: Store Fulfillment
    tags:
      - Stores
      - Waves
  - name: Management
    tags:
      - Api Keys
      - Connectors
      - Event Log
      - Exceptions
      - Integrations
      - Mappings
      - Webhooks
      - Automations
      - Automation Rules
      - Automation Runs
      - Notes
  - name: Administration
    tags:
      - Accounts
      - Organizations
      - Roles
      - Users
security:
  - Pipe17KeyAuth: []
paths:
  /accounts:
    get:
      tags:
        - Accounts
      summary: List Accounts
      operationId: listAccounts
      parameters:
        - name: billingStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AccountBillingStatus'
          description: Accounts by list of billingStatus
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many accounts
        - name: deletedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts with deletedAt after this date-time
        - name: deletedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts with deletedAt before this date-time
        - name: expirationSince
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts with expiration after this date-time
        - name: expirationUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts with expiration before this date-time
        - name: isMultiOrgAllowed
          in: query
          schema:
            type: boolean
          description: Accounts by isMultiOrgAllowed
        - name: keys
          in: query
          schema:
            type: string
            default: activationKey,expirationDate,integrations,payment,roleIds,userId,orgKey,status,isMultiOrgAllowed,secondaryOrgLimit,prodOrgLimit,isRebrandingAllowed,createdAt,updatedAt
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: orgKey
          in: query
          schema:
            type: array
            items:
              type: string
          description: Accounts by list of orgKey
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: pausedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts with pausedAt after this date-time
        - name: pausedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts with pausedAt before this date-time
        - name: renewalSince
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts with renewalDate after this date-time
        - name: renewalUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts with renewalDate before this date-time
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many accounts
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AccountStatusWithDeleted'
          description: Accounts by list of status
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Accounts updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AccountsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AccountsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AccountsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AccountsListError'
  /accounts/{OrgKeyOrActivationKey}:
    get:
      tags:
        - Accounts
      summary: Fetch Account
      operationId: fetchAccount
      parameters:
        - name: OrgKeyOrActivationKey
          in: path
          description: Account OrgKey to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AccountFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AccountFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AccountFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AccountFetchError'
    put:
      tags:
        - Accounts
      summary: Update Account
      operationId: updateAccount
      parameters:
        - name: OrgKeyOrActivationKey
          in: path
          description: Account Activation key
          schema:
            type: string
          required: true
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/AccountUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/AccountUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AccountUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AccountUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AccountUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AccountUpdateError'
  /apikey:
    post:
      tags:
        - Api Keys
      summary: Create API Key
      operationId: createApiKey
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiKeyCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ApiKeyCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ApiKeyCreateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyCreateError'
    get:
      tags:
        - Api Keys
      summary: List API Keys
      operationId: listApiKeys
      parameters:
        - name: apikeyId
          in: query
          schema:
            type: array
            items:
              type: string
          description: API Keys by list of apikey ids
          style: form
          explode: false
        - name: connector
          in: query
          schema:
            type: array
            items:
              type: string
          description: List API Keys matching to provided connector id(s)
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many API Keys
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: List API Keys matching to provided integration id(s)
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: key_type,apikeyId,name,description,integration,connector,tier,environment,methods,allowedIPs,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: name
          in: query
          schema:
            type: string
          description: List API Keys matching to provided name(s)
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: List API Keys created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many API Keys
        - name: type
          in: query
          schema:
            type: string
            enum:
              - regular
              - temporary
          description: List API Keys of this type (default - all)
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: List API Keys created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: List API Keys updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: List API Keys updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeysListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeysListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeysListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeysListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeysListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeysListError'
  /apikey/{ApiKey}:
    get:
      tags:
        - Api Keys
      summary: Fetch API Key
      operationId: fetchApiKey
      parameters:
        - name: ApiKey
          in: path
          description: The id or value of apikey, or "self" for reference to the X-Pipe17-Key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyFetchError'
    put:
      tags:
        - Api Keys
      summary: Update API Key
      operationId: updateApiKey
      parameters:
        - name: ApiKey
          in: path
          description: The id or value of apikey, or "self" for reference to the X-Pipe17-Key
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiKeyUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ApiKeyUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ApiKeyUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyUpdateError'
  /apikey/{ApiKey}/value:
    get:
      tags:
        - Api Keys
      summary: Fetch API Key Info, including the key value
      operationId: fetchApiKeyValue
      parameters:
        - name: ApiKey
          in: path
          description: The id or value of apikey, or "self" for reference to the X-Pipe17-Key
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyValueFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyValueFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyValueFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyFetchError'
  /apikey/{ApiKey}/rotate:
    post:
      tags:
        - Api Keys
      summary: Rotate Api Key
      operationId: rotateApiKey
      parameters:
        - name: ApiKey
          in: path
          description: The id or value of apikey, or "self" for reference to the X-Pipe17-Key
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyRotateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyRotateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ApiKeyRotateResponse'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /appeasements:
    post:
      tags:
        - Appeasements
      summary: Create Appeasement
      operationId: createAppeasement
      description: |
        Create an appeasement for an order. Requires JWT authentication (API keys other than master key are not permitted).
        A Redis lock is acquired on the order to prevent concurrent appeasement creation.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppeasementCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCreateResponse'
        '207':
          description: |
            The appeasement was created, but one or more of its `cancelation` refunds
            could not be fully applied to the order or to the shipping requests holding
            the canceled units. The appeasement is the financial record and is never
            rolled back, so `appeasement` is present and valid; `errors` lists what did
            not apply, and those units may still be shipped until it is reconciled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCreatePartialResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCreateError'
    get:
      tags:
        - Appeasements
      summary: List Appeasements
      operationId: listAppeasements
      parameters:
        - name: appeasementId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of appeasementId
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many appeasements
        - name: createdBy
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of createdBy userId
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of extOrderId
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: appeasementId,orderId,extOrderId,status,refunds,currency,note,createdBy,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: orderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of orderId
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve appeasements created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many appeasements
        - name: status
          in: query
          schema:
            $ref: '#/components/schemas/AppeasementStatus'
          description: Retrieve by status
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve appeasements created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve appeasements updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve appeasements updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementsListError'
  /appeasements/{AppeasementId}:
    get:
      tags:
        - Appeasements
      summary: Fetch Appeasement
      operationId: fetchAppeasement
      parameters:
        - name: AppeasementId
          in: path
          description: ID of appeasement to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementFetchError'
    put:
      tags:
        - Appeasements
      summary: Update Appeasement
      description: |
        Only the `note` field can be updated. Refunds are immutable after creation.
      operationId: updateAppeasement
      parameters:
        - name: AppeasementId
          in: path
          description: ID of appeasement to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppeasementUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementUpdateError'
  /appeasement_codes:
    post:
      tags:
        - Appeasement Codes
      summary: Create Appeasement Code
      operationId: createAppeasementCode
      description: |
        Create a new appeasement code that defines a reason and refund configuration.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppeasementCodeCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCodeCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCodeCreateError'
    get:
      tags:
        - Appeasement Codes
      summary: List Appeasement Codes
      operationId: listAppeasementCodes
      parameters:
        - name: appeasementCodeId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of appeasementCodeId
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many appeasement codes
        - name: createdBy
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of createdBy userId
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: appeasementCodeId,name,status,scope,amount,refundType,placement,version,authorizedRoles,description,createdBy,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: name
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of name
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: refundType
          in: query
          schema:
            $ref: '#/components/schemas/AppeasementCodeRefundType'
          description: Retrieve by refundType
        - name: scope
          in: query
          schema:
            $ref: '#/components/schemas/AppeasementCodeScope'
          description: Retrieve by scope
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve appeasement codes created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many appeasement codes
        - name: status
          in: query
          schema:
            $ref: '#/components/schemas/AppeasementCodeStatus'
          description: Retrieve by status
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve appeasement codes created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve appeasement codes updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve appeasement codes updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCodesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCodesListError'
  /appeasement_codes/{AppeasementCodeId}:
    delete:
      tags:
        - Appeasement Codes
      summary: Delete Appeasement Code
      operationId: deleteAppeasementCode
      parameters:
        - name: AppeasementCodeId
          in: path
          description: ID of appeasement code to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Appeasement Codes
      summary: Fetch Appeasement Code
      operationId: fetchAppeasementCode
      parameters:
        - name: AppeasementCodeId
          in: path
          description: ID of appeasement code to fetch
          required: true
          schema:
            type: string
        - name: version
          in: query
          description: Fetch a specific historical version of the appeasement code
          required: false
          schema:
            type: number
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCodeFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCodeFetchError'
    put:
      tags:
        - Appeasement Codes
      summary: Update Appeasement Code
      description: |
        Update an appeasement code. The `scope` field is immutable after creation.
        Each update increments the version and stores the previous state in the versions history.
      operationId: updateAppeasementCode
      parameters:
        - name: AppeasementCodeId
          in: path
          description: ID of appeasement code to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppeasementCodeUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCodeUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppeasementCodeUpdateError'
  /arrivals:
    post:
      tags:
        - Arrivals
      summary: Create Arrival Notifications
      description: |
        Uniqueness constraints:
        - arrival.transferId, arrival.fulfillmentId (when defined both)
        - arrival.purchaseId, arrival.fulfillmentId (when defined both)
        - arrival.fulfillmentId (when defined)

        Uniqueness constraints within organization:
        - arrival.extArrivalId (when defined)
        - arrival.extArrivalApiId, arrival.integration (when extArrivalApiId defined)
        - arrival.extReferenceId, arrival.integration (when extReferenceId defined)
      operationId: createArrivals
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ArrivalsCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ArrivalsCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ArrivalsCreateRequest'
        required: true
      responses:
        '202':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrivalsCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrivalsCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsCreateError'
    get:
      tags:
        - Arrivals
      summary: List Arrival Notifications
      operationId: listArrivals
      parameters:
        - name: arrivalId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by list of arrivalId
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many arrivals
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Soft deleted arrivals
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by list of categories of the arrival related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by list of types of the arrival related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extArrivalId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by list extArrivalId
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by list external orders (PO or TO)
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by `extReferenceId` list
          style: form
          explode: false
        - name: fromLocationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by list fromLocationId
          style: form
          explode: false
        - name: fulfillmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by list fulfillmentId
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Arrivals containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals of these integrations.
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: arrivalId,status,transferId,purchaseId,extOrderId,expectedArrivalDate,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: purchaseId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by list purchase orders
          style: form
          explode: false
        - $ref: '#/components/parameters/requestorId'
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Arrivals created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many arrivals
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ArrivalStatus'
          description: Arrivals in specific status
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: toLocationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by list toLocationId
          style: form
          explode: false
        - name: transferId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Arrivals by list transfer orders
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Arrivals created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Arrivals updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Arrivals updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrivalsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrivalsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsListError'
    delete:
      tags:
        - Arrivals
      summary: Delete Multiple Arrivals
      operationId: deleteArrivals
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: arrivalId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete arrivals by list of arrivalId
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many arrivals
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted arrivals
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete arrivals by list external orders (PO or TO)
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete arrivals by `extReferenceId` list
          style: form
          explode: false
        - name: fulfillmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete arrivals by list fulfillmentId
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete arrivals of these integrations.
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete arrivals assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: purchaseId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete arrivals by list purchase orders
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete arrivals created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many arrivals
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ArrivalStatus'
          description: Delete arrivals in specific status
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: transferId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete arrivals by list transfer orders
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete arrivals created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete arrivals updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete arrivals updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrivalsDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrivalsDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ArrivalsDeleteError'
  /arrivals/{ArrivalId}:
    delete:
      tags:
        - Arrivals
      summary: Delete Arrival
      operationId: deleteArrival
      parameters:
        - name: ArrivalId
          in: path
          description: Id, `ext:{extArrivalId}`, `api:{extArrivalApiId}`, or `ref:{extReferenceId}` of arrival to delete
          required: true
          schema:
            type: string
        - name: nested
          in: query
          description: Delete nested entities
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Arrivals
      summary: Fetch Arrival Notification
      operationId: fetchArrival
      parameters:
        - name: ArrivalId
          in: path
          description: Id, `ext:{extArrivalId}`, `api:{extArrivalApiId}`, or `ref:{extReferenceId}` of arrival to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrivalFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ArrivalFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ArrivalFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrivalFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ArrivalFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ArrivalFetchError'
    put:
      tags:
        - Arrivals
      summary: Update Arrival Notification
      description: |
        Uniqueness constraints:
        - arrival.transferId, arrival.fulfillmentId (when defined both)
        - arrival.purchaseId, arrival.fulfillmentId (when defined both)
        - arrival.fulfillmentId (when defined)

        Uniqueness constraints within organization:
        - arrival.extArrivalId (when defined)
        - arrival.extArrivalApiId, arrival.integration (when extArrivalApiId defined)
        - arrival.extReferenceId, arrival.integration (when extReferenceId defined)
      operationId: updateArrival
      parameters:
        - name: ArrivalId
          in: path
          description: Id, `ext:{extArrivalId}`, `api:{extArrivalApiId}`, or `ref:{extReferenceId}` of arrival to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ArrivalUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ArrivalUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ArrivalUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrivalUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ArrivalUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ArrivalUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrivalUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ArrivalUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ArrivalUpdateError'
  /arrivals/{ArrivalId}/sync:
    post:
      tags:
        - Arrivals
      summary: Sync Arrivals
      description: Trigger the arrivals sync
      operationId: syncArrivals
      parameters:
        - name: ArrivalId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /automations:
    get:
      tags:
        - Automations
      summary: List Automations
      operationId: listAutomations
      parameters:
        - name: automationId
          in: query
          schema:
            $ref: '#/components/schemas/AutomationsListFilterAutomationId'
          description: Filter by list of automationId
        - $ref: '#/components/parameters/count'
        - $ref: '#/components/parameters/deleted'
        - name: isEnabled
          in: query
          schema:
            type: boolean
        - name: isPublic
          in: query
          schema:
            type: boolean
          description: If true, return public automations
        - name: keys
          in: query
          schema:
            type: string
            default: automationId,isEnabled,trigger,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - $ref: '#/components/parameters/order'
        - $ref: '#/components/parameters/orgKey'
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - $ref: '#/components/parameters/since'
        - $ref: '#/components/parameters/skip'
        - name: trigger
          in: query
          schema:
            $ref: '#/components/schemas/AutomationsListFilterTrigger'
          description: Filter by matching trigger
        - $ref: '#/components/parameters/until'
        - $ref: '#/components/parameters/updatedSince'
        - $ref: '#/components/parameters/updatedUntil'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationListError'
    post:
      tags:
        - Automations
      summary: Create Automation
      description: |
        Uniqueness constraints:
        - automation.trigger
      operationId: createAutomation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutomationCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/AutomationCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/AutomationCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationCreateError'
  /automations/{AutomationId}:
    put:
      tags:
        - Automations
      summary: Update Automation
      operationId: updateAutomation
      parameters:
        - name: AutomationId
          in: path
          description: Automation Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutomationUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/AutomationUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/AutomationUpdateRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationUpdateError'
    get:
      tags:
        - Automations
      summary: Fetch Automation
      operationId: fetchAutomation
      parameters:
        - name: AutomationId
          in: path
          description: Id of the automation to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationFetchError'
    delete:
      tags:
        - Automations
      summary: Delete Automation
      operationId: deleteAutomation
      parameters:
        - name: AutomationId
          in: path
          description: Automation Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /automations/{AutomationId}/set-rule-order:
    post:
      tags:
        - Automations
      summary: Set Automation Rule Assessment Order
      operationId: setAutomationRuleOrder
      parameters:
        - name: AutomationId
          in: path
          description: Automation Id to update
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutomationRuleOrderRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/AutomationRuleOrderRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/AutomationRuleOrderRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /automation_rules:
    get:
      tags:
        - Automation Rules
      summary: List Automation Rules
      operationId: listAutomationRules
      parameters:
        - name: automationId
          in: query
          schema:
            $ref: '#/components/schemas/AutomationRulesListFilterAutomationId'
          description: Filter by list of automationIds
        - name: automationRuleId
          in: query
          schema:
            $ref: '#/components/schemas/AutomationRulesListFilterAutomationRuleId'
          description: Filter by list of automationRuleIds
        - $ref: '#/components/parameters/count'
        - $ref: '#/components/parameters/deleted'
        - name: isDefault
          in: query
          schema:
            type: boolean
          description: Filter by isDefault
        - name: isEnabled
          in: query
          schema:
            type: boolean
          description: Filter by isEnabled
        - name: isPublic
          in: query
          schema:
            type: boolean
          description: If true, only public automation rules will be returned
        - name: keys
          in: query
          schema:
            type: string
            default: automationId,automationRuleId,isEnabled,createdAt,updatedAt,orgKey,assessmentOrder,name,description,isDefault
          description: Return these top-level fields
        - $ref: '#/components/parameters/order'
        - $ref: '#/components/parameters/orgKey'
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - $ref: '#/components/parameters/since'
        - $ref: '#/components/parameters/skip'
        - $ref: '#/components/parameters/until'
        - $ref: '#/components/parameters/updatedSince'
        - $ref: '#/components/parameters/updatedUntil'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRulesListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRulesListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRulesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRulesListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRulesListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRulesListError'
    post:
      tags:
        - Automation Rules
      summary: Create Automation Rule
      description: |
        Uniqueness constraints:
        - automationId + name
      operationId: createAutomationRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutomationRuleCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/AutomationRuleCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/AutomationRuleCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRuleCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRuleCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleCreateError'
  /automation_rules/{AutomationRuleId}:
    get:
      tags:
        - Automation Rules
      summary: Fetch Automation Rule
      operationId: fetchAutomationRule
      parameters:
        - name: AutomationRuleId
          in: path
          description: Id of the automation rule to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRuleFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRuleFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleFetchError'
    put:
      tags:
        - Automation Rules
      summary: Update Automation Rule
      operationId: updateAutomationRule
      parameters:
        - name: AutomationRuleId
          in: path
          description: Id of the automation rule to update
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutomationRuleUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/AutomationRuleUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/AutomationRuleUpdateRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRuleUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRuleUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRuleUpdateError'
    delete:
      tags:
        - Automation Rules
      summary: Delete Automation Rule
      operationId: deleteAutomationRule
      parameters:
        - name: AutomationRuleId
          in: path
          description: Id of the Automation Rule to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /automation_runs:
    post:
      tags:
        - Automation Runs
      summary: Create AutomationRun
      operationId: createAutomationRun
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutomationRunCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/AutomationRunCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/AutomationRunCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRunCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRunCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunCreateError'
    get:
      tags:
        - Automation Runs
      summary: List Automation Runs
      operationId: listAutomationRuns
      parameters:
        - name: automationId
          in: query
          description: Filter by list of automationIds
          schema:
            $ref: '#/components/schemas/AutomationRunsListFilterAutomationId'
        - name: automationRuleId
          in: query
          description: Filter by list of automationRuleIds
          schema:
            $ref: '#/components/schemas/AutomationRunsListFilterAutomationRuleId'
        - name: automationRunId
          in: query
          description: Filter by list of automationRunIds
          schema:
            $ref: '#/components/schemas/AutomationRunsListFilterAutomationRunId'
        - $ref: '#/components/parameters/count'
        - $ref: '#/components/parameters/deleted'
        - name: entityId
          in: query
          description: Filter by list of entityIds
          schema:
            $ref: '#/components/schemas/AutomationRunsListFilterEntityId'
        - name: keys
          in: query
          schema:
            type: string
            default: orgKey,automationId,automationRunId,entityId,orgKey,createdAt,updatedAt,status,completedAt,failedAt,errorMessage,trigger
          description: Return these top-level fields
        - $ref: '#/components/parameters/order'
        - $ref: '#/components/parameters/orgKey'
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - $ref: '#/components/parameters/since'
        - $ref: '#/components/parameters/skip'
        - name: status
          in: query
          description: Filter by automation run status
          schema:
            $ref: '#/components/schemas/AutomationRunsListFilterStatus'
        - $ref: '#/components/parameters/until'
        - $ref: '#/components/parameters/updatedSince'
        - $ref: '#/components/parameters/updatedUntil'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRunsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRunsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunsListError'
  /automation_runs/{AutomationRunId}:
    get:
      tags:
        - Automation Runs
      summary: Fetch Automation Run
      operationId: fetchAutomationRun
      parameters:
        - name: AutomationRunId
          in: path
          description: Id of the automation run
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRunFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRunFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunFetchError'
    delete:
      tags:
        - Automation Runs
      summary: Delete Automation Run
      operationId: deleteAutomationRun
      parameters:
        - name: AutomationRunId
          in: path
          description: Id of the Automation Run to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    put:
      tags:
        - Automation Runs
      summary: Update Automation Run
      operationId: updateAutomationRun
      parameters:
        - name: AutomationRunId
          in: path
          description: Id of the automation run to update
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutomationRunUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/AutomationRunUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/AutomationRunUpdateRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRunUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationRunUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/AutomationRunUpdateError'
  /customers:
    post:
      tags:
        - Customers
      summary: Create Customer
      operationId: createCustomer
      description: |
        Uniqueness constraints within organization:
        - customer.extCustomerId (when defined)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CustomerCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CustomerCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomerCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomerCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomerCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomerCreateError'
    get:
      tags:
        - Customers
      summary: List Customers
      operationId: listCustomers
      parameters:
        - name: catalogIds
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of assigned catalog Ids
          style: form
          explode: false
        - name: company
          in: query
          schema:
            type: string
          description: Retrieve customers by company name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many customers
        - name: customerId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of customerId
          style: form
          explode: false
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve soft deleted customers
        - name: displayName
          in: query
          schema:
            type: string
          description: Retrieve customers by displayName (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: email
          in: query
          schema:
            type: string
          description: Retrieve customers by email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: emailAddr
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of billing/shippingAddress.email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
          style: form
          explode: false
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve customers by list of categories of the customer related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve customers by list of types of the customer related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extCustomerId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of extCustomerId
          style: form
          explode: false
        - name: firstName
          in: query
          schema:
            type: string
          description: Retrieve customers by firstName (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Retrieve customers containing a source document
        - name: keys
          in: query
          schema:
            type: string
            default: customerId,status,firstName,lastName,extCustomerId,displayName,shippingAddress,billingAddress,creditCard,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: lastName
          in: query
          schema:
            type: string
          description: Retrieve customers by lastName (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: linkedCustomerId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of linked customerId
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: phone
          in: query
          schema:
            type: string
          description: Retrieve customers by phone (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve customers created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many customers
        - name: status
          in: query
          schema:
            $ref: '#/components/schemas/CustomerStatus'
          description: Retrieve by status
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: type
          in: query
          schema:
            $ref: '#/components/schemas/CustomerType'
          description: Retrieve by status
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve customers created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve customers updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve customers updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomersListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomersListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomersListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomersListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomersListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomersListError'
    delete:
      tags:
        - Customers
      summary: Delete Multiple Customers
      operationId: deleteCustomers
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many customers
        - name: customerId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete customers by list of customerId
          style: form
          explode: false
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted customers
        - name: extCustomerId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete customers by list of extCustomerId
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete customers assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete customers created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many customers
        - name: status
          in: query
          schema:
            $ref: '#/components/schemas/CustomerStatus'
          description: Delete by status
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete customers created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete customers updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete customers updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomersDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomersDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomersDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomersDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomersDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomersDeleteError'
  /customers/{CustomerId}:
    delete:
      tags:
        - Customers
      summary: Delete Customer
      operationId: deleteCustomer
      parameters:
        - name: CustomerId
          in: path
          description: ID or `ext:{extCustomerId}` of customer to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Customers
      summary: Fetch Customer
      operationId: fetchCustomer
      parameters:
        - name: CustomerId
          in: path
          description: ID or `ext:{extCustomerId}` of customer to fetch
          required: true
          schema:
            type: string
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomerFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomerFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomerFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomerFetchError'
    put:
      tags:
        - Customers
      summary: Update Customer
      description: |
        Uniqueness constraints within organization:
        - customer.extCustomerId (when defined)
      operationId: updateCustomer
      parameters:
        - name: CustomerId
          in: path
          description: ID or `ext:{extCustomerId}` of customer to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CustomerUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CustomerUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomerUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomerUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomerUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomerUpdateError'
  /customers/{CustomerId}/sync:
    post:
      tags:
        - Customers
      summary: Sync Customers
      description: Trigger the customers sync
      operationId: syncCustomers
      parameters:
        - name: CustomerId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /custom_objects:
    post:
      tags:
        - Custom Objects
      summary: Create Custom Objects
      operationId: createCustomObjects
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomObjectsCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CustomObjectsCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CustomObjectsCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomObjectsCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectsCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectsCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomObjectsCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectsCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectsCreateError'
    get:
      tags:
        - Custom Objects
      summary: List Custom Objects
      operationId: listCustomObjects
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many objects
        - name: customObjectId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by 'customObjectId' list
          style: form
          explode: false
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by list of categories of the object related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by list of types of the object related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extEntityId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by 'extEntityId' list
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by 'integration' list
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: customObjectId,extEntityId,relatedEntityId,relatedEntityType,type,createdAt,updatedAt,orgKey,integration
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: relatedEntityId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by 'relatedEntityId' list
          style: form
          explode: false
        - name: relatedEntityType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/EntityName'
          description: Select by 'relatedEntityType' list
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Select objects created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many objects
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: type
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by 'type' list
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Select objects created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Select objects updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Select objects updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomObjectListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomObjectListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectListError'
  /custom_objects/{CustomObjectId}:
    delete:
      tags:
        - Custom Objects
      summary: Delete Custom Object
      operationId: deleteCustomObject
      parameters:
        - name: CustomObjectId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Custom Objects
      summary: Fetch Custom Object
      operationId: fetchCustomObject
      parameters:
        - name: CustomObjectId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomObjectFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomObjectFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectFetchError'
    put:
      tags:
        - Custom Objects
      summary: Update Custom Object
      operationId: updateCustomObject
      parameters:
        - name: CustomObjectId
          in: path
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Fields of the updated object that should be returned (- comma separated string, "*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomObjectUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CustomObjectUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CustomObjectUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomObjectUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomObjectUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CustomObjectUpdateError'
  /contacts:
    post:
      tags:
        - Contacts
      summary: Create Contact
      operationId: createContact
      description: |
        Uniqueness constraints within organization:
        - contact.extContactId (when defined)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ContactCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ContactCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ContactCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ContactCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ContactCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ContactCreateError'
    get:
      tags:
        - Contacts
      summary: List Contacts
      operationId: listContacts
      parameters:
        - name: contactId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of contactId
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many contacts
        - name: emailAddr
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of shippingAddress.email
          style: form
          explode: false
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve contacts by list of categories of the contact related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve contacts by list of types of the contact related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extContactId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of extContactId
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: contactId,status,extContactId,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve contacts created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many contacts
        - name: status
          in: query
          schema:
            $ref: '#/components/schemas/ContactStatus'
          description: Retrieve by status
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve contacts created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve contacts updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve contacts updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ContactsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ContactsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ContactsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ContactsListError'
  /contacts/{ContactId}:
    delete:
      tags:
        - Contacts
      summary: Delete Contact
      operationId: deleteContact
      parameters:
        - name: ContactId
          in: path
          description: ID or `ext:{extContactId}` of contact to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Contacts
      summary: Fetch Contact
      operationId: fetchContact
      parameters:
        - name: ContactId
          in: path
          description: ID or `ext:{extContactId}` of contact to fetch
          required: true
          schema:
            type: string
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ContactFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ContactFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ContactFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ContactFetchError'
    put:
      tags:
        - Contacts
      summary: Update Contact
      description: |
        Uniqueness constraints within organization:
        - contact.extContactId (when defined)
      operationId: updateContact
      parameters:
        - name: ContactId
          in: path
          description: ID or `ext:{extContactId}` of contact to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ContactUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ContactUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ContactUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ContactUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ContactUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ContactUpdateError'
  /cycle_counts:
    post:
      tags:
        - Cycle Counts
      summary: Open count
      description: |
        Open cycle count for inventory in a specific location.
        - `!` The request does not include any information about SKUs.
        - Creates new record in the cycle_counts collection
        - Locks the possibility to create another cycle-count instance for the same location
        - Enables submission of counted values with the cycle_count_entries API
      operationId: openCycleCount
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CycleCountOpenRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CycleCountOpenRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CycleCountOpenRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountOpenResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountOpenResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountOpenResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountOpenError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountOpenError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountOpenError'
    get:
      tags:
        - Cycle Counts
      summary: List counts
      operationId: listCycleCounts
      parameters:
        - $ref: '#/components/parameters/count'
        - name: cycleCountId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by cycleCountId list
          style: form
          explode: false
        - name: extCycleCountId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by extCycleCountId list
          style: form
          explode: false
        - $ref: '#/components/parameters/keys'
        - name: locationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by locationId list
          style: form
          explode: false
        - $ref: '#/components/parameters/order'
        - $ref: '#/components/parameters/pagination'
        - $ref: '#/components/parameters/since'
        - $ref: '#/components/parameters/skip'
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CycleCountStatus'
          description: Select by status value list
          style: form
          explode: false
        - name: storeId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by storeId list
          style: form
          explode: false
        - $ref: '#/components/parameters/until'
        - $ref: '#/components/parameters/updatedSince'
        - $ref: '#/components/parameters/updatedUntil'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountsListError'
  /cycle_counts/{CycleCountId}/commit:
    post:
      tags:
        - Cycle Counts
      summary: Commit count
      description: |
        Confirms that the submission of the calculated quantities has been completed.
      operationId: commitCycleCount
      parameters:
        - name: CycleCountId
          in: path
          description: Cycle count ID or `ext:{extCycleCountId}`
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Returned fields of the cycle count object (comma seperated, "*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CycleCountCommitRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CycleCountCommitRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CycleCountCommitRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountCommitResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountCommitResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountCommitResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountCommitError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountCommitError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountCommitError'
  /cycle_counts/{CycleCountId}/approve:
    post:
      tags:
        - Cycle Counts
      summary: Approve count
      description: |
        Confirms that the variances recorded in the cycle-count's entries are right and must be corrected in ledger.
      operationId: approveCycleCount
      parameters:
        - name: CycleCountId
          in: path
          description: Cycle count ID or `ext:{extCycleCountId}`
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Returned fields of the cycle count object (comma seperated, "*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CycleCountApproveRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CycleCountApproveRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CycleCountApproveRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountApproveResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountApproveResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountApproveResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountApproveError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountApproveError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountApproveError'
  /cycle_counts/{CycleCountId}/post:
    post:
      tags:
        - Cycle Counts
      summary: Post count
      description: |
        Signals the background workers to run adjusting the ledger.
        - The "List"/"Fetch" endpoints of the cycle_count_entries API may be used for monitoring the ledger adjustment progress.
      operationId: postCycleCount
      parameters:
        - name: CycleCountId
          in: path
          description: Cycle count ID or `ext:{extCycleCountId}`
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Returned fields of the cycle count object (comma seperated, "*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CycleCountPostRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CycleCountPostRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CycleCountPostRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountPostResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountPostResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountPostResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountPostError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountPostError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountPostError'
  /cycle_counts/{CycleCountId}/reopen:
    post:
      tags:
        - Cycle Counts
      summary: Reopen count
      description: |
        Sends the `approved` count back to `open` state for re-submission. So that the "counter" can correct disputed entries of the adjustment job.
      operationId: reopenCycleCount
      parameters:
        - name: CycleCountId
          in: path
          description: Cycle count ID or `ext:{extCycleCountId}`
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Returned fields of the cycle count object (comma seperated, "*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CycleCountReopenRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CycleCountReopenRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CycleCountReopenRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountReopenResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountReopenResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountReopenResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountReopenError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountReopenError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountReopenError'
  /cycle_counts/{CycleCountId}/cancel:
    post:
      tags:
        - Cycle Counts
      summary: Cancel count
      description: |
        Abandons a cycle count that's no longer relevant.
        - Does not affect cycle-count entries in the cycle_count_entries collection
        - Allows to open new cycle-count for the same inventory location
      operationId: cancelCycleCount
      parameters:
        - name: CycleCountId
          in: path
          description: Cycle count ID or `ext:{extCycleCountId}`
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Returned fields of the cycle count object (comma seperated, "*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CycleCountCancelRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CycleCountCancelRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CycleCountCancelRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountCancelResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountCancelResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountCancelResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountCancelError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountCancelError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountCancelError'
  /cycle_counts/{CycleCountId}:
    delete:
      tags:
        - Cycle Counts
      summary: Delete count
      description: |
        soft-delete:
        - Does not affect cycle-count entries in the cycle_count_entries collection
        - Background workers should stop the ledger adjustment job if it was running.
        hard-delete:
        - Deletes cycle-count entries in the cycle_count_entries collection
        - Deletes cycle-count instance in the cycle_counts collection
        - Background workers should stop the ledger adjustment job if it was running.
      operationId: deleteCycleCount
      parameters:
        - name: CycleCountId
          in: path
          description: Cycle count ID or `ext:{extCycleCountId}`
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Cycle Counts
      summary: Fetch count
      operationId: fetchCycleCount
      parameters:
        - name: CycleCountId
          in: path
          description: Cycle count ID or `ext:{extCycleCountId}`
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountFetchError'
    put:
      tags:
        - Cycle Counts
      summary: Update count
      operationId: updateCycleCount
      parameters:
        - name: CycleCountId
          in: path
          description: Cycle count ID or `ext:{extCycleCountId}`
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Returned fields of the cycle count object (comma seperated, "*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CycleCountUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CycleCountUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CycleCountUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountUpdateError'
  /cycle_count_entries:
    post:
      tags:
        - Cycle Count Entries
      summary: Create count entries
      description: |
        Submit the physical quantities the "counter" found for specified cycle counts and SKUs.
        - Creates/replaces entry in the cycle_count_entries collection for each provided pair <cycleCountId,sku>
        - Duplicates of the <cycleCountId,sku> pair in the same request are rejected.
        - If the specified physical quantity is <= 0, the entry is rejected, and the remaining ones are processed.
        - Each entry will include: what counter found, what found in ledger, and variance at a time point
        - The time point can be specified in the request. The cycle count opening time is used by default.
        - The number of the "submit" requests for each cycle count is not limited. Cumulative effect is a set of entries in the cycle_count_entries collection, that represents a "ledger adjustment job" of the cycle count for background workers.
      operationId: createCycleCountEntries
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CycleCountEntriesCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CycleCountEntriesCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CycleCountEntriesCreateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesCreateError'
    get:
      tags:
        - Cycle Count Entries
      summary: List count entries
      operationId: listCycleCountEntries
      parameters:
        - $ref: '#/components/parameters/count'
        - name: cycleCountEntryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by cycleCountEntryId list
          style: form
          explode: false
        - name: cycleCountId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by cycleCountId list
          style: form
          explode: false
        - $ref: '#/components/parameters/keys'
        - $ref: '#/components/parameters/order'
        - $ref: '#/components/parameters/pagination'
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/since'
        - $ref: '#/components/parameters/skip'
        - name: sku
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by sku list
          style: form
          explode: false
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CycleCountEntryStatus'
          description: Select by status value list
          style: form
          explode: false
        - $ref: '#/components/parameters/until'
        - $ref: '#/components/parameters/updatedSince'
        - $ref: '#/components/parameters/updatedUntil'
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntriesListError'
  /cycle_count_entries/{CycleCountEntryId}:
    delete:
      tags:
        - Cycle Count Entries
      summary: Delete count entry
      operationId: deleteCycleCountEntry
      parameters:
        - name: CycleCountEntryId
          in: path
          description: Cycle-count entry ID to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Cycle Count Entries
      summary: Fetch count entry
      operationId: fetchCycleCountEntry
      parameters:
        - name: CycleCountEntryId
          in: path
          description: Cycle-count entry ID to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountEntryFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntryFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntryFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CycleCountEntryFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntryFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CycleCountEntryFetchError'
  /events:
    post:
      tags:
        - Event Log
      summary: Create event
      operationId: createEvent
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventCreateData'
          application/xml:
            schema:
              $ref: '#/components/schemas/EventCreateData'
          text/xml:
            schema:
              $ref: '#/components/schemas/EventCreateData'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/EventCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/EventCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/EventCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/EventCreateError'
    get:
      tags:
        - Event Log
      summary: List Events
      operationId: listEvents
      parameters:
        - name: apikeyId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch by list of api keys
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Max number of events to return
        - name: direction
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Direction'
          description: Fetch by list of direction
          style: form
          explode: false
        - name: entityId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch by list of entityId
          style: form
          explode: false
        - name: entityType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch by list of entity types
          style: form
          explode: false
        - name: eventId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch by list of eventId
          style: form
          explode: false
        - name: extEntityId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch by list of extEntityId
          style: form
          explode: false
        - name: identity
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch by identity ids (- either integration, apikeyId, or userId)
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch by list of integrations
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: eventId,source,status,operation,direction,entityType,entityId,integration,extEntityId,requestId,userId,createdAt,updatedAt,orgKey
          description: Return these top-level fields ('request' and 'response' fields are not returned, ignored in the 'keys')
        - name: keywords
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch by keywords
          style: form
          explode: false
        - name: operation
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/EventOperation'
          description: Fetch by list of operation types
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch events triggered after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Number of events to skip
        - name: source
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/EventRequestSource'
          description: Fetch by list of event sources
          style: form
          explode: false
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/EventRequestStatus'
          description: Fetch by list of event statuses
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch events triggered before this date-time
        - name: userId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch by list of userId
          style: form
          explode: false
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/EventsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/EventsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/EventsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/EventsListError'
  /events/{EventId}:
    get:
      tags:
        - Event Log
      summary: Fetch Event
      operationId: fetchEvent
      parameters:
        - name: EventId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/EventFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/EventFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/EventFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/EventFetchError'
    put:
      tags:
        - Event Log
      summary: Update event entry
      operationId: updateEvent
      parameters:
        - name: EventId
          in: path
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/EventUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/EventUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/EventUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/EventUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/EventUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/EventUpdateError'
  /events/{EventId}/replay:
    post:
      tags:
        - Event Log
      summary: Replay event entry
      operationId: replayEvent
      parameters:
        - name: EventId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventReplayResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/EventReplayResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/EventReplayResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventReplayError'
            application/xml:
              schema:
                $ref: '#/components/schemas/EventReplayError'
            text/xml:
              schema:
                $ref: '#/components/schemas/EventReplayError'
  /exceptions:
    post:
      tags:
        - Exceptions
      summary: Create Exception
      description: |
        Uniqueness constraints within organization:
        - exception.integration, exception.entityType, exception.exceptionType, exception.status, exception.entityId (when status==active)

        When `entityId` holds several IDs the constraint applies to each of them
        individually: an entity can have at most one active exception of a given type.

        Creating an exception therefore settles the active exceptions of the same
        integration, entityType and exceptionType that share any entity with it:
        - one whose entities are all covered by the new exception is dismissed;
        - one that is only partly covered keeps its ID and its creation date, and is
          narrowed to the entities the new exception does not name. Its `relatedEntityId`,
          `extEntityId` and `extRelatedEntityId` are re-derived to match.

        An entity named by the new exception is therefore always covered by it, and one
        it does not name keeps whatever exception it already had.
      operationId: createException
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExceptionCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ExceptionCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ExceptionCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExceptionCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ExceptionCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExceptionCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ExceptionCreateError'
    get:
      tags:
        - Exceptions
      summary: List Exceptions
      operationId: listExceptions
      parameters:
        - name: autoEngUpdateStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
          description: Return exceptions with the specified autoEngUpdateStatus values
          style: form
          explode: false
        - name: autoEngUpdateStatusUpdatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch with autoEngUpdateStatus updated after this date-time
        - name: autoEngUpdateStatusUpdatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch with autoEngUpdateStatus updated before this date-time
        - name: categoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Exceptions by categoryId-list
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Max number of exceptions to return
        - name: entityId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Exceptions related to this list of entities
          style: form
          explode: false
        - name: entityType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ExceptionEntityName'
          description: Exceptions related to list of entity types
          style: form
          explode: false
        - name: exceptionDetails
          in: query
          schema:
            type: array
            items:
              type: string
          description: 'Exceptions with the status `active`, which contain specified terms in the `exceptionDetails` field (wildcards `*` and `?` are supported in any term, but not as the first character). This parameter switches the query to a full-text search, which does not support regular expressions: combining it with a `/pattern/` value in any other filter is rejected with a 400. To match one ID out of a list, filter on that ID directly.'
          style: form
          explode: false
        - name: exceptionId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Exceptions by exceptionId-list
          style: form
          explode: false
        - name: exceptionPriority
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ExceptionPriority'
          description: Exceptions by exceptionPriority-list
          style: form
          explode: false
        - name: exceptionSeverity
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ExceptionSeverity'
          description: Exceptions by exceptionSeverity-list
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ExceptionType'
          description: Exceptions by exceptionType-list
          style: form
          explode: false
        - name: extEntityId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Exceptions related to this list of entities. `,` and `\` are reserved inside a value and escaped as `\,` and `\\` -- written with a single backslash in the URL, since no JSON escaping applies here.
          style: form
          explode: false
        - name: extRelatedEntityId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Exceptions related to this list of related entities. `,` and `\` are reserved inside a value and escaped as `\,` and `\\` -- written with a single backslash in the URL, since no JSON escaping applies here.
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Exceptions created by listed integrations
          style: form
          explode: false
        - name: integrationOwned
          in: query
          schema:
            type: boolean
          description: Exceptions created by current integration only
        - name: keys
          in: query
          schema:
            type: string
            default: exceptionId,categoryId,exceptionType,exceptionDetails,entityId,entityType,relatedEntityId,relatedEntityType,extEntityId,extRelatedEntityId,status,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: relatedEntityId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Exceptions related to this list of related entities
          style: form
          explode: false
        - name: relatedEntityType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ExceptionEntityName'
          description: Exceptions related to list of related entity types
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Exceptions created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Number of exceptions to skip
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ExceptionStatus'
          description: Exceptions by status-list
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Exceptions created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Exceptions updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Exceptions updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExceptionsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ExceptionsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExceptionsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ExceptionsListError'
  /exceptions/{ExceptionId}:
    delete:
      tags:
        - Exceptions
      summary: Delete Exception
      operationId: deleteException
      parameters:
        - name: ExceptionId
          in: path
          description: Exception ID to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Exceptions
      summary: Fetch Exception
      operationId: fetchException
      parameters:
        - name: ExceptionId
          in: path
          description: Exception ID to fetch
          required: true
          schema:
            type: string
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExceptionFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ExceptionFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExceptionFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ExceptionFetchError'
    put:
      tags:
        - Exceptions
      summary: Update Exception
      description: |
        Uniqueness constraints within organization:
        - exception.integration, exception.entityType, exception.exceptionType, exception.status, exception.entityId (when status==active)
      operationId: updateException
      parameters:
        - name: ExceptionId
          in: path
          description: Exception ID to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExceptionUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ExceptionUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ExceptionUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExceptionUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ExceptionUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ExceptionUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ExceptionUpdateError'
  /exceptions/{ExceptionId}/sync:
    post:
      tags:
        - Exceptions
      summary: Sync Exceptionss
      description: Trigger the exceptions sync
      operationId: syncExceptions
      parameters:
        - name: ExceptionId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExceptionSyncRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ExceptionSyncRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ExceptionSyncRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /integrations:
    post:
      tags:
        - Integrations
      summary: Create Integration
      description: |
        Uniqueness constraints within organization:
        - integration.integrationName
      operationId: createIntegration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegrationCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/IntegrationCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/IntegrationCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/IntegrationCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/IntegrationCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/IntegrationCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/IntegrationCreateError'
    get:
      tags:
        - Integrations
      summary: List Integrations
      operationId: listIntegrations
      parameters:
        - name: capability
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/IntegrationCapability'
          description: Retrieve connectors by list of capabilities
          style: form
          explode: false
        - name: connectorId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve integrations by connector Id(s)
          style: form
          explode: false
        - name: connectorName
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve integrations by list of connector names
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many integrations
        - name: extIntegrationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of extIntegrationId
          style: form
          explode: false
        - name: integrationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of integrationId
          style: form
          explode: false
        - name: integrationName
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of integrationName values or regexps (regexp format - `"/.../"` or `"/.../i"`)
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: version,integrationId,integrationName,status,connectorName,connectorId,entities,settings,connection,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Integrations created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many integrations
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/IntegrationStatus'
          description: Retrieve integrations by status
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Integrations created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Integrations updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Integrations updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/IntegrationsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/IntegrationsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/IntegrationsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/IntegrationsListError'
  /integrations/{IntegrationId}:
    delete:
      tags:
        - Integrations
      summary: Delete Integration
      operationId: deleteIntegration
      parameters:
        - name: IntegrationId
          in: path
          description: Integration Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Integrations
      summary: Fetch Integration
      operationId: fetchIntegration
      parameters:
        - name: IntegrationId
          in: path
          description: Integration Id to fetch
          required: true
          schema:
            type: string
        - name: keys
          in: query
          description: Return these top-level fields
          required: false
          schema:
            type: string
            default: '*'
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/IntegrationFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/IntegrationFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/IntegrationFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/IntegrationFetchError'
    put:
      tags:
        - Integrations
      summary: Update Integration
      description: |
        Uniqueness constraints within organization:
        - integration.integrationName
      operationId: updateIntegration
      parameters:
        - name: IntegrationId
          in: path
          description: Integration Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegrationUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/IntegrationUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/IntegrationUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/IntegrationUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/IntegrationUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/IntegrationUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/IntegrationUpdateError'
  /integrations/{IntegrationId}/upgrade:
    post:
      tags:
        - Integrations
      summary: Upgrade Integration
      operationId: upgradeIntegration
      parameters:
        - name: IntegrationId
          in: path
          description: Integration Id to upgrade
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegrationUpgradeRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/IntegrationUpgradeRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/IntegrationUpgradeRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /integrations/{IntegrationId}/variables:
    put:
      tags:
        - Integrations
      summary: Update Integration Variable(s)
      operationId: updateVariables
      parameters:
        - name: IntegrationId
          in: path
          description: Integration Id to update
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegrationUpdateVariablesRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/IntegrationUpdateVariablesRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/IntegrationUpdateVariablesRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Integrations
      summary: Fetch Integration Variable(s)
      operationId: retrieveVariables
      parameters:
        - name: IntegrationId
          in: path
          description: Integration Id to update
          required: true
          schema:
            type: string
        - name: name
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve variables by list of their names
          style: form
          explode: false
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationVariablesResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/IntegrationVariablesResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/IntegrationVariablesResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationVariablesError'
            application/xml:
              schema:
                $ref: '#/components/schemas/IntegrationVariablesError'
            text/xml:
              schema:
                $ref: '#/components/schemas/IntegrationVariablesError'
  /invoices:
    post:
      tags:
        - Invoices
      summary: Create Invoices
      description: |
        Uniqueness constraints within organization:
        - invoice.extInvoiceId, invoice.integration
        - invoice.extInvoiceApiId, invoice.integration
        - invoice.extReferenceId, invoice.integration
      operationId: createInvoices
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoicesCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/InvoicesCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/InvoicesCreateRequest'
        required: true
      responses:
        '202':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoicesCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/InvoicesCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/InvoicesCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoicesCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/InvoicesCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/InvoicesCreateError'
    get:
      tags:
        - Invoices
      summary: List Invoices
      operationId: listInvoices
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many invoices
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Select soft deleted invoices
        - name: emailAddr
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by 'billingAddress.email' list
          style: form
          explode: false
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by list of categories of the invoice related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by list of types of the invoice related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extInvoiceApiId
          in: query
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: extInvoiceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `extInvoiceApiId` list
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `extOrderId` list
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `extReferenceId` list
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Select invoices containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices of these integrations
          style: form
          explode: false
        - name: invoiceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `invoiceId` list
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: invoiceId,extInvoiceId,extInvoiceApiId,extReferenceId,integration,status,tags,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: '-extInvoiceCreatedAt'
          description: Sort by these top-level fields
        - name: orderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `orderId` list
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - $ref: '#/components/parameters/requestorId'
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Select invoices created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many invoices
        - name: status
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `status` list
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Select invoices created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Select invoices updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Select invoices updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoicesListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/InvoicesListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/InvoicesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoicesListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/InvoicesListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/InvoicesListError'
    delete:
      tags:
        - Invoices
      summary: Delete Multiple Invoices
      operationId: deleteInvoices
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many invoices
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Select soft deleted invoices
        - name: extInvoiceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `extInvoiceId` list
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `extOrderId` list
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `extReferenceId` list
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices of these integrations
          style: form
          explode: false
        - name: invoiceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `invoiceId` list
          style: form
          explode: false
        - name: orderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `orderId` list
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Select invoices assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Select invoices created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many invoices
        - name: status
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select invoices by `status` list
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Select invoices created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Select invoices updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Select invoices updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoicesDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/InvoicesDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/InvoicesDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoicesDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/InvoicesDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/InvoicesDeleteError'
  /invoices/{InvoiceId}:
    delete:
      tags:
        - Invoices
      summary: Delete Invoice
      operationId: deleteInvoice
      parameters:
        - name: InvoiceId
          in: path
          description: Invoice identifier - `invoiceId`, `ext:{extInvoiceId}`, `api:{extInvoiceApiId}`, or `ref:{extReferenceId}`
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Invoices
      summary: Fetch Invoice
      operationId: fetchInvoice
      parameters:
        - name: InvoiceId
          in: path
          description: Invoice identifier - `invoiceId`, `ext:{extInvoiceId}`, `api:{extInvoiceApiId}`, or `ref:{extReferenceId}`
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/InvoiceFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/InvoiceFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/InvoiceFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/InvoiceFetchError'
    put:
      tags:
        - Invoices
      summary: Update Invoice
      description: |
        Uniqueness constraints within organization:
        - invoice.extInvoiceId, invoice.integration
        - invoice.extInvoiceApiId, invoice.integration
        - invoice.extReferenceId, invoice.integration
      operationId: updateInvoice
      parameters:
        - name: InvoiceId
          in: path
          description: Invoice identifier - `invoiceId`, `ext:{extInvoiceId}`, `api:{extInvoiceApiId}`, or `ref:{extReferenceId}`
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/InvoiceUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/InvoiceUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/InvoiceUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/InvoiceUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/InvoiceUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/InvoiceUpdateError'
  /invoices/{InvoiceId}/sync:
    post:
      tags:
        - Invoices
      summary: Sync Invoices
      description: Trigger the invoice sync
      operationId: syncInvoices
      parameters:
        - name: InvoiceId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
            description: Comma-separated `invoiceId` list
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /labels:
    post:
      tags:
        - Labels
      summary: Create Label
      operationId: createLabel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LabelCreateData'
          application/xml:
            schema:
              $ref: '#/components/schemas/LabelCreateData'
          text/xml:
            schema:
              $ref: '#/components/schemas/LabelCreateData'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LabelCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LabelCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LabelCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LabelCreateError'
    get:
      tags:
        - Labels
      summary: List Labels
      operationId: listLabels
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Max number of items to return
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Fetch soft deleted items
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch items by list of categories of the item related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch items by list of types of the item related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extLabelId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch items by list of extLabelId (client-supplied external IDs)
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: labelId,extLabelId,fileName,integration,contentType,createdAt,updatedAt,orgKey,status
          description: Return these top-level fields
        - name: labelId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch items by list of labelId
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch items created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Number of items to skip
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch items created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch items updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch items updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LabelsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LabelsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LabelsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LabelsListError'
    delete:
      tags:
        - Labels
      summary: Delete Labels
      operationId: deleteLabels
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Max number of items to delete
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted items
        - name: labelId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete items by list of labelId
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete labels assigned these orgModes.
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete items created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Number of items to skip
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete items created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete items updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete items updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelsDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LabelsDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LabelsDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelsDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LabelsDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LabelsDeleteError'
  /labels/{LabelId}:
    delete:
      tags:
        - Labels
      summary: Delete Label
      operationId: deleteLabel
      parameters:
        - name: LabelId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Labels
      summary: Fetch Label
      operationId: fetchLabel
      parameters:
        - name: LabelId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LabelFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LabelFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LabelFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LabelFetchError'
    put:
      tags:
        - Labels
      summary: Update Label
      description: |
        Update mutable fields on an existing label. Used by shipping connectors to attach vendor-derived metadata (trackingNumber, shippingMethod, fileName, contentType, tags, customFields) after a stub label has been created. Immutable fields (labelId, orgKey, integration, createdAt, documentType, apiVersion) are ignored if present in the body. Partial update semantics — fields omitted from the body are left unchanged on the existing document.
      operationId: updateLabel
      parameters:
        - name: LabelId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LabelUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/LabelUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/LabelUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LabelUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LabelUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LabelUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LabelUpdateError'
  /labels/{LabelId}/upload:
    post:
      tags:
        - Labels
      summary: Upload Label Content
      operationId: uploadLabelContent
      parameters:
        - name: LabelId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /labels/{LabelId}/download:
    get:
      tags:
        - Labels
      summary: Download Label Content
      operationId: downloadLabelContent
      parameters:
        - name: LabelId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
            application/pdf:
              schema:
                type: string
                format: binary
            image/*:
              schema:
                type: string
                format: binary
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /labels/{LabelId}/sync:
    post:
      tags:
        - Labels
      summary: Sync Labels
      description: Trigger the labels sync
      operationId: syncLabels
      parameters:
        - name: LabelId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /location_groups:
    post:
      tags:
        - Location Groups
      summary: Create Location Groups
      description: |
        Uniqueness constraints within organization:
        - location_group.groupName
      operationId: createLocationGroups
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationGroupsCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/LocationGroupsCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/LocationGroupsCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationGroupsCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupsCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupsCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationGroupsCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupsCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupsCreateError'
    get:
      tags:
        - Location Groups
      summary: List Location Groups
      operationId: listLocationGroups
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many groups
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Select soft deleted groups
        - name: groupId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by 'groupId' list
          style: form
          explode: false
        - name: groupName
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by 'groupName' list (regexp format - `"/.../"` or `"/.../i"`)
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: groupId,groupName,locationIds,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: locationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select by 'locationId' list
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Select groups created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many groups
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
          description: Select by 'tags' list
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Select groups created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Select groups updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Select groups updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationGroupListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationGroupListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupListError'
  /location_groups/{GroupId}:
    delete:
      tags:
        - Location Groups
      summary: Delete Location Group
      operationId: deleteLocationGroup
      parameters:
        - name: GroupId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Location Groups
      summary: Fetch Location Group
      operationId: fetchLocationGroup
      parameters:
        - name: GroupId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationGroupFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationGroupFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupFetchError'
    put:
      tags:
        - Location Groups
      summary: Update Location Group
      description: |
        Uniqueness constraints within organization:
        - location_group.groupName
      operationId: updateLocationGroup
      parameters:
        - name: GroupId
          in: path
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Fields that should be returned (- comma separated string, "*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationGroupUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/LocationGroupUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/LocationGroupUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationGroupUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationGroupUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationGroupUpdateError'
  /location_groups/list/locations:
    get:
      tags:
        - Location Groups
      summary: Eval Location Groups
      operationId: evalLocationGroups
      description: Evaluates an ordered list of location groups and return back the effective list of locations respecting the ordering in each group.
      parameters:
        - name: groups
          in: query
          required: true
          schema:
            type: array
            items:
              type: string
            description: groupId list
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many list items
        - name: keys
          in: query
          schema:
            type: string
            default: inventoryNotTracked,locationId,status,name,address,excludeFromTotals,createdAt,updatedAt,orgKey
          description: Fields of locations that should be returned (- comma separated string, "*" - all)
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many list items
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationListError'
  /locations:
    post:
      tags:
        - Locations
      summary: Create Location
      description: |
        Uniqueness constraints within organization:
        - location.name, location.integration
      operationId: createLocation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/LocationCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/LocationCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationCreateError'
    get:
      tags:
        - Locations
      summary: List Locations
      operationId: listLocations
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many locations
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve soft deleted locations
        - name: email
          in: query
          schema:
            type: string
          description: Retrieve locations by email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Locations by list of categories of the location related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Locations by list of types of the location related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: excludeFromTotals
          in: query
          schema:
            type: boolean
          description: Locations excluded from calculating inventory totals
        - name: extIntegrationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve locations by list of external integration ids
          style: form
          explode: false
        - name: extLocationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve locations by list of external location ids
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Locations containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
              description: Retrieve locations by list of integrations that created these locations
          style: form
          explode: false
        - name: inventoryNotTracked
          in: query
          schema:
            type: boolean
          description: Retrieve locations by inventoryNotTracked value (default - any)
        - name: keys
          in: query
          schema:
            type: string
            default: inventoryNotTracked,locationId,status,name,address,excludeFromTotals,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: locationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of locationId
          style: form
          explode: false
        - name: mergedWithLocationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve locations by list of mergedWithLocationId
          style: form
          explode: false
        - name: name
          in: query
          schema:
            type: string
          description: Retrieve locations by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: phone
          in: query
          schema:
            type: string
          description: Retrieve locations by phone (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Locations created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many locations
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/LocationStatus'
          description: Retrieve by list of location statuses
          style: form
          explode: false
        - name: storeId
          in: query
          schema:
            type: string
          description: Retrieve locations belonging to a specific store
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Locations created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Locations updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Locations updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationsListError'
    delete:
      tags:
        - Locations
      summary: Delete Multiple Locations
      operationId: deleteLocations
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many locations
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted locations
        - name: excludeFromTotals
          in: query
          schema:
            type: boolean
          description: Delete locations excluded from calculating inventory totals
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete locations of these integrations
          style: form
          explode: false
        - name: locationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete locations by list of locationId
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete locations assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete locations created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many locations
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/LocationStatus'
          description: Delete by list of location statuses
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete locations created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete locations updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete locations updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationsDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationsDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationsDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationsDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationsDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationsDeleteError'
  /locations/{LocationId}:
    delete:
      tags:
        - Locations
      summary: Delete Location
      operationId: deleteLocation
      parameters:
        - name: LocationId
          in: path
          description: Location ID to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Locations
      summary: Fetch Location
      operationId: fetchLocation
      parameters:
        - name: LocationId
          in: path
          description: Location ID to fetch
          required: true
          schema:
            type: string
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationFetchError'
    put:
      tags:
        - Locations
      summary: Update Location
      description: |
        Uniqueness constraints within organization:
        - location.name, location.integration
      operationId: updateLocation
      parameters:
        - name: LocationId
          in: path
          description: Location ID to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/LocationUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/LocationUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocationUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/LocationUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/LocationUpdateError'
  /locations/{LocationId}/sync:
    post:
      tags:
        - Locations
      summary: Sync Locations
      description: Trigger the locations sync
      operationId: syncLocations
      parameters:
        - name: LocationId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /notes:
    post:
      tags:
        - Notes
      summary: Create Note
      operationId: createNote
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NoteCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/NoteCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/NoteCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoteCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/NoteCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/NoteCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoteCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/NoteCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/NoteCreateError'
    get:
      tags:
        - Notes
      summary: List Notes
      operationId: listNotes
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many Notes
        - name: entityId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve notes by entityId list
          style: form
          explode: false
        - name: entityType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve notes by entityType list
          style: form
          explode: false
        - name: eventId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve notes by eventId list
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: hasPreValue,hasPostValue,changeSource,changeType,text,generatedText,noteId,entityId,entityType,extEntityId,relatedEntityId,relatedEntityType,eventId,isPublic,severity,tags,userId,createdAt,updatedAt,orgKey,status
          description: Return these top-level fields
        - name: noteId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve notes by noteId list
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: severity
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/NoteSeverity'
            description: Retrieve notes by severity list
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Notes created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many Notes
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/NoteStatus'
            description: Retrieve notes by status list
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Notes created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Notes updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Notes updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotesListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/NotesListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/NotesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotesListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/NotesListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/NotesListError'
  /notes/{NoteId}:
    delete:
      tags:
        - Notes
      summary: Delete Note
      operationId: deleteNote
      parameters:
        - name: NoteId
          in: path
          description: Note Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Notes
      summary: Fetch Note
      operationId: fetchNote
      parameters:
        - name: NoteId
          in: path
          description: Note Id to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoteFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/NoteFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/NoteFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoteFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/NoteFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/NoteFetchError'
    put:
      tags:
        - Notes
      summary: Update Note
      operationId: updateNote
      parameters:
        - name: NoteId
          in: path
          description: Note Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NoteUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/NoteUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/NoteUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoteUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/NoteUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/NoteUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoteUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/NoteUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/NoteUpdateError'
  /statements:
    post:
      tags:
        - Order Statements
      summary: Create Statements
      operationId: createStatements
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StatementCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/StatementCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/StatementCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/StatementCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/StatementCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/StatementCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/StatementCreateError'
    get:
      tags:
        - Order Statements
      summary: List Statements
      operationId: listStatements
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many statements
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve only soft deleted statements
        - name: depositSince
          in: query
          schema:
            type: string
            format: date-time
          description: Statements where (extStatementDepositDate >= depositSince)
        - name: depositUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Statements where (extStatementDepositDate < depositUntil)
        - name: endPeriodSince
          in: query
          schema:
            type: string
            format: date-time
          description: Statements where (extStatementEndDate >= endPeriodSince)
        - name: endPeriodUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Statements where (extStatementEndDate < endPeriodUntil)
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve statements by list of categories of the statement related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve statements by list of types of the statement related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extStatementApiId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve statements by extStatementApiId list
          style: form
          explode: false
        - name: extStatementId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve statements by extStatementId list
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Retrieve statements containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve statements by integration list
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: statementId,extStatementId,extStatementApiId,integration,extStatementStartDate,extStatementEndDate,extStatementDepositDate,depositTotal,transactionFees,statementTotal,currency,status,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Statements created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many statements
        - name: startPeriodSince
          in: query
          schema:
            type: string
            format: date-time
          description: Statements where (extStatementStartDate >= startPeriodSince)
        - name: startPeriodUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Statements where (extStatementStartDate < startPeriodUntil)
        - name: statementId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve statements by statementId list
          style: form
          explode: false
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/StatementStatus'
          description: Retrieve statements by status list
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Statements created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Statements updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Statements updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/StatementsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/StatementsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/StatementsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/StatementsListError'
  /statements/{StatementId}:
    delete:
      tags:
        - Order Statements
      summary: Delete Statement
      operationId: deleteStatement
      parameters:
        - name: StatementId
          in: path
          description: Statement Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Order Statements
      summary: Fetch Statement
      operationId: fetchStatement
      parameters:
        - name: StatementId
          in: path
          description: Id or `ext:{extStatementId}` of statement to fetch
          required: true
          schema:
            type: string
        - name: sourceDocVersion
          in: query
          description: Fetch specific source doc version if available
          required: false
          schema:
            type: number
        - name: withFeesTotals
          in: query
          schema:
            type: boolean
          description: Add the fees totals in the response
          required: false
        - name: withSourceDoc
          in: query
          description: Include source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available source doc versions
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/StatementFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/StatementFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/StatementFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/StatementFetchError'
    put:
      tags:
        - Order Statements
      summary: Update Statement
      operationId: updateStatement
      parameters:
        - name: StatementId
          in: path
          description: Statement Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StatementUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/StatementUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/StatementUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/StatementUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/StatementUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/StatementUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/StatementUpdateError'
  /statements/{StatementId}/sync:
    post:
      tags:
        - Order Statements
      summary: Sync Statements
      description: Trigger the statements sync
      operationId: syncStatements
      parameters:
        - name: StatementId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /statement_transactions:
    post:
      tags:
        - Order Statement Transactions
      summary: Create Transactions
      operationId: createTransactions
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/TransactionCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/TransactionCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransactionCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransactionCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransactionCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransactionCreateError'
    get:
      tags:
        - Order Statement Transactions
      summary: List Transactions
      operationId: listTransactions
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many transactions
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve only soft deleted transactions
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transactions by list of categories of the transaction related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transactions by list of types of the transaction related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transactions by extReferenceId list
          style: form
          explode: false
        - name: extStatementId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transactions by extStatementId list
          style: form
          explode: false
        - name: extTransactionId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transactions by extTransactionId list
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Retrieve transactions containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transactions by integration list
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: transactionId,extReferenceId,statementId,extStatementId,extTransactionId,integration,sku,transactionType,transactionFees,status,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - $ref: '#/components/parameters/requestorId'
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Transactions created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many transactions
        - name: sku
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transactions by SKU list
          style: form
          explode: false
        - name: statementId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transactions by statementId list
          style: form
          explode: false
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/TransactionStatus'
          description: Retrieve transactions by status list
          style: form
          explode: false
        - name: transactionId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transactions by transactionId list
          style: form
          explode: false
        - name: transactionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transactions by transactionType list
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Transactions created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Transactions updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Transactions updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransactionsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransactionsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransactionsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransactionsListError'
  /statement_transactions/{TransactionId}:
    delete:
      tags:
        - Order Statement Transactions
      summary: Delete Transaction
      operationId: deleteTransaction
      parameters:
        - name: TransactionId
          in: path
          description: Transaction Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Order Statement Transactions
      summary: Fetch Transaction
      operationId: fetchTransaction
      parameters:
        - name: TransactionId
          in: path
          description: Id or `ext:{extTransactionId}` of transaction to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available source doc versions
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransactionFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransactionFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransactionFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransactionFetchError'
    put:
      tags:
        - Order Statement Transactions
      summary: Update Transaction
      operationId: updateTransaction
      parameters:
        - name: TransactionId
          in: path
          description: Transaction Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/TransactionUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/TransactionUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransactionUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransactionUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransactionUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransactionUpdateError'
  /statement_transactions/{TransactionId}/sync:
    post:
      tags:
        - Order Statement Transactions
      summary: Sync Statement Transactions
      description: Trigger the statement transactions sync
      operationId: syncTransactions
      parameters:
        - name: TransactionId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /orders:
    post:
      tags:
        - Orders
      summary: Create Orders
      description: |
        Uniqueness constraints within organization:
        - order.extOrderId, order.orderSource
        - order.extOrderApiId (when defined)
      operationId: createOrders
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withTransform
          in: query
          description: Enable order transformation engine for this request
          required: false
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrdersCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrdersCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrdersCreateRequest'
        required: true
      responses:
        '202':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrdersCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrdersCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrdersCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrdersCreateError'
    get:
      tags:
        - Orders
      summary: List Orders
      operationId: listOrders
      parameters:
        - name: acknowledgedBy
          in: query
          schema:
            type: array
            items:
              type: string
          description: Orders by list of acknowledging integrations
          style: form
          explode: false
        - name: autoEngUpdateStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
          style: form
          explode: false
        - name: autoEngUpdateStatusUpdatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders with autoEngUpdateStatus updated after this date-time
        - name: autoEngUpdateStatusUpdatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders with autoEngUpdateStatus updated before this date-time
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many orders
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Fetch soft deleted orders
        - name: disposition
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrderDispositionType'
          description: Fetch orders by list of order disposition types
          style: form
          explode: false
        - name: email
          in: query
          schema:
            type: string
          description: Fetch orders by recipient email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: emailAddr
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve orders by list of billing/shippingAddress.email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
          style: form
          explode: false
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch orders by list of categories of the order related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch orders by list of types of the order related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extOrderCreatedAtSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders with extOrderCreatedAt after or at this date-time
        - name: extOrderCreatedAtUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders with extOrderCreatedAt before or at this date-time
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch orders by list of extOrderId
          style: form
          explode: false
        - name: fulfilledAtSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders with fulfilledAt after or at this date-time
        - name: fulfilledAtUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders with fulfilledAt before or at this date-time
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Orders containing a source document
        - name: holdUntilSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders with holdUntil after or at this date-time. Rounded down to the nearest minute
        - name: holdUntilUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders with holdUntil before or at this date-time. Rounded down to the nearest minute
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch orders by list of integrationId
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: orderId,extOrderId,email,status,shipByDate,shipByStatus,fulfilledAt,expectedDeliveryDate,priority,tags,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: lastRerunRoutingTrigger
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/LastRerunRoutingTrigger'
          description: Fetch orders by list of rerun routing triggers
          style: form
          explode: false
        - name: lineItemSku
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch orders containing line items with these SKUs
          style: form
          explode: false
        - name: locationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch orders by list of locationId
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: orderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch orders by list of orderId
          style: form
          explode: false
        - name: orderSource
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch orders by list of order sources
          style: form
          explode: false
        - name: orderSourceType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrderType'
            description: Fetch orders by list of types
          style: form
          explode: false
        - name: originalOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch orders by ID of the order they are replacing
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: priority
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Priority'
          style: form
          explode: false
        - $ref: '#/components/parameters/requestorId'
        - name: requireShippingLabels
          in: query
          schema:
            type: boolean
          description: Filter orders by shipping labels requirement
        - name: routingStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/RoutingStatus'
            description: Orders by list of routing statuses
          style: form
          explode: false
        - name: shipByDateSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders with shipByDate after or at this date-time
        - name: shipByDateUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders with shipByDate before or at this date-time
        - name: shipByStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrderShipByStatus'
          description: Fetch orders by list of ship-by SLA states
          style: form
          explode: false
        - name: shipmentLocationIds
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch orders by list of shipment fulfillment location IDs
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many orders
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrderStatus'
          description: Fetch orders by list of statuses
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: timestamp
          in: query
          schema:
            type: boolean
          description: if set to true use timestamp instead of create time
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all orders updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrdersListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrdersListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrdersListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrdersListError'
    delete:
      tags:
        - Orders
      summary: Delete Multiple Orders
      operationId: deleteOrders
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many orders
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted orders
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete orders by list of extOrderId
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete orders of these integrations
          style: form
          explode: false
        - name: orderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete orders by list of orderId
          style: form
          explode: false
        - name: orderSource
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete orders by list of order sources
          style: form
          explode: false
        - name: orderSourceType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrderType'
            description: Delete orders by list of order types
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete orders assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: routingStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/RoutingStatus'
            description: Delete orders by list of routing statuses
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete orders created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many orders
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrderStatus'
          description: Delete orders by list of statuses
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete orders created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete orders updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete orders updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrdersDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrdersDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrdersDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrdersDeleteError'
  /orders/{OrderId}:
    delete:
      tags:
        - Orders
      summary: Delete Order
      operationId: deleteOrder
      parameters:
        - name: OrderId
          in: path
          description: Id, `ext:{extOrderId}`, or `api:{extOrderApiId}` of order to delete
          required: true
          schema:
            type: string
        - name: nested
          in: query
          description: Delete nested entities
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Orders
      summary: Fetch Order
      operationId: fetchOrder
      parameters:
        - name: OrderId
          in: path
          description: Id, `ext:{extOrderId}`, or `api:{extOrderApiId}` of order to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrderFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrderFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrderFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrderFetchError'
    put:
      tags:
        - Orders
      summary: Update Order
      description: |
        Uniqueness constraints within organization:
        - order.extOrderId, order.orderSource
        - order.extOrderApiId (when defined)
      operationId: updateOrder
      parameters:
        - name: OrderId
          in: path
          description: Id, `ext:{extOrderId}`, or `api:{extOrderApiId}` of order to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withTransform
          in: query
          description: Enable order transformation engine for this request
          required: false
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrderUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrderUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrderUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrderUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrderUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrderUpdateError'
  /orders/{OrderId}/sync:
    post:
      tags:
        - Orders
      summary: Sync Orders
      description: Trigger the orders sync
      operationId: syncOrders
      parameters:
        - name: OrderId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderSyncRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrderSyncRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrderSyncRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /orders/{Operation}:
    post:
      tags:
        - Orders
      summary: Add/Remove Tags
      operationId: updateOrderTags
      parameters:
        - name: Operation
          in: path
          required: true
          schema:
            type: string
            enum:
              - addTags
              - removeTags
        - name: orderId
          in: query
          description: IDs of orders to update, where the ID is either `{orderId}`, `ext:{extOrderId}`, or `api:{extOrderApiId}`
          required: true
          schema:
            type: array
            items:
              type: string
            minItems: 1
          style: form
          explode: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderUpdateTagsRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrderUpdateTagsRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrderUpdateTagsRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderUpdateTagsResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrderUpdateTagsResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrderUpdateTagsResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /orders/{OrderId}/acknowledge:
    post:
      tags:
        - Orders
      summary: Acknowledge orders
      description: Marks orders as acknowledged by integration
      operationId: acknowledgeOrders
      parameters:
        - name: OrderId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
          description: orderId list or `api:{extOrderApiId}` or `ext:{extOrderId}`
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderAcknowledgeRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrderAcknowledgeRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrderAcknowledgeRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderAcknowledgeResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrderAcknowledgeResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrderAcknowledgeResponse'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderAcknowledgeError'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrderAcknowledgeError'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrderAcknowledgeError'
            text/csv: {}
  /purchases:
    post:
      tags:
        - Purchases
      summary: Create Purchases
      description: |
        Uniqueness constraints within organization:
        - purchase.extOrderId
        - purchase.extOrderApiId, purchase.inegration (when extOrderApiId defined)
        - purchase.extReferenceId, purchase.integration (when extReferenceId defined)
      operationId: createPurchases
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PurchasesCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/PurchasesCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/PurchasesCreateRequest'
        required: true
      responses:
        '202':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchasesCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/PurchasesCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/PurchasesCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchasesCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/PurchasesCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/PurchasesCreateError'
    get:
      tags:
        - Purchases
      summary: List Purchases
      operationId: listPurchases
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many purchases
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve soft deleted purchaases
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve purchases by list of categories of the purchase related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve purchases by list of types of the purchase related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of external purchase IDs
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by `extReferenceId` list
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Retrieve purchases containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve purchases of these integrations
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: purchaseId,extOrderId,referenceNumber,vendorAddress,expectedArrivalDate,shipByDate,toLocationId,totalPrice,status,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: purchaseId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of purchaseId
          style: form
          explode: false
        - $ref: '#/components/parameters/requestorId'
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all purchases created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many purchases
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PurchaseStatus'
          description: Retrieve by list of statuses
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: timestamp
          in: query
          schema:
            type: boolean
          description: if set to true use timestamp instead of create time
        - name: toLocationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of toLocationId
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all purchases created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all purchases updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all purchases updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchasesListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/PurchasesListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/PurchasesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchasesListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/PurchasesListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/PurchasesListError'
    delete:
      tags:
        - Purchases
      summary: Delete Multiple Purchases
      operationId: deletePurchases
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many purchases
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted purchaases
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete purchases by list of external purchase IDs
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete purchases by `extReferenceId` list
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete purchases of these integrations
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete purchases assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: purchaseId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete purchases by list of purchaseId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete purchases created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many purchases
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PurchaseStatus'
          description: Delete purchases by list of statuses
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete purchases created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete purchases updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete purchases updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchasesDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/PurchasesDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/PurchasesDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchasesDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/PurchasesDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/PurchasesDeleteError'
  /purchases/{PurchaseId}:
    delete:
      tags:
        - Purchases
      summary: Delete Purchase
      operationId: deletePurchase
      parameters:
        - name: PurchaseId
          in: path
          description: Id, `ext:{extOrderId}`, `api:{extOrderApiId}`, or `ref:{extReferenceId}` of purchase order to delete
          required: true
          schema:
            type: string
        - name: nested
          in: query
          description: Delete nested entities
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Purchases
      summary: Fetch Purchase
      operationId: fetchPurchase
      parameters:
        - name: PurchaseId
          in: path
          description: Id, `ext:{extOrderId}`, `api:{extOrderApiId}`, or `ref:{extReferenceId}` of purchase order to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/PurchaseFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/PurchaseFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/PurchaseFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/PurchaseFetchError'
    put:
      tags:
        - Purchases
      summary: Update Purchase
      description: |
        Uniqueness constraints within organization:
        - purchase.extOrderId
        - purchase.extOrderApiId, purchase.inegration (when extOrderApiId defined)
        - purchase.extReferenceId, purchase.integration (when extReferenceId defined)
      operationId: updatePurchase
      parameters:
        - name: PurchaseId
          in: path
          description: Id, `ext:{extOrderId}`, `api:{extOrderApiId}`, or `ref:{extReferenceId}` of purchase order to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PurchaseUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/PurchaseUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/PurchaseUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/PurchaseUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/PurchaseUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/PurchaseUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/PurchaseUpdateError'
  /purchases/{PurchaseId}/sync:
    post:
      tags:
        - Purchases
      summary: Sync Purchases
      description: Trigger the purchases sync
      operationId: syncPurchases
      parameters:
        - name: PurchaseId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /delivery_promises:
    get:
      tags:
        - Delivery Promises
      summary: List Delivery Promises
      operationId: listDeliveryPromise
      parameters:
        - name: contextStatus
          in: query
          description: Filter by decision-context status.
          schema:
            $ref: '#/components/schemas/DeliveryPromisesListFilterContextStatus'
        - $ref: '#/components/parameters/count'
        - name: deliveryPromiseId
          in: query
          description: Filter by delivery-promise IDs.
          schema:
            $ref: '#/components/schemas/DeliveryPromisesListFilterDeliveryPromiseId'
        - name: extDeliveryPromiseId
          in: query
          description: Filter by external delivery-promise IDs.
          schema:
            $ref: '#/components/schemas/DeliveryPromisesListFilterExtDeliveryPromiseId'
        - name: keys
          in: query
          description: |
            Return these top-level fields. Name any other field explicitly, or pass
            "*", to get the full record.
          schema:
            type: string
            default: orgKey,deliveryPromiseId,extDeliveryPromiseId,orderId,rank,promiseDate,estimatedDays,isSplit,fulfillmentStrategy,carrierServiceLevelCode,contextStatus,contextExpiresAt,createdAt,updatedAt
        - $ref: '#/components/parameters/order'
        - name: orderId
          in: query
          description: Filter by order IDs.
          schema:
            $ref: '#/components/schemas/DeliveryPromisesListFilterOrderId'
        - name: pagination
          in: query
          description: Exclude pagination information from the response.
          schema:
            type: string
            enum:
              - disabled
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/since'
        - $ref: '#/components/parameters/skip'
        - $ref: '#/components/parameters/until'
        - $ref: '#/components/parameters/updatedSince'
        - $ref: '#/components/parameters/updatedUntil'
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryPromisesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryPromisesListError'
  /delivery_promises/{DeliveryPromiseId}:
    get:
      tags:
        - Delivery Promises
      summary: Fetch Delivery Promise
      operationId: fetchDeliveryPromise
      parameters:
        - name: DeliveryPromiseId
          in: path
          required: true
          description: Delivery-promise ID.
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryPromiseFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryPromiseFetchError'
  /trackings:
    post:
      tags:
        - Trackings
      summary: Create Tracking
      description: |
        Uniqueness constraints within organization:
        - tracking.trackingNumber
      operationId: createTracking
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrackingCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/TrackingCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/TrackingCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TrackingCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TrackingCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TrackingCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TrackingCreateError'
    get:
      tags:
        - Trackings
      summary: List Trackings
      operationId: listTrackings
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many tracking
        - name: fulfillmentId
          in: query
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: trackingId,trackingNumber,fulfillmentId,shipper,url,actualShipDate,expectedArrivalDate,actualArrivalDate,createdAt,updatedAt,orgKey,status
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: shippingCarrier
          in: query
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Tracking created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many tracking
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/TrackingStatus'
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: trackingId
          in: query
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: trackingNumber
          in: query
          schema:
            type: array
            items:
              type: string
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Tracking created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Tracking updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Tracking updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TrackingListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TrackingListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TrackingListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TrackingListError'
  /trackings/{TrackingId}:
    get:
      tags:
        - Trackings
      summary: Fetch Tracking
      operationId: fetchTracking
      parameters:
        - name: TrackingId
          in: path
          description: Id or `ext:{trackingNumber}` of tracking to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TrackingFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TrackingFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TrackingFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TrackingFetchError'
    put:
      tags:
        - Trackings
      summary: Update Tracking
      description: |
        Uniqueness constraints within organization:
        - tracking.trackingNumber
      operationId: updateTracking
      parameters:
        - name: TrackingId
          in: path
          description: Id or `ext:{trackingNumber}` of tracking to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrackingUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/TrackingUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/TrackingUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TrackingUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TrackingUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TrackingUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TrackingUpdateError'
  /trackings/{TrackingId}/sync:
    post:
      tags:
        - Trackings
      summary: Sync Trackings
      description: Trigger the trackings sync
      operationId: syncTrackings
      parameters:
        - name: TrackingId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /transfers:
    post:
      tags:
        - Transfers
      summary: Create Transfers
      description: |
        Uniqueness constraints within organization:
        - transfer.extOrderId
        - transfer.extOrderApiId, transfer.integration (when extOrderApiId defined)
        - transfer.extReferenceId, transfer.integration (when extReferenceId defined)
      operationId: createTransfers
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransfersCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/TransfersCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/TransfersCreateRequest'
        required: true
      responses:
        '202':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransfersCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransfersCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransfersCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransfersCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransfersCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransfersCreateError'
    get:
      tags:
        - Transfers
      summary: List Transfers
      operationId: listTransfers
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many transfers
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve soft deleted transfers
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transfers by list of categories of the transfer related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transfers by list of types of the transfer related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of external transfer IDs
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by `extReferenceId` list
          style: form
          explode: false
        - name: fromLocationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of fromLocationId
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Retrieve transfers containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve transfers of these integrations
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: transferId,extOrderId,status,shipByDate,expectedArrivalDate,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: orderSourceType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrderType'
            description: Fetch orders by list of types
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - $ref: '#/components/parameters/requestorId'
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all transfers created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many transfers
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/TransferStatus'
          description: Retrieve by list of statuses
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: timestamp
          in: query
          schema:
            type: boolean
          description: if set to true use timestamp instead of create time
        - name: toLocationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of toLocationId
          style: form
          explode: false
        - name: transferId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of transferId
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all transfers created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all transfers updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all transfers updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransfersListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransfersListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransfersListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransfersListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransfersListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransfersListError'
    delete:
      tags:
        - Transfers
      summary: Delete Multiple Transfers
      operationId: deleteTransfers
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many transfers
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted transfers
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete transfers by list of external transfer IDs
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete transfers by `extReferenceId` list
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete transfers of these integrations
          style: form
          explode: false
        - name: orderSourceType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrderType'
            description: Delete orders by list of order types
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete transfers assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete transfers created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many transfers
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/TransferStatus'
          description: Delete transfers by list of statuses
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: transferId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete transfers by list of transferId
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete transfers created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete transfers updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete transfers updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransfersDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransfersDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransfersDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransfersDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransfersDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransfersDeleteError'
  /transfers/{TransferId}:
    delete:
      tags:
        - Transfers
      summary: Delete Transfer
      operationId: deleteTransfer
      parameters:
        - name: TransferId
          in: path
          description: Id, `ext:{extOrderId}`, `api:{extOrderApiId}`, or `ref:{extReferenceId}` of transfer to delete
          required: true
          schema:
            type: string
        - name: nested
          in: query
          description: Delete nested entities
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Transfers
      summary: Fetch Transfer
      operationId: fetchTransfer
      parameters:
        - name: TransferId
          in: path
          description: Id, `ext:{extOrderId}`, `api:{extOrderApiId}`, or `ref:{extReferenceId}` of transfer to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransferFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransferFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransferFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransferFetchError'
    put:
      tags:
        - Transfers
      summary: Update Transfer
      description: |
        Uniqueness constraints within organization:
        - transfer.extOrderId
        - transfer.extOrderApiId, transfer.integration (when extOrderApiId defined)
        - transfer.extReferenceId, transfer.integration (when extReferenceId defined)
      operationId: updateTransfer
      parameters:
        - name: TransferId
          in: path
          description: Id, `ext:{extOrderId}`, `api:{extOrderApiId}`, or `ref:{extReferenceId}` of transfer to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/TransferUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/TransferUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransferUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransferUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/TransferUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/TransferUpdateError'
  /transfers/{TransferId}/sync:
    post:
      tags:
        - Transfers
      summary: Sync Transfers
      description: Trigger the transfers sync
      operationId: syncTransfers
      parameters:
        - name: TransferId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /receipts:
    post:
      tags:
        - Receipts
      summary: Create Receipts
      description: |
        Uniqueness constraints within organization:
        - receipt.extReceiptId (when defined)
        - receipt.extReceiptApiId (when defined)
      operationId: createReceipts
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReceiptsCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ReceiptsCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ReceiptsCreateRequest'
        required: true
      responses:
        '202':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptsCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptsCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsCreateError'
    get:
      tags:
        - Receipts
      summary: List Receipts
      operationId: listReceipts
      parameters:
        - name: arrivalId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of arrivalId
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many receipts
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Soft deleted receipts
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of categories of the receipt related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of types of the receipt related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extArrivalId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of extArrivalId
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of extOrderId
          style: form
          explode: false
        - name: extReceiptId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of extReceiptId
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Receipts containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts of these integrations.
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: receiptId,arrivalId,extArrivalId,extOrderId,actualArrivalDate,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: receiptId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of receiptId
          style: form
          explode: false
        - $ref: '#/components/parameters/requestorId'
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Receipts created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many receipts
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Receipts created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Receipts updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Receipts updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsListError'
    delete:
      tags:
        - Receipts
      summary: Delete Multiple Receipts
      operationId: deleteReceipts
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: arrivalId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of arrivalId
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many receipts
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Soft deleted receipts
        - name: extArrivalId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of extArrivalId
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of extOrderId
          style: form
          explode: false
        - name: extReceiptId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of extReceiptId
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts of these integrations.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: receiptId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Receipts by list of receiptId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Receipts created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many receipts
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Receipts created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Receipts updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Receipts updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptsDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptsDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReceiptsDeleteError'
  /receipts/{ReceiptId}:
    delete:
      tags:
        - Receipts
      summary: Delete Receipt
      operationId: deleteReceipt
      parameters:
        - name: ReceiptId
          in: path
          description: Id, `ext:{extReceiptId}` or `api:{extReceiptApiId}` of receipt to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Receipts
      summary: Fetch Receipt
      operationId: fetchReceipt
      parameters:
        - name: ReceiptId
          in: path
          description: Id, `ext:{extReceiptId}` or `api:{extReceiptApiId}` of receipt to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReceiptFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReceiptFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiptFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReceiptFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReceiptFetchError'
  /receipts/{ReceiptId}/sync:
    post:
      tags:
        - Receipts
      summary: Sync Receipts
      description: Trigger the receipts sync
      operationId: syncReceipts
      parameters:
        - name: ReceiptId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /returns:
    post:
      tags:
        - Returns
      summary: Create Return
      description: |
        Uniqueness constraints within organization:
        - return.extReturnId (when defined)
        - return.extReturnApiId, return.integration (when extReturnApiId defined)
        - return.extReferenceId, return.integration (when extReferenceId defined)
      operationId: createReturn
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReturnCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ReturnCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ReturnCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReturnCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReturnCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReturnCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReturnCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReturnCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReturnCreateError'
    get:
      tags:
        - Returns
      summary: List Returns
      operationId: listReturns
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many returns
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve soft deleted returns
        - name: emailAddr
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of shippingAddress.email
          style: form
          explode: false
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve returns by list of categories of the return related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve returns by list of types of the return related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
            description: Retrieve returns by list of external order ids
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve returns by `extReferenceId` list
          style: form
          explode: false
        - name: extReturnId
          in: query
          schema:
            type: array
            items:
              type: string
            description: Retrieve returns by list of external return ids
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Retrieve returns containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve returns of these integrations
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: returnId,extReturnId,status,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: locationId
          in: query
          schema:
            type: array
            items:
              type: string
            description: Retrieve returns by list of location ids
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - $ref: '#/components/parameters/requestorId'
        - name: returnId
          in: query
          schema:
            type: array
            items:
              type: string
            description: Retrieve by list of returnId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Returns created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many returns
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ReturnStatus'
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Returns created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Returns updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Returns updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReturnsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReturnsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReturnsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReturnsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReturnsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReturnsListError'
    delete:
      tags:
        - Returns
      summary: Delete Multiple Returns
      operationId: deleteReturns
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many returns
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted returns
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete returns by `extReferenceId` list
          style: form
          explode: false
        - name: extReturnId
          in: query
          schema:
            type: array
            items:
              type: string
            description: Delete returns by list of external return ids
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete returns of these integrations
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete returns assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: returnId
          in: query
          schema:
            type: array
            items:
              type: string
            description: Delete returns by list of returnId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete returns created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many returns
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ReturnStatus'
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete returns created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete returns updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete returns updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReturnsDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReturnsDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReturnsDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReturnsDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReturnsDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReturnsDeleteError'
  /returns/{ReturnId}:
    delete:
      tags:
        - Returns
      summary: Delete Return
      operationId: deleteReturn
      parameters:
        - name: ReturnId
          in: path
          description: Id, `ext:{extReturnId}`, `api:{extReturnApiId}`, or `ref:{extReferenceId}` of return to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Returns
      summary: Fetch Return
      operationId: fetchReturn
      parameters:
        - name: ReturnId
          in: path
          description: Id, `ext:{extReturnId}`, `api:{extReturnApiId}`, or `ref:{extReferenceId}` of return to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReturnFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReturnFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReturnFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReturnFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReturnFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReturnFetchError'
    put:
      tags:
        - Returns
      summary: Update Return
      description: |
        Uniqueness constraints within organization:
        - return.extReturnId (when defined)
        - return.extReturnApiId, return.integration (when extReturnApiId defined)
        - return.extReferenceId, return.integration (when extReferenceId defined)
      operationId: updateReturn
      parameters:
        - name: ReturnId
          in: path
          description: Id, `ext:{extReturnId}`, `api:{extReturnApiId}`, or `ref:{extReferenceId}` of return to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReturnUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ReturnUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ReturnUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReturnUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReturnUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReturnUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReturnUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ReturnUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ReturnUpdateError'
  /returns/{ReturnId}/sync:
    post:
      tags:
        - Returns
      summary: Sync Returns
      description: Trigger the returns sync
      operationId: syncReturns
      parameters:
        - name: ReturnId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /connectors:
    post:
      tags:
        - Connectors
      summary: Create Connector
      description: |
        Uniqueness constraints:
        - connector.connectorName
      operationId: createConnector
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectorCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ConnectorCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ConnectorCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ConnectorCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ConnectorCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ConnectorCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ConnectorCreateError'
    get:
      tags:
        - Connectors
      summary: List Connectors
      operationId: listConnectors
      parameters:
        - name: availabilityStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ConnectorAvailabilityStatus'
          description: Retrieve connectors by list of availability statuses
          style: form
          explode: false
        - name: capability
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve connectors by list of capabilities
          style: form
          explode: false
        - name: connectorId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve connectors by list of connectorId
          style: form
          explode: false
        - name: connectorName
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve connectors by list of connector names
          style: form
          explode: false
        - name: connectorType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ConnectorType'
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many connectors
        - name: intentShow
          in: query
          schema:
            type: boolean
          description: Retrieve connectors by intentShow attribute
        - name: keys
          in: query
          schema:
            type: string
            default: displayName,description,version,connectorId,status,connectorName,connectorType,logoUrl,entities,settings,connection,createdAt,updatedAt,orgKey,tags
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: selfServiceMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ConnectorSelfServiceMode'
          description: Retrieve connectors by list of self-service modes
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Connectors created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many connectors
        - name: slug
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve connectors by list of connector slugs
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Connectors created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Connectors updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Connectors updated before this date-time
        - name: visibility
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ConnectorVisibility'
          description: Retrieve connectors by computed visibility
          style: form
          explode: false
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ConnectorsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ConnectorsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ConnectorsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ConnectorsListError'
  /connectors/{ConnectorId}:
    delete:
      tags:
        - Connectors
      summary: Delete Connector
      operationId: deleteConnector
      parameters:
        - name: ConnectorId
          in: path
          description: Connector Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Connectors
      summary: Fetch Connector
      operationId: fetchConnector
      parameters:
        - name: ConnectorId
          in: path
          description: Connector Id to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ConnectorFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ConnectorFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ConnectorFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ConnectorFetchError'
    put:
      tags:
        - Connectors
      summary: Update Connector
      description: |
        Uniqueness constraints:
        - connector.connectorName
      operationId: updateConnector
      parameters:
        - name: ConnectorId
          in: path
          description: Connector Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectorUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ConnectorUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ConnectorUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ConnectorUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ConnectorUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ConnectorUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ConnectorUpdateError'
  /mappings:
    post:
      tags:
        - Mappings
      summary: Create Mapping
      description: |
        Uniqueness constraints:
        - maping.uuid
      operationId: createMapping
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MappingCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/MappingCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/MappingCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MappingCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/MappingCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/MappingCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MappingCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/MappingCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/MappingCreateError'
    get:
      tags:
        - Mappings
      summary: List Mappings
      operationId: listMappings
      parameters:
        - name: connectorId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Mappings by list of connectorId
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many mappings
        - name: desc
          in: query
          schema:
            type: string
          description: Fetch mappings by description (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: keys
          in: query
          schema:
            type: string
            default: mappingId,connectorId,uuid,description,createdAt,updatedAt,orgKey,isPublic,originId,documentationURLs,readme
          description: Return these top-level fields
        - name: mappingId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Mappings by list of mappingId
          style: form
          explode: false
        - name: mappingsTarget
          in: query
          schema:
            type: array
            items:
              type: string
          description: Mappings by list of mappings[].target values
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: originId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Mappings by list of originId
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Mappings created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many mappings
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Mappings created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Mappings updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Mappings updated before this date-time
        - name: uuid
          in: query
          schema:
            type: array
            items:
              type: string
          description: Mappings by list of UUIDs
          style: form
          explode: false
        - name: visibility
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ConnectorVisibility'
          description: Retrieve mappings by computed visibility
          style: form
          explode: false
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MappingsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/MappingsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/MappingsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MappingsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/MappingsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/MappingsListError'
  /mappings/{MappingId}:
    get:
      tags:
        - Mappings
      summary: Fetch Mapping
      operationId: fetchMapping
      parameters:
        - name: MappingId
          in: path
          description: ID or `uuid:{uuid}` of mapping to fetch
          required: true
          schema:
            type: string
        - name: merge
          in: query
          description: Mapping merge mode
          schema:
            $ref: '#/components/schemas/MappingsMergeMode'
            description: Merge mapping mode
        - name: version
          in: query
          description: ID of mapping rules version to retrieve
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MappingFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/MappingFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/MappingFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MappingFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/MappingFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/MappingFetchError'
    put:
      tags:
        - Mappings
      summary: Update Mapping
      description: |
        Uniqueness constraints:
        - mapping.uuid
      operationId: updateMapping
      parameters:
        - name: MappingId
          in: path
          description: ID or `uuid:{uuid}` of mapping to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MappingUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/MappingUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/MappingUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MappingUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/MappingUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/MappingUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MappingUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/MappingUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/MappingUpdateError'
  /fulfillments:
    post:
      tags:
        - Fulfillments
      summary: Create Fulfillments
      description: |
        Uniqueness constraints within organization:
        - fulfillment.extFulfillmentId (when defined)
      operationId: createFulfillments
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FulfillmentsCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/FulfillmentsCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/FulfillmentsCreateRequest'
        required: true
      responses:
        '202':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillmentsCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillmentsCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsCreateError'
    get:
      tags:
        - Fulfillments
      summary: List Fulfillments
      operationId: listFulfillments
      parameters:
        - name: acknowledgedBy
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of acknowledged integrations
          style: form
          explode: false
        - name: autoEngUpdateStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many fulfillments
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Soft deleted fulfillments
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of categories of the fulfillment related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of types of the fulfillment related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extFulfillmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of extFulfillmentId
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of extOrderId
          style: form
          explode: false
        - name: extShipmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of extShipmentId
          style: form
          explode: false
        - name: fulfillmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of fulfillmentId
          style: form
          explode: false
        - name: fulfillmentType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/FulfillmentType'
          description: Fulfillments by list of fulfillment types
          style: form
          explode: false
        - name: groupId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of groupId
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Fulfillments containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of integrationId
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: fulfillmentId,fulfillmentType,shipmentId,extOrderId,actualShipDate,priority,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: locationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of locationId
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: orderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of orderId
          style: form
          explode: false
        - name: orderIntegration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of order integrationId
          style: form
          explode: false
        - name: orderIntegrationAcknowledged
          in: query
          schema:
            type: boolean
          description: Fulfillments by order integration acknowledgement
        - name: orderSource
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of order sources
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: priority
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Priority'
          style: form
          explode: false
        - $ref: '#/components/parameters/requestorId'
        - name: shipmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fulfillments by list of shipmentId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all fulfillments created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many fulfillments
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all fulfillments created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all fulfillments updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all fulfillments updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillmentsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillmentsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsListError'
    delete:
      tags:
        - Fulfillments
      summary: Delete Multiple Fulfillments
      operationId: deleteFulfillments
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: autoEngUpdateStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many fulfillments
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Soft deleted fulfillments
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete fulfillments by list of extShipmentId
          style: form
          explode: false
        - name: extShipmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete fulfillments by list of extShipmentId
          style: form
          explode: false
        - name: fulfillmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete fulfillments by list of fulfillmentId
          style: form
          explode: false
        - name: groupId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete fulfillments by list of groupId
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete fulfillments assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: shipmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete fulfillments by list of shipmentId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete all fulfillments created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many fulfillments
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete all fulfillments created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete all fulfillments updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete all fulfillments updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillmentsDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillmentsDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentsDeleteError'
  /fulfillments/{FulfillmentId}:
    delete:
      tags:
        - Fulfillments
      summary: Delete Fulfillment
      operationId: deleteFulfillment
      parameters:
        - name: FulfillmentId
          in: path
          description: Id or `ext:{extFulfillmentId}` of fulfillment to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Fulfillments
      summary: Fetch Fulfillment
      operationId: fetchFulfillment
      parameters:
        - name: FulfillmentId
          in: path
          description: Id or `ext:{extFulfillmentId}` of fulfillment to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillmentFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillmentFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentFetchError'
  /fulfillments/{FulfillmentId}/acknowledge:
    post:
      tags:
        - Fulfillments
      summary: Acknowledge Fulfillments
      description: Acknowledges delivery of fulfillment information by integration
      operationId: acknowledgeFulfillments
      parameters:
        - name: FulfillmentId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
          description: Id or `ext:{extFulfillmentId}` of fulfillment to acknowledge
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FulfillmentAcknowledgeRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/FulfillmentAcknowledgeRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/FulfillmentAcknowledgeRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillmentAcknowledgeResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentAcknowledgeResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentAcknowledgeResponse'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfillmentAcknowledgeError'
            application/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentAcknowledgeError'
            text/xml:
              schema:
                $ref: '#/components/schemas/FulfillmentAcknowledgeError'
            text/csv: {}
  /fulfillments/{FulfillmentId}/sync:
    post:
      tags:
        - Fulfillments
      summary: Sync Fulfillments
      description: Trigger the fulfillments sync
      operationId: syncFulfillments
      parameters:
        - name: FulfillmentId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FulfillmentSyncRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/FulfillmentSyncRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/FulfillmentSyncRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /schedules:
    post:
      tags:
        - Schedules
      summary: Create Schedule
      description: |
        Create a Schedule that describes recurring weekly windows of coverage.
        Uniqueness constraints within organization:
        - schedule.name (case-sensitive, after trimming)
      operationId: createSchedule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ScheduleCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ScheduleCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ScheduleCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ScheduleCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ScheduleCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ScheduleCreateError'
    get:
      tags:
        - Schedules
      summary: List Schedules
      operationId: listSchedules
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many schedules
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve soft deleted schedules
        - name: keys
          in: query
          schema:
            type: string
            default: scheduleId,name,timezone,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: name
          in: query
          schema:
            type: string
          description: Retrieve schedules by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: scheduleId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of scheduleId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Schedules created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many schedules
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Schedules created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Schedules updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Schedules updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchedulesListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SchedulesListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/SchedulesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchedulesListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/SchedulesListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/SchedulesListError'
    delete:
      tags:
        - Schedules
      summary: Delete Multiple Schedules
      operationId: deleteSchedules
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many schedules
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted schedules
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: scheduleId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete schedules by list of scheduleId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete schedules created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many schedules
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete schedules created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete schedules updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete schedules updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchedulesDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SchedulesDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/SchedulesDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchedulesDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/SchedulesDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/SchedulesDeleteError'
  /schedules/{ScheduleId}:
    delete:
      tags:
        - Schedules
      summary: Delete Schedule
      operationId: deleteSchedule
      parameters:
        - name: ScheduleId
          in: path
          description: Schedule ID to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Schedules
      summary: Fetch Schedule
      operationId: fetchSchedule
      parameters:
        - name: ScheduleId
          in: path
          description: Schedule ID to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ScheduleFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ScheduleFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ScheduleFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ScheduleFetchError'
    put:
      tags:
        - Schedules
      summary: Update Schedule
      description: |
        Uniqueness constraints within organization:
        - schedule.name (case-sensitive, after trimming)
      operationId: updateSchedule
      parameters:
        - name: ScheduleId
          in: path
          description: Schedule ID to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ScheduleUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ScheduleUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ScheduleUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ScheduleUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ScheduleUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ScheduleUpdateError'
  /schedules/{ScheduleId}/locations:
    get:
      tags:
        - Schedules
      summary: List Locations referencing this Schedule
      description: |
        Returns Locations in the same organization that reference the given
        Schedule via `fulfillmentHoursScheduleId`,
        `carrierPickupCutoffScheduleId`, or
        `locationCarrierServiceConfigs[].carrierPickupCutoffScheduleId`. Used
        by clients before deleting a schedule (deletion is blocked while any
        Location references it).
      operationId: listScheduleLocations
      parameters:
        - name: ScheduleId
          in: path
          description: Schedule ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleLocationsResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ScheduleLocationsResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ScheduleLocationsResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /schedules/{ScheduleId}/resolved-exceptions:
    get:
      tags:
        - Schedules
      summary: Resolve a Schedule's exceptions over a date range
      description: |
        Expands the schedule's stored `scheduleExceptions` into concrete dated
        entries over the inclusive `[from, to]` calendar range: `holiday` symbols
        are resolved to their observed dates, one-off `date` entries are filtered
        to the range, and an explicit `date` takes precedence over a `holiday`
        that resolves to the same day (the suppressed source is reported in
        `overrides`). Results are timezone-independent calendar dates; the
        consumer applies the schedule's timezone (or its own, for a templated
        schedule) when merging a resolved date with windows.

        Unlike `fetchSchedule`, this endpoint's response is unconditional — it
        always returns `resolvedScheduleExceptions`. Both `from` and `to` are
        required; the range must be well-formed (`to` on or after `from`) and at
        most 5 years wide.
      operationId: resolveScheduleExceptions
      parameters:
        - name: ScheduleId
          in: path
          description: Schedule ID
          required: true
          schema:
            type: string
        - name: from
          in: query
          required: true
          description: Start of the inclusive resolution range, ISO `YYYY-MM-DD`.
          schema:
            type: string
        - name: to
          in: query
          required: true
          description: End of the inclusive resolution range, ISO `YYYY-MM-DD`.
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleResolvedExceptionsResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ScheduleResolvedExceptionsResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ScheduleResolvedExceptionsResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /shipping_requests:
    post:
      tags:
        - Shipping Requests
      summary: Create Shipping Requests
      description: |
        Uniqueness constraints within organization:
        - shipment.extShipmentId (when defined)
        - shipment.extReferenceId, shipment.fulfillmentIntegrationId (when extReferenceId defined)
      operationId: createShipments
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentsCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ShipmentsCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ShipmentsCreateRequest'
        required: true
      responses:
        '202':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentsCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentsCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsCreateError'
    get:
      tags:
        - Shipping Requests
      summary: List Shipping Requests
      operationId: listShipments
      parameters:
        - name: autoEngUpdateStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
          style: form
          explode: false
        - name: autoEngUpdateStatusUpdatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all shipping requests with autoEngUpdateStatus updated after this date-time
        - name: autoEngUpdateStatusUpdatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all shipping requests with autoEngUpdateStatus updated before this date-time
        - name: cancellationStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ShipmentCancellationStatus'
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many shipping requests
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Soft deleted shipping requests
        - name: emailAddr
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of shippingAddress.email
          style: form
          explode: false
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of categories of the request related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of types of the request related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of External Order Ids
          style: form
          explode: false
        - name: extReferenceId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of extReferenceId
          style: form
          explode: false
        - name: extShipmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of extShipmentId
          style: form
          explode: false
        - name: fulfillmentIntegrationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of fulfillmentIntegrationId
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Shipping requests containing a source document
        - name: holdUntilSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all shipping requests with holdUntil after or at this date-time. Rounded down to the nearest minute
        - name: holdUntilUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all shipping requests with holdUntil before or at this date-time. Rounded down to the nearest minute
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests of these integrations
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: shipmentId,status,extShipmentId,extReferenceId,orderId,extOrderId,orderType,orderCreateTime,priority,shipByDate,expectedDeliveryDate,sentToFulfillmentAt,fulfilledAt,tags,createdAt,updatedAt,orgKey,version
          description: Return these top-level fields
        - name: locationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of locationId
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: orderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of Pipe17 Order Ids
          style: form
          explode: false
        - name: orderType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ShipmentOrderType'
          description: Shipping requests by list of order types
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: priority
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Priority'
          style: form
          explode: false
        - $ref: '#/components/parameters/requestorId'
        - name: shipByDateSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all shipping requests with shipByDate after or at this date-time
        - name: shipByDateUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all shipping requests with shipByDate before or at this date-time
        - name: shipmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of shipmentId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping requests created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many shipping requests
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ShipmentStatus'
          description: Shipping requests by list of statuses
          style: form
          explode: false
        - name: storeId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Filter shipments by store ID
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping requests created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping requests updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping requests updated before this date-time
        - name: version
          in: query
          schema:
            type: number
          description: Shipping requests by version number
        - name: waveStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ShipmentWaveStatus'
          description: Shipping requests by list of wave-driven pickup statuses
          style: form
          explode: false
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsListError'
    delete:
      tags:
        - Shipping Requests
      summary: Delete Multiple Shipping Requests
      operationId: deleteShipments
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many shipping requests
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Soft deleted shipping requests
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of External Order Ids
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests of these integrations
          style: form
          explode: false
        - name: orderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of Pipe17 Order Ids
          style: form
          explode: false
        - name: orderType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ShipmentOrderType'
          description: Shipping requests by list of order types
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete shipping requests assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: shipmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Shipping requests by list of shipmentId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping requests created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many shipping requests
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ShipmentStatus'
          description: Shipping requests by list of statuses
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping requests created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping requests updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping requests updated before this date-time
        - name: version
          in: query
          schema:
            type: number
          description: Shipping requests by version number
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentsDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentsDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentsDeleteError'
  /shipping_requests/{ShipmentId}:
    delete:
      tags:
        - Shipping Requests
      summary: Delete Shipping Request
      operationId: deleteShipment
      parameters:
        - name: ShipmentId
          in: path
          description: Id, `ext:{extShipmentId}`, or `ref:{extReferenceId}` of shipping request to delete
          required: true
          schema:
            type: string
        - name: nested
          in: query
          description: Delete nested entities
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Shipping Requests
      summary: Fetch Shipping Request
      operationId: fetchShipment
      parameters:
        - name: ShipmentId
          in: path
          description: Id, `ext:{extShipmentId}`, or `ref:{extReferenceId}` of shipping request to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
        - name: withTimeline
          in: query
          description: Include timeline of updates when available
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentFetchError'
    put:
      tags:
        - Shipping Requests
      summary: Update Shipping Request
      description: |
        Uniqueness constraints within organization:
        - shipment.extShipmentId (when defined)
        - shipment.extReferenceId, shipment.fulfillmentIntegrationId (when extReferenceId defined)
      operationId: updateShipment
      parameters:
        - name: ShipmentId
          in: path
          description: Shipping Request Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ShipmentUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ShipmentUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentUpdateError'
  /shipping_requests/{ShipmentId}/sync:
    post:
      tags:
        - Shipping Requests
      summary: Sync Shipping Requests
      description: Trigger the shipping requests sync
      operationId: syncShipments
      parameters:
        - name: ShipmentId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentSyncRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ShipmentSyncRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ShipmentSyncRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /shipping_requests/{ShipmentId}/reject:
    post:
      tags:
        - Shipping Requests
      summary: Reject shipping request
      description: |
        Auto-creates rejected Fulfillment for specified SR
      operationId: rejectShipment
      parameters:
        - name: ShipmentId
          in: path
          description: Shipment ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentRejectRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentRejectResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /shipping_requests/{ShipmentId}/update-pick-status:
    put:
      tags:
        - Shipping Requests
      summary: Update Shipment Pick Status
      description: |
        Update the pickStatus of a shipment with state machine validation.
        Valid transitions depend on orderSourceType.
      operationId: updateShipmentPickStatus
      parameters:
        - name: ShipmentId
          in: path
          description: Shipment ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePickStatusRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdatePickStatusResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdatePickStatusError'
  /shipping_requests/{ShipmentId}/complete-pickup:
    post:
      tags:
        - Shipping Requests
      summary: Complete Pickup Handoff
      description: |
        Complete a BOPIS or curbside pickup handoff. Transitions pickStatus to 'shipped'
        and records pickup verification details.
      operationId: completePickup
      parameters:
        - name: ShipmentId
          in: path
          description: Shipment ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompletePickupRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompletePickupResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /shipping_requests/{ShipmentId}/complete-shipment:
    post:
      tags:
        - Shipping Requests
      summary: Complete Ship-from-Store Handoff
      description: |
        Complete a ship-from-store handoff. Transitions pickStatus to 'shipped'
        and records carrier and tracking information.
      operationId: completeShipment
      parameters:
        - name: ShipmentId
          in: path
          description: Shipment ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompleteShipmentRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompleteShipmentResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /shipping_requests/{ShipmentId}/assign-tote:
    put:
      tags:
        - Shipping Requests
      summary: Assign Tote to Shipment
      description: |
        Assign a tote identifier and optional staging location to a shipment.
      operationId: assignToteToShipment
      parameters:
        - name: ShipmentId
          in: path
          description: Shipment ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignToteRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignToteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /shipping_requests/{ShipmentId}/purchase-label:
    post:
      tags:
        - Shipping Requests
      summary: Purchase Shipping Label
      description: |
        Purchase a carrier shipping label for a ship-from-store shipment.
        Returns label URL and tracking number.
      operationId: purchaseShippingLabel
      parameters:
        - name: ShipmentId
          in: path
          description: Shipment ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PurchaseLabelRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseLabelResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /shipping_requests/{ShipmentId}/request-labels:
    post:
      tags:
        - Shipping Requests
      summary: Request Shipping Labels
      description: |
        Generate shipping labels for a shipping request by invoking the
        configured label connector (e.g., EasyPost, FedEx). Returns one label
        per carton, each with an absolute download URL, its tracking number,
        and the carrier and service level actually purchased.

        Retrying with the same extLabelId set returns the existing labels with
        200. A refunded extLabelId cannot be reused, so a retry naming one
        answers 409 with `conflict.refundedExtLabelIds`: buy again with fresh
        extLabelIds. Refusals: 409 when only some of the extLabelIds already have
        labels, when the shipment already carries labels for a different set,
        when its status is not labelable, when no connected label connector
        integration can be resolved for the organization, or when the named
        labelIntegrationId exists but is not connected; 400 for an invalid body,
        or a labelIntegrationId that matches no integration at all.

        A 409 describes the conflicting state in `conflict`: `labels` (the
        labels the shipment already holds, same shape as the 200 `labels`) when
        it is already labelled, `existingExtLabelIds` when only some of the
        requested extLabelIds are already claimed, `refundedExtLabelIds` when a
        requested extLabelId belongs to a refunded label and cannot be reused.
      operationId: requestShippingLabels
      parameters:
        - name: ShipmentId
          in: path
          description: Shipment ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestLabelsBody'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestLabelsResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /shipping_requests/{ShipmentId}/get-rates:
    post:
      tags:
        - Shipping Requests
      summary: Get Shipping Rates
      description: |
        Rate-shop a shipping request: return the available carrier/service
        options and their costs for each carton by invoking the configured
        label connector (e.g., EasyPost). Read-only — no label is purchased
        and no entity is persisted. The caller picks a rate and passes the
        returned extShipmentId + rateId per carton to /request-labels to buy.

        Refusals: 409 when no connected label connector integration can be
        resolved for the organization, or when the named labelIntegrationId
        exists but is not connected; 400 for an invalid body, or a
        labelIntegrationId that matches no integration at all.
      operationId: getShippingRates
      parameters:
        - name: ShipmentId
          in: path
          description: Shipment ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetRatesBody'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRatesResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /shipping_requests/{ShipmentId}/cancel-label:
    post:
      tags:
        - Shipping Requests
      summary: Cancel Shipping Label
      description: |
        Refund a purchased label with the carrier and remove it from the shipment.

        Refusals: 409 when the label is not in a cancellable state, when its
        refund is already finalized, or when neither the label nor the shipment
        references a labeling integration that is still connected.
      operationId: cancelShippingLabel
      parameters:
        - name: ShipmentId
          in: path
          description: Shipment ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelLabelBody'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelLabelResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /shipment_boxes:
    post:
      tags:
        - Shipment Boxes
      summary: Create Shipment Box
      description: |
        Uniqueness constraints within organization:
        - box.extBoxId
      operationId: createShipmentBox
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentBoxCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ShipmentBoxCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ShipmentBoxCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentBoxCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentBoxCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxCreateError'
    get:
      tags:
        - Shipment Boxes
      summary: List Shipment Boxes
      operationId: listShipmentBoxes
      parameters:
        - name: boxId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of boxId
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many shipment boxes
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of categories of the box related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of types of the box related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extBoxId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of extBoxId
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: boxId,extBoxId,shipmentId,createdAt,updatedAt,orgKey,status
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - $ref: '#/components/parameters/requestorId'
        - name: shipmentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of shipmentId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Shipment boxes created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many shipment boxes
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ShipmentBoxStatus'
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Shipment boxes created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Shipment boxes updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Shipment boxes updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentBoxesListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxesListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentBoxesListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxesListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxesListError'
  /shipment_boxes/{BoxId}:
    delete:
      tags:
        - Shipment Boxes
      summary: Delete Shipment Box
      operationId: deleteShipmentBox
      parameters:
        - name: BoxId
          in: path
          description: Box Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Shipment Boxes
      summary: Fetch Shipment Box
      operationId: fetchShipmentBox
      parameters:
        - name: BoxId
          in: path
          description: Box Id to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentBoxFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentBoxFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxFetchError'
    put:
      tags:
        - Shipment Boxes
      summary: Update Shipment Box
      description: |
        Uniqueness constraints within organization:
        - box.name, box.integration
      operationId: updateShipmentBox
      parameters:
        - name: BoxId
          in: path
          description: Box Id to update
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentBoxUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ShipmentBoxUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ShipmentBoxUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentBoxUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentBoxUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShipmentBoxUpdateError'
  /shipment_boxes/{BoxId}/sync:
    post:
      tags:
        - Shipment Boxes
      summary: Sync Shipment Boxes
      description: Trigger the shipment boxes sync
      operationId: syncShipmentBoxes
      parameters:
        - name: BoxId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /shipping_methods:
    post:
      tags:
        - Shipping Methods
      summary: Create Shipping Method
      description: |
        Uniqueness constraints within organization:
        - method.source, method.shippingCarrier, method.shippingService, method.shippingCode
      operationId: createShippingMethod
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShippingMethodCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ShippingMethodCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ShippingMethodCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodCreateError'
    get:
      tags:
        - Shipping Methods
      summary: List Shipping Methods
      operationId: listShippingMethods
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many shipping methods
        - name: isDefault
          in: query
          schema:
            type: boolean
            description: Shipping method default flag
        - name: isPassthrough
          in: query
          schema:
            type: boolean
            description: Shipping method passthrough flag
        - name: keys
          in: query
          schema:
            type: string
            default: methodId,name,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: mappedMethodId
          in: query
          schema:
            type: array
            items:
              type: string
            description: Mapped shipping method Ids
          style: form
          explode: false
        - name: methodId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of methodId
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: shippingCarrier
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of shipping carriers
          style: form
          explode: false
        - name: shippingCode
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of shipping codes
          style: form
          explode: false
        - name: shippingService
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of shipping services
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping Methods created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many shipping methods
        - name: sourceIntegrationId
          in: query
          schema:
            type: array
            items:
              type: string
            description: Shipping method source IntegrationIds
          style: form
          explode: false
        - name: sourceType
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ShippingMethodSourceType'
            description: Shipping method source types
          style: form
          explode: false
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ShippingMethodStatus'
            description: Shipping method statuses
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping Methods created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping Methods updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Shipping Methods updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodsListError'
    delete:
      tags:
        - Shipping Methods
      summary: Delete Multiple Shipping Methods
      operationId: deleteShippingMethods
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many shipping methods
        - name: methodId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete shipping methods by list of methodId
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete shipping methods assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete shipping methods created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many shipping methods
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete shipping methods created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete shipping methods updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete shipping methods updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodsDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodsDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodsDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodsDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodsDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodsDeleteError'
  /shipping_methods/{MethodId}:
    delete:
      tags:
        - Shipping Methods
      summary: Delete Shipping Method
      operationId: deleteShippingMethod
      parameters:
        - name: MethodId
          in: path
          description: Id or `ext:{extMethodId}` of shipping method to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Shipping Methods
      summary: Fetch Shipping Method
      operationId: fetchShippingMethod
      parameters:
        - name: MethodId
          in: path
          description: Id or `ext:{extMethodId}` of shipping method to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodFetchError'
    put:
      tags:
        - Shipping Methods
      summary: Update Shipping Method
      description: |
        Uniqueness constraints within organization:
        - method.source, method.shippingCarrier, method.shippingService, method.shippingCode
      operationId: updateShippingMethod
      parameters:
        - name: MethodId
          in: path
          description: Id or `ext:{extMethodId}` of shipping method to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShippingMethodUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ShippingMethodUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ShippingMethodUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingMethodUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ShippingMethodUpdateError'
  /shipping_methods/{MethodId}/sync:
    post:
      tags:
        - Shipping Methods
      summary: Sync Shipping Methods
      description: Trigger the shipping methods sync
      operationId: syncShippingMethods
      parameters:
        - name: MethodId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /stores:
    post:
      tags:
        - Stores
      summary: Create Store
      description: |
        Uniqueness constraints within organization:
        - store.name
      operationId: createStore
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/StoreCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/StoreCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/StoreCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/StoreCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/StoreCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/StoreCreateError'
    get:
      tags:
        - Stores
      summary: List Stores
      operationId: listStores
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many stores
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve soft deleted stores
        - name: keys
          in: query
          schema:
            type: string
            default: storeId,status,name,address,operationalSettings,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: name
          in: query
          schema:
            type: string
          description: Retrieve stores by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Stores created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many stores
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/StoreStatus'
          description: Retrieve by list of store statuses
          style: form
          explode: false
        - name: storeId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of storeId
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Stores created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Stores updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Stores updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoresListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/StoresListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/StoresListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoresListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/StoresListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/StoresListError'
  /stores/{StoreId}:
    delete:
      tags:
        - Stores
      summary: Delete Store
      operationId: deleteStore
      parameters:
        - name: StoreId
          in: path
          description: Store ID to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Stores
      summary: Fetch Store
      operationId: fetchStore
      parameters:
        - name: StoreId
          in: path
          description: Store ID to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/StoreFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/StoreFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/StoreFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/StoreFetchError'
    put:
      tags:
        - Stores
      summary: Update Store
      description: |
        Uniqueness constraints within organization:
        - store.name
      operationId: updateStore
      parameters:
        - name: StoreId
          in: path
          description: Store ID to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/StoreUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/StoreUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/StoreUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/StoreUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/StoreUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/StoreUpdateError'
  /stores/{StoreId}/locations:
    get:
      tags:
        - Stores
      summary: List Store Locations
      description: Retrieve all locations associated with a store
      operationId: listStoreLocations
      parameters:
        - name: StoreId
          in: path
          description: Store ID
          required: true
          schema:
            type: string
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many locations
        - name: locationType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Filter locations by type
          style: form
          explode: false
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many locations
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreLocationsResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/StoreLocationsResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/StoreLocationsResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /waves:
    post:
      tags:
        - Waves
      summary: Create Wave
      description: |
        Create a wave for grouping shipment requests for fulfillment
      operationId: createWave
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaveCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/WaveCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/WaveCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaveCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WaveCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WaveCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaveCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/WaveCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/WaveCreateError'
    get:
      tags:
        - Waves
      summary: List Waves
      operationId: listWaves
      parameters:
        - name: assignedTo
          in: query
          schema:
            type: string
          description: Filter waves by assigned user ID
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many waves
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve soft deleted waves
        - name: keys
          in: query
          schema:
            type: string
            default: waveId,storeId,type,status,priority,assignedTo,lastWorkedBy,shipmentCount,itemCount,slaDeadline,shipmentIds,holdingLocations,releasedAt,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
          description: Sort by these top-level fields. When omitted, waves are returned by `slaDeadline` ascending (soonest deadline first), with waves that have no `slaDeadline` after all waves that have one.
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: priority
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/WavePriority'
          description: Retrieve by list of wave priorities
          style: form
          explode: false
        - name: shipmentIds
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve waves containing any of these shipment request IDs
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Waves created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many waves
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/WaveStatus'
          description: Retrieve by list of wave statuses
          style: form
          explode: false
        - name: storeId
          in: query
          schema:
            type: string
          description: Filter waves by store ID
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: type
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/WaveType'
          description: Retrieve by list of wave types
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Waves created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Waves updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Waves updated before this date-time
        - name: waveId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of waveId
          style: form
          explode: false
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WavesListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WavesListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WavesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WavesListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/WavesListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/WavesListError'
  /waves/{WaveId}:
    delete:
      tags:
        - Waves
      summary: Delete Wave
      operationId: deleteWave
      parameters:
        - name: WaveId
          in: path
          description: Wave ID to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Waves
      summary: Fetch Wave
      operationId: fetchWave
      parameters:
        - name: WaveId
          in: path
          description: Wave ID to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaveFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WaveFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WaveFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaveFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/WaveFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/WaveFetchError'
    put:
      tags:
        - Waves
      summary: Update Wave
      operationId: updateWave
      parameters:
        - name: WaveId
          in: path
          description: Wave ID to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaveUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/WaveUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/WaveUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaveUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WaveUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WaveUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaveUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/WaveUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/WaveUpdateError'
  /waves/{WaveId}/claim:
    post:
      tags:
        - Waves
      summary: Claim Wave
      description: Assign a wave to a user and set status to in_progress
      operationId: claimWave
      parameters:
        - name: WaveId
          in: path
          description: Wave ID to claim
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaveClaimRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/WaveClaimRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/WaveClaimRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaveClaimResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WaveClaimResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WaveClaimResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /waves/{WaveId}/complete:
    post:
      tags:
        - Waves
      summary: Complete Wave
      description: Mark a wave as completed
      operationId: completeWave
      parameters:
        - name: WaveId
          in: path
          description: Wave ID to complete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaveCompleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WaveCompleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WaveCompleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /waves/{WaveId}/pause:
    post:
      tags:
        - Waves
      summary: Pause Wave
      description: Pause a wave that is in progress
      operationId: pauseWave
      parameters:
        - name: WaveId
          in: path
          description: Wave ID to pause
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WavePauseResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WavePauseResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WavePauseResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /waves/{WaveId}/resume:
    post:
      tags:
        - Waves
      summary: Resume Wave
      description: Resume a paused wave
      operationId: resumeWave
      parameters:
        - name: WaveId
          in: path
          description: Wave ID to resume
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaveResumeResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WaveResumeResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WaveResumeResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /waves/{WaveId}/set-holding-location:
    put:
      tags:
        - Waves
      summary: Set Wave Holding Locations
      description: Temporal holding locations set during pick-pack by store associate
      operationId: setHoldingLocation
      parameters:
        - name: WaveId
          in: path
          description: Wave ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetHoldingLocationRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/SetHoldingLocationRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/SetHoldingLocationRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetHoldingLocationResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SetHoldingLocationResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/SetHoldingLocationResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /stores/{StoreId}/assign-shipment-to-wave:
    post:
      tags:
        - Stores
      summary: Assign Shipment to Wave
      description: |
        Assign a shipment request to a wave. If no suitable draft wave exists,
        a new draft wave will be automatically created.
      operationId: assignShipmentToWave
      parameters:
        - name: StoreId
          in: path
          description: Store ID
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignShipmentToWaveRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/AssignShipmentToWaveRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/AssignShipmentToWaveRequest'
        required: true
      responses:
        '200':
          description: Shipment assigned to existing draft wave
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignShipmentToWaveResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AssignShipmentToWaveResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AssignShipmentToWaveResponse'
        '201':
          description: New wave created and shipment assigned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignShipmentToWaveResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/AssignShipmentToWaveResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/AssignShipmentToWaveResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /stores/{StoreId}/wave-metrics:
    get:
      tags:
        - Stores
      summary: Get Wave Metrics
      description: Aggregate counts by status, type, SLA risk for a store
      operationId: getWaveMetrics
      parameters:
        - name: StoreId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaveMetricsResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /stores/{StoreId}/search-shipments:
    get:
      tags:
        - Stores
      summary: Search Shipments
      description: Search shipments by order number, customer info, or pickup code
      operationId: searchShipments
      parameters:
        - name: StoreId
          in: path
          required: true
          schema:
            type: string
          description: Store ID to scope the search
        - name: locationId
          in: query
          required: true
          schema:
            type: string
          description: Scope search to this location
        - name: q
          in: query
          required: true
          schema:
            type: string
          description: Search query (order number, customer name, phone, or pickup code)
        - name: count
          in: query
          schema:
            type: integer
            default: 20
        - name: searchType
          in: query
          schema:
            type: string
            enum:
              - extOrderId
              - customerName
              - phone
              - pickupCode
          description: Specific field to search (omit for general search)
        - name: skip
          in: query
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShipmentSearchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /stores/{StoreId}/batch-update-pick-status:
    put:
      tags:
        - Stores
      summary: Batch Update Shipment Pick Status
      description: |
        Update pickStatus for multiple shipments in a wave.
      operationId: batchUpdateShipmentPickStatus
      parameters:
        - name: StoreId
          in: path
          required: true
          schema:
            type: string
          description: Store ID
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchUpdatePickStatusRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchUpdatePickStatusResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
  /suppliers:
    post:
      tags:
        - Suppliers
      summary: Create Supplier
      description: |
        Uniqueness constraints within organization:
        - supplier.name
      operationId: createSupplier
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupplierCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/SupplierCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/SupplierCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupplierCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SupplierCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/SupplierCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupplierCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/SupplierCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/SupplierCreateError'
    get:
      tags:
        - Suppliers
      summary: List Suppliers
      operationId: listSuppliers
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many suppliers
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve soft deleted suppliers
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve suppliers by list of categories of the supplier related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve suppliers by list of types of the supplier related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Suppliers containing a source document
        - name: keys
          in: query
          schema:
            type: string
            default: supplierId,name,address,contacts,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: name
          in: query
          schema:
            type: string
          description: Retrieve suppliers by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Suppliers created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many suppliers
        - name: supplierId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of supplierId
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Suppliers created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Suppliers updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Suppliers updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuppliersListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SuppliersListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/SuppliersListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuppliersListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/SuppliersListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/SuppliersListError'
    delete:
      tags:
        - Suppliers
      summary: Delete Multiple Suppliers
      operationId: deleteSuppliers
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many suppliers
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted suppliers
        - name: name
          in: query
          schema:
            type: string
          description: Delete suppliers matching name string
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete suppliers assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete suppliers created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many suppliers
        - name: supplierId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete suppliers by list of supplierId
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete suppliers created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete suppliers updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete suppliers updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuppliersDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SuppliersDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/SuppliersDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuppliersDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/SuppliersDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/SuppliersDeleteError'
  /suppliers/{SupplierId}:
    delete:
      tags:
        - Suppliers
      summary: Delete Supplier
      operationId: deleteSupplier
      parameters:
        - name: SupplierId
          in: path
          description: Supplier ID to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Suppliers
      summary: Fetch Supplier
      operationId: fetchSupplier
      parameters:
        - name: SupplierId
          in: path
          description: Supplier ID to fetch
          required: true
          schema:
            type: string
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupplierFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SupplierFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/SupplierFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupplierFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/SupplierFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/SupplierFetchError'
    put:
      tags:
        - Suppliers
      summary: Update Supplier
      description: |
        Uniqueness constraints within organization:
        - supplier.name
      operationId: updateSupplier
      parameters:
        - name: SupplierId
          in: path
          description: Supplier ID to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupplierUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/SupplierUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/SupplierUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupplierUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SupplierUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/SupplierUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupplierUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/SupplierUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/SupplierUpdateError'
  /suppliers/{SupplierId}/sync:
    post:
      tags:
        - Suppliers
      summary: Sync Suppliers
      description: Trigger the suppliers sync
      operationId: syncSuppliers
      parameters:
        - name: SupplierId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /catalogs:
    post:
      tags:
        - Catalogs
      summary: Create Catalogs
      description: |
        Uniqueness constraints within organization:
        - catalog.extCatalogId, if the extCatalogId is defined
      operationId: createCatalogs
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CatalogsCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CatalogsCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CatalogsCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogsCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogsCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogsCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogsCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogsCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogsCreateError'
    get:
      tags:
        - Catalogs
      summary: List Catalogs
      operationId: listCatalogs
      parameters:
        - name: catalogId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalogs by catalogId list
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many catalogs
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Select the soft deleted catalogs
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalogs by list of categories of the catalog related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalogs by list of types of the catalog related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extCatalogId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalogs by extCatalogId list
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Select catalogs containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalogs of these integrations.
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: catalogId,extCatalogId,name,status,type,currency,priceRule,includeAll,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: name
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalogs by name list
          style: form
          explode: false
        - name: order
          in: query
          schema:
            type: string
            default: '-createdAt'
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Select catalogs created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many catalogs
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CatalogStatus'
          description: Select catalogs by status list
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: type
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CatalogType'
          description: Select catalogs by type list
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Select catalogs created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Select catalogs updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Select catalogs updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogsListError'
  /catalogs/{CatalogId}:
    delete:
      tags:
        - Catalogs
      summary: Delete Catalog
      operationId: deleteCatalog
      parameters:
        - name: CatalogId
          in: path
          description: Catalog Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Catalogs
      summary: Fetch Catalog
      operationId: fetchCatalog
      parameters:
        - name: CatalogId
          in: path
          description: Catalog Id to fetch
          required: true
          schema:
            type: string
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogFetchError'
    put:
      tags:
        - Catalogs
      summary: Update Catalog
      operationId: updateCatalog
      parameters:
        - name: CatalogId
          in: path
          description: Catalog Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CatalogUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CatalogUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CatalogUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogUpdateError'
  /catalog_products:
    post:
      tags:
        - Catalog Products
      summary: Create Catalog Products
      description: |
        Uniqueness constraints within organization:
        - catalogProduct.catalogId, catalogProduct.sku
      operationId: createCatalogProducts
      parameters:
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CatalogProductsCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CatalogProductsCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CatalogProductsCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogProductsCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductsCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductsCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogProductsCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductsCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductsCreateError'
    get:
      tags:
        - Catalog Products
      summary: List Catalog Products
      operationId: listCatalogProducts
      parameters:
        - name: catalogId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalog products by catalogId list
          style: form
          explode: false
        - name: catalogProductId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalog products by catalogProductId list
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many catalog products
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Select the soft deleted catalog products
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalog products by list of categories of the product related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalog products by list of types of the product related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Select catalog products containing a source document
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalog products of these integrations.
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: catalogProductId,catalogId,sku,status,priceRule,quantityRule,volumePricing,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: '-createdAt'
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - $ref: '#/components/parameters/requestorId'
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Select catalog products created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many catalog products
        - name: sku
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select catalog products by sku list
          style: form
          explode: false
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CatalogProductStatus'
          description: Select catalog products by status list
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Select catalog products created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Select catalog products updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Select catalog products updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogProductsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogProductsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductsListError'
  /catalog_products/{CatalogProductId}:
    delete:
      tags:
        - Catalog Products
      summary: Delete Catalog Product
      operationId: deleteCatalogProduct
      parameters:
        - name: CatalogProductId
          in: path
          description: Catalog Product Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Catalog Products
      summary: Fetch Catalog Product
      operationId: fetchCatalogProduct
      parameters:
        - name: CatalogProductId
          in: path
          description: Catalog Product Id to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestorId'
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogProductFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogProductFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductFetchError'
    put:
      tags:
        - Catalog Products
      summary: Update Catalog Product
      operationId: updateCatalogProduct
      parameters:
        - name: CatalogProductId
          in: path
          description: Catalog Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/requestorId'
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CatalogProductUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/CatalogProductUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/CatalogProductUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogProductUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogProductUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/CatalogProductUpdateError'
  /payments:
    post:
      tags:
        - Payments
      summary: Create Payments
      description: |
        Uniqueness constraints within organization:
        - payment.orderId, payment.extPaymentId
      operationId: createPayments
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentsCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/PaymentsCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/PaymentsCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/PaymentsCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/PaymentsCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/PaymentsCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/PaymentsCreateError'
    get:
      tags:
        - Payments
      summary: List Payments
      operationId: listPayments
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many payments
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Select the soft deleted payments
        - name: extOrderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select payments by extOrderId list
          style: form
          explode: false
        - name: extPaymentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select payments by extPaymentId list
          style: form
          explode: false
        - name: keys
          in: query
          schema:
            type: string
            default: orderId,extOrderId,paymentId,extPatmentId,paymentStatus,status,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: '-createdAt'
          description: Sort by these top-level fields
        - name: orderId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select payments by orderId list
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: paymentId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Select payments by paymentId list
          style: form
          explode: false
        - name: paymentStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PaymentTransactionStatus'
          description: Select payments by paymentStatus list
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Select payments created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many payments
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PaymentStatus'
          description: Select payments by status list
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: type
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PaymentType'
          description: Select payments by type list
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Select payments created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Select payments updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Select payments updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/PaymentsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/PaymentsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/PaymentsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/PaymentsListError'
  /payments/{PaymentId}:
    delete:
      tags:
        - Payments
      summary: Delete Payment
      operationId: deletePayment
      parameters:
        - name: PaymentId
          in: path
          description: Payment ID to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Payments
      summary: Fetch Payment
      operationId: fetchPayment
      parameters:
        - name: PaymentId
          in: path
          description: Payment ID to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/PaymentFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/PaymentFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/PaymentFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/PaymentFetchError'
    put:
      tags:
        - Payments
      summary: Update Payment
      description: |
        Uniqueness constraints within organization:
        - payment.orderId, payment.extPaymentId
      operationId: updatePayment
      parameters:
        - name: PaymentId
          in: path
          description: Payment ID to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/PaymentUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/PaymentUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/PaymentUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/PaymentUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/PaymentUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/PaymentUpdateError'
  /products:
    post:
      tags:
        - Products
      summary: Create Products
      description: |
        Uniqueness constraints within organization:
        - product.sku
        - product.extProductId (when defined)
        - product.mappedProduct.sku, product.mappedProduct.integrationId
        - product.mappedProduct.extProductId, product.mappedProduct.integrationId
        - product.sku, product.mappedProduct.integrationId
        - product.sku, product.published.integrationId
        - product.published.integrationId, product.published.sku
        - product.published.integrationId, product.published.extProductId
      operationId: createProducts
      parameters:
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductsCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ProductsCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ProductsCreateRequest'
        required: true
      responses:
        '202':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductsCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProductsCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ProductsCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductsCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProductsCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ProductsCreateError'
    get:
      tags:
        - Products
      summary: List Products
      operationId: listProducts
      parameters:
        - name: autoEngUpdateStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
          style: form
          explode: false
        - name: autoEngUpdateStatusUpdatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all products with autoEngUpdateStatus updated after this date-time
        - name: autoEngUpdateStatusUpdatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Fetch all products with autoEngUpdateStatus updated before this date-time
        - name: bundleSKU
          in: query
          schema:
            type: string
          description: Retrieve all products of the bundle with this SKU
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many products
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Retrieve soft deleted products
        - name: exceptionCategoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve products by list of categories of the product related exceptions
          style: form
          explode: false
        - name: exceptionType
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve products by list of types of the product related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
          style: form
          explode: false
        - name: extProductId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve products by list of extProductId
          style: form
          explode: false
        - name: hasSourceDoc
          in: query
          schema:
            type: boolean
          description: Retrieve products containing a source document
        - name: inBundle
          in: query
          schema:
            type: string
          description: Retrieve all bundles containing the item with this SKU
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve products of these integrations
          style: form
          explode: false
        - name: inventoryNotTracked
          in: query
          schema:
            type: boolean
          description: Retrieve products by inventoryNotTracked value (default - any)
        - name: keys
          in: query
          schema:
            type: string
            default: inventoryNotTracked,productId,extProductId,parentExtProductId,status,types,sku,name,tags,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: mappedSKU
          in: query
          schema:
            type: boolean
          description: Retrieve products with SKU mapping defined
        - name: name
          in: query
          schema:
            type: string
          description: Retrieve products by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: notPublished
          in: query
          schema:
            type: boolean
          description: Retrieve products that do not have "published channels"
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: parentExtProductId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve all variants of a parent product by list of external id
          style: form
          explode: false
        - name: productId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve by list of productId
          style: form
          explode: false
        - name: publishedSKU
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve all products with published SKU
          style: form
          explode: false
        - name: publishedStatus
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ProductPublishedItemStatus'
          description: Retrieve all products with published status
          style: form
          explode: false
        - name: requestorId
          in: query
          schema:
            type: string
          description: Requestor Id (- forcibly replaced with integration ID if the request came from an integration)
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all products created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many products
        - name: sku
          in: query
          schema:
            type: array
            items:
              type: string
          description: Retrieve products by list of SKU
          style: form
          explode: false
        - name: sku_gt
          in: query
          schema:
            type: string
          description: Retrieve products in which SKU is lexicographically greater than the specified value (- 'sku' and 'sku_gt'|'sku_lt' are mutually exclusive)
        - name: sku_lt
          in: query
          schema:
            type: string
          description: Retrieve products in which SKU is lexicographically less than the specified value (- 'sku' and 'sku_gt'|'sku_lt' are mutually exclusive)
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ProductStatus'
          description: Retrieve all products with this status
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: types
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ProductType'
          description: Retrieve all products matching specified types
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all products created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all products updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Retrieve all products updated before this date-time
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProducstListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProducstListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ProducstListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProducstListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProducstListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ProducstListError'
    delete:
      tags:
        - Products
      summary: Delete Multiple Products
      operationId: deleteProducts
      parameters:
        - name: action
          in: query
          schema:
            $ref: '#/components/schemas/ListDeleteAction'
          description: Return the list of what to delete, or delete softly
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Delete at most this many products
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Delete soft deleted products
        - name: extProductId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete products by list of extProductId
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete products of these integrations
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Delete products assigned these orgModes.
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: parentExtProductId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete all variants of a parent product by list of external id
          style: form
          explode: false
        - name: productId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Delete products by list of productId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Delete products created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many products
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ProductStatus'
          description: Delete products with this status
          style: form
          explode: false
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
        - name: types
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ProductType'
          description: Delete products matching specified types
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Delete products created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Delete products updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Delete products updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductsDeleteResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProductsDeleteResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ProductsDeleteResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductsDeleteError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProductsDeleteError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ProductsDeleteError'
  /products/{ProductId}:
    delete:
      tags:
        - Products
      summary: Delete Product
      operationId: deleteProduct
      parameters:
        - name: ProductId
          in: path
          description: Id, `sku:{sku}`, or `ext:{extProductId}` of product to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Products
      summary: Retrieve Product
      operationId: fetchProduct
      parameters:
        - name: ProductId
          in: path
          description: Id, `sku:{sku}`, or `ext:{extProductId}` of product to fetch
          required: true
          schema:
            type: string
        - name: sourceDocVersion
          in: query
          description: Fetch specific vendor source doc version if available
          required: false
          schema:
            type: number
        - $ref: '#/components/parameters/withSKUMapping'
        - name: withSourceDoc
          in: query
          description: Include vendor source doc if available
          required: false
          schema:
            type: boolean
        - name: withSourceDocVersions
          in: query
          description: Include available vendor source doc versions
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProductFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ProductFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProductFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ProductFetchError'
    put:
      tags:
        - Products
      summary: Update Product
      description: |
        Uniqueness constraints within organization:
        - product.sku
        - product.extProductId (when defined)
        - product.mappedProduct.sku, product.mappedProduct.integrationId
        - product.mappedProduct.extProductId, product.mappedProduct.integrationId
        - product.sku, product.mappedProduct.integrationId
        - product.sku, product.published.integrationId
        - product.published.integrationId, product.published.sku
        - product.published.integrationId, product.published.extProductId      operationId: createProducts
      operationId: updateProduct
      parameters:
        - name: ProductId
          in: path
          description: Id, `sku:{sku}`, or `ext:{extProductId}` of product to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ProductUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ProductUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProductUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/ProductUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/ProductUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/ProductUpdateError'
  /products/{ProductId}/sync:
    post:
      tags:
        - Products
      summary: Sync Products
      description: Trigger the products sync
      operationId: syncProducts
      parameters:
        - name: ProductId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductSyncRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/ProductSyncRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/ProductSyncRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /organizations:
    post:
      tags:
        - Organizations
      summary: Create Organization
      operationId: createOrganization
      parameters:
        - name: ownerMode
          in: query
          schema:
            type: string
            enum:
              - primary
              - owner
              - both
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrganizationCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrganizationCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrganizationCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrganizationCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrganizationCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrganizationCreateError'
    get:
      tags:
        - Organizations
      summary: List Organizations
      operationId: listOrganizations
      parameters:
        - name: accountId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Organizations by list of accountId
          style: form
          explode: false
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many organizations
        - name: deleted
          in: query
          schema:
            type: boolean
          description: Fetch only soft-deleted organizations (ignore status)
        - name: email
          in: query
          schema:
            type: string
          description: Organizations by email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: keys
          in: query
          schema:
            type: string
            default: orgKey,accountId,name,tier,status,isHoldingOrg,createdAt,updatedAt
          description: Return these top-level fields
        - name: monitoringEnabled
          in: query
          schema:
            type: boolean
          description: Organizations by monitoringEnabled value
        - name: name
          in: query
          schema:
            type: string
          description: Organizations by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: orgKey
          in: query
          schema:
            type: array
            items:
              type: string
          description: Organizations by list of orgKey
          style: form
          explode: false
        - name: orgMode
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationMode'
          description: Organizations by list of modes
          style: form
          explode: false
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: phone
          in: query
          schema:
            type: string
          description: Organizations by phone (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Organizations created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many organizations
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrganizationStatus'
          description: Organizations by list of statuses
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Organizations created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Organizations updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Organizations updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationsListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrganizationsListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrganizationsListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationsListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrganizationsListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrganizationsListError'
  /organizations/{OrganizationId}:
    delete:
      tags:
        - Organizations
      summary: Delete Organization
      operationId: deleteOrganization
      parameters:
        - name: OrganizationId
          in: path
          description: Organization Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Organizations
      summary: Fetch Organization
      operationId: fetchOrganization
      parameters:
        - name: OrganizationId
          in: path
          description: Organization Id to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrganizationFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrganizationFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrganizationFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrganizationFetchError'
    put:
      tags:
        - Organizations
      summary: Update Organization
      operationId: updateOrganization
      parameters:
        - name: OrganizationId
          in: path
          description: Organization Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrganizationUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrganizationUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrganizationUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrganizationUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/OrganizationUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/OrganizationUpdateError'
  /organizations/{OrgKey}/mode:
    post:
      tags:
        - Organizations
      summary: Switch organization mode
      operationId: switchOrganization
      parameters:
        - name: OrgKey
          in: path
          description: orgKey to switch
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationSwitchRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrganizationSwitchRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrganizationSwitchRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /organizations/{OrgKey}/cleanup:
    post:
      tags:
        - Organizations
      summary: Cleanup organization
      operationId: cleanupOrganization
      parameters:
        - name: OrgKey
          in: path
          description: orgKey to cleanup
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationCleanupRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrganizationCleanupRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrganizationCleanupRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /organizations/{OrgKey}/move:
    post:
      tags:
        - Organizations
      summary: Move organization to another account
      operationId: moveOrganization
      parameters:
        - name: OrgKey
          in: path
          description: orgKey to move
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationMoveRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrganizationMoveRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrganizationMoveRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /organizations/{OrgKey}/detach:
    post:
      tags:
        - Organizations
      summary: Detach secondary organization into separate account
      operationId: detachOrganization
      parameters:
        - name: OrgKey
          in: path
          description: orgKey to detach
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationDetachRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/OrganizationDetachRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/OrganizationDetachRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /roles:
    post:
      tags:
        - Roles
      summary: Create Role
      description: |
        Uniqueness constraints within organization:
        - role.name
      operationId: createRole
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/RoleCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/RoleCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/RoleCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/RoleCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/RoleCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/RoleCreateError'
    get:
      tags:
        - Roles
      summary: List Roles
      operationId: listRoles
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many roles
        - name: keys
          in: query
          schema:
            type: string
            default: isPublic,roleId,name,status,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: name
          in: query
          schema:
            type: string
          description: Roles by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: roleId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Roles by list of roleId
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Roles created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many roles
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/RoleStatus'
          description: Roles by list of statuses
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Roles created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Roles updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Roles updated before this date-time
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RolesListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/RolesListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/RolesListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RolesListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/RolesListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/RolesListError'
  /roles/{RoleId}:
    delete:
      tags:
        - Roles
      summary: Delete Role
      operationId: deleteRole
      parameters:
        - name: RoleId
          in: path
          description: Role Id to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Roles
      summary: Fetch Role
      operationId: fetchRole
      parameters:
        - name: RoleId
          in: path
          description: Role Id to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/RoleFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/RoleFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/RoleFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/RoleFetchError'
    put:
      tags:
        - Roles
      summary: Update Role
      description: |
        Uniqueness constraints within organization:
        - role.name
      operationId: updateRole
      parameters:
        - name: RoleId
          in: path
          description: Role Id to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/RoleUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/RoleUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/RoleUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/RoleUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/RoleUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/RoleUpdateError'
  /inventory:
    post:
      tags:
        - Inventory
      summary: Create Inventory Log Items
      description: |
        Uniqueness constraints:
        - inventory.event, inventory.entityId, inventory.sku (when entityId and materialEvent defined)
      operationId: createInventory
      parameters:
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InventoryCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/InventoryCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/InventoryCreateRequest'
        required: true
      responses:
        '202':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InventoryCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/InventoryCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/InventoryCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InventoryCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/InventoryCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/InventoryCreateError'
    get:
      tags:
        - Inventory
      summary: List Inventory Log Items
      operationId: listInventory
      parameters:
        - name: available
          in: query
          schema:
            type: integer
          description: Fetch inventory if 'available' value is equal to specified one (- 'available' and 'available_gt'|'available_lt' are mutually exclusive)
        - name: available_gt
          in: query
          schema:
            type: integer
          description: Fetch inventory if 'available' value is greater than specified one (- 'available' and 'available_gt'|'available_lt' are mutually exclusive)
        - name: available_lt
          in: query
          schema:
            type: integer
          description: Fetch inventory if 'available' value is less than specified one (- 'available' and 'available_gt'|'available_lt' are mutually exclusive)
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many inventory items
        - name: entityId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Return inventory items related to certain event record by record id
          style: form
          explode: false
        - name: event
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/EventType'
          description: Fetch inventory by event list  (- allowed only with 'ledger' flag)
          style: form
          explode: false
        - name: groupId
          in: query
          schema:
            type: array
            items:
              type: string
          description: |
            Fetch group-level inventory rows by Location Group ID list (mirrors 'locationId'). Use `*` to select all groups. With 'totals', returns the rollup across the requested groups (or all groups for `*`). Default totals are location-only and never include group-level rows.
          style: form
          explode: false
        - name: integration
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch inventory by integrations id list  (- ignored in 'totals' queries)
          style: form
          explode: false
        - name: inventoryId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Inventory items by list of inventoryId
          style: form
          explode: false
        - name: inventoryNotTracked
          in: query
          schema:
            type: boolean
          description: Fetch inventory by the inventoryNotTracked value  (- ignored in 'totals' queries)
        - name: keys
          in: query
          schema:
            type: string
            default: All
          description: Return these top-level fields
        - name: ledger
          in: query
          schema:
            type: boolean
          description: Return inventory ledger information (- not allowed with the 'totals' flag)
        - name: locationId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch inventory by its location ID
          style: form
          explode: false
        - name: onHand
          in: query
          schema:
            type: integer
          description: Fetch inventory if 'onHand' value is equal to specified one (- 'onHand' and 'onHand_gt'|'onHand_lt' are mutually exclusive)
        - name: onHand_gt
          in: query
          schema:
            type: integer
          description: Fetch inventory if 'onHand' value is greater than specified one (- 'onHand' and 'onHand_gt'|'onHand_lt' are mutually exclusive)
        - name: onHand_lt
          in: query
          schema:
            type: integer
          description: Fetch inventory if 'onHand' value is less than specified one
        - name: order
          in: query
          schema:
            type: string
            default: '-updatedAt'
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: requestorId
          in: query
          schema:
            type: string
          description: Id of the inventory totals requestor (- allowed only with the 'totals' flag; used to select available locations; forcibly replaced with integration ID if the request came from an integration)
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Inventory created after this date,time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many inventory items
        - name: sku
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch inventory by its SKU (- 'sku' and 'sku_gt'|'sku_lt' are mutually exclusive)
          style: form
          explode: false
        - name: sku_gt
          in: query
          schema:
            type: string
          description: Fetch inventory in which SKU is lexicographically greater than the specified value (- 'sku' and 'sku_gt'|'sku_lt' are mutually exclusive)
        - name: sku_lt
          in: query
          schema:
            type: string
          description: Fetch inventory in which SKU is lexicographically less than the specified value (- 'sku' and 'sku_gt'|'sku_lt' are mutually exclusive)
        - name: tags
          in: query
          schema:
            $ref: '#/components/schemas/EntityTags'
          description: Fetch inventory by tags (- not allowed with either 'ledger' or 'totals' flag)
        - name: totals
          in: query
          schema:
            type: boolean
          description: Return inventory totals across all locations (- not allowed with the 'ledger' flag)
        - name: type
          in: query
          schema:
            type: string
            enum:
              - virtual
              - physical
          description: '''virtual'' - fetch virtual inventory status, ''physical'' - not virtual (- not allowed with the ''ledger'' flag)'
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Inventory created before this date,time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Inventory updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Inventory updated before this date-time
        - name: vendorSKU
          in: query
          schema:
            type: array
            items:
              type: string
          description: Fetch inventory by its vendorSKU
          style: form
          explode: false
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InventoryListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/InventoryListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/InventoryListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InventoryListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/InventoryListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/InventoryListError'
    put:
      tags:
        - Inventory
      summary: Update Inventory
      description: |
        Uniqueness constraints:
        - inventory.event, inventory.entityId, inventory.sku (when entityId and materialEvent defined)
      operationId: updateInventory
      parameters:
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
        - $ref: '#/components/parameters/withSKUMapping'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InventoryUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/InventoryUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/InventoryUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InventoryUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/InventoryUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/InventoryUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InventoryUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/InventoryUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/InventoryUpdateError'
  /inventory/{InventoryId}:
    get:
      tags:
        - Inventory
      summary: Fetch Inventory Log Item
      operationId: fetchInventory
      parameters:
        - name: InventoryId
          in: path
          description: Inventory Item ID to fetch
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/withSKUMapping'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InventoryFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/InventoryFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/InventoryFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InventoryFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/InventoryFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/InventoryFetchError'
  /inventory/{InventoryId}/sync:
    post:
      tags:
        - Inventory
      summary: Sync Inventory
      description: Trigger the inventory sync
      operationId: syncInventory
      parameters:
        - name: InventoryId
          in: path
          required: true
          schema:
            type: array
            items:
              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/csv: {}
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/csv: {}
  /webhooks:
    post:
      tags:
        - Webhooks
      summary: Create Webhook
      description: |
        Uniqueness constraints for users of organization:
        - webhook.url
      operationId: createWebhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/WebhookCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/WebhookCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WebhookCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WebhookCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/WebhookCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/WebhookCreateError'
    get:
      tags:
        - Webhooks
      summary: List Webhooks
      operationId: listWebhooks
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many webhooks
        - name: keys
          in: query
          schema:
            type: string
            default: createdAt,orgKey,topics,updatedAt,webhookId
          description: Return these top-level fields
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: related
          in: query
          schema:
            type: boolean
          description: Include related webhooks
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Webhooks created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many webhooks
        - name: topic
          in: query
          schema:
            $ref: '#/components/schemas/WebhookTopics'
          description: Webhooks for this topic
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Webhooks created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Webhooks updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Webhooks updated before this date-time
        - name: webhookId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Webhooks by list of webhookId
          style: form
          explode: false
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhooksListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WebhooksListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WebhooksListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhooksListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/WebhooksListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/WebhooksListError'
  /webhooks/{WebhookId}:
    delete:
      tags:
        - Webhooks
      summary: Delete Webhook
      operationId: deleteWebhook
      parameters:
        - name: WebhookId
          in: path
          description: Webhook ID to delete
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Webhooks
      summary: Fetch Webhook
      operationId: fetchWebhook
      parameters:
        - name: WebhookId
          in: path
          description: Webhook ID to fetch
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WebhookFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WebhookFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/WebhookFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/WebhookFetchError'
    put:
      tags:
        - Webhooks
      summary: Update Webhook
      description: |
        Uniqueness constraints for users of organization:
        - webhook.url
      operationId: updateWebhook
      parameters:
        - name: WebhookId
          in: path
          description: Webhook ID to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/WebhookUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/WebhookUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/WebhookUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/WebhookUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/WebhookUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/WebhookUpdateError'
  /users:
    post:
      tags:
        - Users
      summary: Create User
      description: |
        Uniqueness constraints within organization:
        - user.email
      operationId: createUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/UserCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/UserCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserCreateError'
    get:
      tags:
        - Users
      summary: List Users
      operationId: listUsers
      parameters:
        - name: count
          in: query
          schema:
            type: integer
            format: int32
            default: 100
          description: Return at most this many users
        - name: email
          in: query
          schema:
            type: string
          description: Users by email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: identityId
          in: query
          schema:
            type: string
          description: Users by identityId
        - name: keys
          in: query
          schema:
            type: string
            default: userId,address,description,name,email,phone,roles,status,timeZone,createdAt,updatedAt,orgKey
          description: Return these top-level fields
        - name: name
          in: query
          schema:
            type: string
          description: Users by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - name: order
          in: query
          schema:
            type: string
            default: createdAt
          description: Sort by these top-level fields
        - name: pagination
          in: query
          schema:
            type: string
            enum:
              - disabled
          description: Exclude pagination info from the response
        - name: roles
          in: query
          schema:
            type: array
            items:
              type: string
          description: Users by list of role names or/and role ids
          style: form
          explode: false
        - name: since
          in: query
          schema:
            type: string
            format: date-time
          description: Users created after this date-time
        - name: skip
          in: query
          schema:
            type: integer
            format: int32
            default: 0
          description: Skip this many users
        - name: status
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/UserStatus'
          description: Users by list of statuses
          style: form
          explode: false
        - name: until
          in: query
          schema:
            type: string
            format: date-time
          description: Users created before this date-time
        - name: updatedSince
          in: query
          schema:
            type: string
            format: date-time
          description: Users updated after this date-time
        - name: updatedUntil
          in: query
          schema:
            type: string
            format: date-time
          description: Users updated before this date-time
        - name: userId
          in: query
          schema:
            type: array
            items:
              type: string
          description: Users by list of userId
          style: form
          explode: false
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersListResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/UsersListResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/UsersListResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersListError'
            application/xml:
              schema:
                $ref: '#/components/schemas/UsersListError'
            text/xml:
              schema:
                $ref: '#/components/schemas/UsersListError'
  /users/{UserId}:
    delete:
      tags:
        - Users
      summary: Delete User
      operationId: deleteUser
      parameters:
        - name: UserId
          in: path
          description: User ID to delete
          required: true
          schema:
            type: string
        - name: nested
          in: query
          description: Delete nested entities
          schema:
            type: boolean
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
    get:
      tags:
        - Users
      summary: Fetch User
      operationId: fetchUser
      parameters:
        - name: UserId
          in: path
          description: User ID or `me`
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserFetchError'
    put:
      tags:
        - Users
      summary: Update User
      description: |
        Uniqueness constraints within organization:
        - user.email
      operationId: updateUser
      parameters:
        - name: UserId
          in: path
          description: User ID to update
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/UserUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/UserUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateError'
  /users/{UserId}/reset_password:
    post:
      tags:
        - Users
      summary: Reset user's password
      operationId: resetPassword
      parameters:
        - name: UserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateError'
            text/csv: {}
  /users/{UserId}/reinvite:
    post:
      tags:
        - Users
      summary: Send verification email to user
      operationId: reinviteUser
      parameters:
        - name: UserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Success'
            application/xml:
              schema:
                $ref: '#/components/schemas/Success'
            text/xml:
              schema:
                $ref: '#/components/schemas/Success'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
            application/xml:
              schema:
                $ref: '#/components/schemas/Failure'
            text/xml:
              schema:
                $ref: '#/components/schemas/Failure'
  /users/{UserId}/reset_mfa:
    post:
      tags:
        - Users
      summary: Reset user's MFA
      operationId: resetMFA
      parameters:
        - name: UserId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
          application/xml:
            schema:
              type: object
          text/xml:
            schema:
              type: object
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserUpdateError'
            text/csv: {}
  /userpreferences:
    post:
      tags:
        - User Preferences
      summary: Create User Preferences
      description: |
        Uniqueness constraints within organization:
        - userId
      operationId: createUserPreferences
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserPreferencesCreateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/UserPreferencesCreateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/UserPreferencesCreateRequest'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreferencesCreateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesCreateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesCreateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreferencesCreateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesCreateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesCreateError'
  /userpreferences/{UserPreferencesId}:
    get:
      tags:
        - User Preferences
      summary: Fetch User Preferences
      operationId: fetchUserPreferences
      parameters:
        - name: UserPreferencesId
          in: path
          description: User Preferences ID or `me`
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreferencesFetchResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesFetchResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesFetchResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreferencesFetchError'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesFetchError'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesFetchError'
    put:
      tags:
        - User Preferences
      summary: Update User Preferences
      operationId: updateUserPreferences
      parameters:
        - name: UserPreferencesId
          in: path
          description: User Preferences ID or `me`
          required: true
          schema:
            type: string
        - name: keys
          in: query
          schema:
            type: string
            default: ''
          description: Comma-separated fields to be returned ("*" - all)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserPreferencesUpdateRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/UserPreferencesUpdateRequest'
          text/xml:
            schema:
              $ref: '#/components/schemas/UserPreferencesUpdateRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreferencesUpdateResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesUpdateResponse'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesUpdateResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreferencesUpdateError'
            application/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesUpdateError'
            text/xml:
              schema:
                $ref: '#/components/schemas/UserPreferencesUpdateError'
  /convert:
    servers:
      - url: https://schema.pipe17.com
        description: production
    post:
      tags:
        - Convert
      summary: Convert a source object to target using specified mapping rules
      operationId: convert
      security:
        - ApiKeyAuth: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConvertRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConvertResponse'
        default:
          description: Failed operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Failure'
components:
  securitySchemes:
    Pipe17KeyAuth:
      type: apiKey
      name: X-Pipe17-Key
      in: header
    ApiKeyAuth:
      type: apiKey
      name: x-api-key
      in: header
  parameters:
    count:
      name: count
      in: query
      description: Max number of items to return
      schema:
        type: integer
        format: int32
        default: 100
    deleted:
      name: deleted
      in: query
      schema:
        type: boolean
      description: Whether to retrieve soft deleted items
    keys:
      name: keys
      in: query
      schema:
        type: string
        description: Return these top-level fields
    order:
      name: order
      in: query
      schema:
        type: string
        default: createdAt
      description: Sort by these top-level field
    orgKey:
      name: orgKey
      in: query
      description: Organization key
      schema:
        type: string
    pagination:
      name: pagination
      in: query
      schema:
        type: string
        enum:
          - disabled
        description: Exclude pagination info from the response
    requestorId:
      name: requestorId
      in: query
      schema:
        type: string
      description: |
        Integration whose SKU mapping `withSKUMapping` should apply. Ignored for requests made with an integration API key, which already identify one; supply it when calling with a master key or user token.
    since:
      name: since
      in: query
      schema:
        type: string
        format: date-time
      description: Select items created after this date-time
    skip:
      name: skip
      in: query
      schema:
        type: integer
        format: int32
        default: 0
      description: Number of items to skip
    until:
      name: until
      in: query
      schema:
        type: string
        format: date-time
      description: Select items created before this date-time
    updatedSince:
      name: updatedSince
      in: query
      schema:
        type: string
        format: date-time
      description: Select items updated after this date-time
    updatedUntil:
      name: updatedUntil
      in: query
      schema:
        type: string
        format: date-time
      description: Select items updated before this date-time
    withSKUMapping:
      name: withSKUMapping
      in: query
      schema:
        type: boolean
      description: |
        Translate between your channel SKUs and Pipe17 canonical SKUs. On read, `sku` is replaced by the channel SKU mapped to your integration and the canonical SKU it replaced is returned as `originalSKU`. On write, a channel SKU in `sku` is resolved to the canonical SKU and the value supplied is recorded as `vendorSKU`. A SKU with no mapping is left unchanged. Defaults to the integration's `skuMapping` setting.
  schemas:
    AISession:
      allOf:
        - type: object
          required:
            - aiSessionId
            - userId
          properties:
            aiSessionId:
              type: string
              description: The unique identifier of the AI session.
            userId:
              type: string
              description: The unique identifier of the user that the AI session is associated with.
            hasFeedback:
              type: boolean
              description: Indicates if any associated event has feedback.
        - $ref: '#/components/schemas/AISessionCreateData'
        - $ref: '#/components/schemas/CoreObject'
    AISessionCreateData:
      type: object
      required:
        - userId
        - action
      properties:
        action:
          type: string
          enum:
            - explain
            - generate
            - chat
          description: The action that the AI session is associated with.
        userId:
          type: string
          description: The unique identifier of the user that the AI session is associated with.
        entity:
          $ref: '#/components/schemas/AISessionEntity'
        feedback:
          $ref: '#/components/schemas/FeedbackInfo'
          description: The feedback that the user provided for the AI session.
        isInternalUser:
          type: boolean
          description: Whether the user is an internal user or not.
        isLocked:
          type: boolean
          description: Whether the AI session is locked. When locked, no new events can be added. Generally used when messages go beyond a certain threshold.
        reviewed:
          type: boolean
          description: Indicates if the feedback associated with this AI session has been reviewed by Pipe17 staff.
        topics:
          $ref: '#/components/schemas/AISessionTopics'
          description: The topics that the AI session is associated with.
    AISessionCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            aiSession:
              $ref: '#/components/schemas/AISessionCreateData'
    AISessionCreateRequest:
      allOf:
        - $ref: '#/components/schemas/AISessionCreateData'
      xml:
        name: request
    AISessionCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            aiSession:
              $ref: '#/components/schemas/AISession'
    AISessionEntity:
      type: string
      description: Exception Entity Name
      enum:
        - accounts
        - apikey
        - arrivals
        - automation_rules
        - automation_runs
        - automations
        - changelog
        - connectors
        - customers
        - custom_objects
        - contacts
        - entity_filters
        - entity_schemas
        - events
        - exception_categories
        - exception_filters
        - exceptions
        - fulfillments
        - functions
        - integration_actions
        - integration_state
        - integrations
        - inventory
        - inventory_groups
        - inventoryrules
        - invoices
        - jobs
        - labels
        - locations
        - location_groups
        - lookup_objects
        - mappings
        - metrics
        - notes
        - delivery_promises
        - order_routing_runs
        - order_routings
        - payments
        - orders
        - organizations
        - catalogs
        - catalog_products
        - pricing
        - products
        - purchases
        - receipts
        - references
        - refunds
        - returns
        - roles
        - routings
        - shipment_boxes
        - shipments
        - shipping_methods
        - statement_transactions
        - statements
        - cycle_counts
        - cycle_count_entries
        - suppliers
        - trackings
        - transfers
        - usagedata
        - usageplans
        - users
        - vendor_schemas
        - webhooks
    AISessionEvent:
      allOf:
        - type: object
          required:
            - aiSessionEventId
            - aiSessionId
            - type
          properties:
            aiSessionEventId:
              type: string
              description: The unique identifier of the AI session event.
            aiSessionId:
              type: string
              description: The unique identifier of the AI session.
            feedback:
              $ref: '#/components/schemas/FeedbackInfo'
              description: The feedback that the user provided for the AI session event.
        - $ref: '#/components/schemas/AISessionEventCreateData'
        - $ref: '#/components/schemas/CoreObject'
    AISessionEventCoreData:
      type: object
      required:
        - aiSessionId
        - eventCreatedAt
        - type
      properties:
        aiSessionId:
          type: string
          description: The unique identifier of the AI session this event is associated with.
        eventCreatedAt:
          type: string
          format: date-time
          description: The date and time the event was created.
        type:
          $ref: '#/components/schemas/AISessionEventType'
          description: The type of event.
        meta:
          type: object
          description: Additional metadata for the event.
        props:
          type: object
          description: Properties for the event. This is open ended. Use type to determine schema.
          additionalProperties:
            $ref: '#/components/schemas/Any'
    AISessionEventCreateData:
      allOf:
        - $ref: '#/components/schemas/AISessionEventCoreData'
        - $ref: '#/components/schemas/AISessionEventMessageToUser'
        - $ref: '#/components/schemas/AISessionEventMessageFromUser'
        - $ref: '#/components/schemas/AISessionEventLLMRequest'
        - $ref: '#/components/schemas/AISessionEventToolRequest'
    AISessionEventCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            aiSessionEvent:
              $ref: '#/components/schemas/AISessionEventCreateData'
    AISessionEventCreateRequest:
      allOf:
        - $ref: '#/components/schemas/AISessionEventCreateData'
      xml:
        name: request
    AISessionEventCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            aiSessionEvent:
              $ref: '#/components/schemas/AISessionEvent'
    AISessionEventFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    AISessionEventFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            aiSessionEvent:
              $ref: '#/components/schemas/AISessionEvent'
    AISessionEventLLMRequest:
      type: object
      properties:
        model:
          type: string
          description: The LLM model.
        provider:
          type: string
          description: The LLM service provider.
        request:
          type: object
          properties:
            url:
              type: string
              description: The URL of the request.
            headers:
              type: object
              description: The headers of the request.
            body:
              type: object
              description: The body of the request.
        response:
          type: object
          description: The response of the request.
        statusCode:
          type: string
          description: The HTTP status code of the request.
        success:
          type: boolean
          description: The success of the request.
        usage:
          type: object
          description: The number of token used for the LLM request.
          properties:
            inputTokens:
              type: integer
            outputTokens:
              type: integer
    AISessionEventListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/AISessionEventListFilter'
    AISessionEventListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: AI session list filter
          properties:
            aiSessionEventId:
              $ref: '#/components/schemas/AISessionEventListFilterAISessionEventId'
              description: Filter by matching aiSessionEventId
            aiSessionId:
              $ref: '#/components/schemas/AISessionEventListFilterAISessionId'
              description: Filter by matching aiSessionId
            success:
              type: boolean
              description: Filter by request success
            type:
              $ref: '#/components/schemas/AISessionEventListFilterType'
              description: Filter by event type
    AISessionEventListFilterAISessionEventId:
      type: array
      items:
        type: string
      description: Filter by matching aiSessionEventId
    AISessionEventListFilterAISessionId:
      type: array
      items:
        type: string
      description: Filter by matching aiSessionId
    AISessionEventListFilterType:
      type: array
      items:
        $ref: '#/components/schemas/AISessionEventType'
      description: Filter by matching aiSessionEventType
    AISessionEventListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            aiSessionEvents:
              type: array
              items:
                $ref: '#/components/schemas/AISessionEvent'
            filters:
              $ref: '#/components/schemas/AISessionEventListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    AISessionEventMessageFromUser:
      type: object
      properties:
        content:
          type: string
          description: The message content.
    AISessionEventMessageToUser:
      type: object
      properties:
        content:
          type: string
          description: The message content.
    AISessionEventToolRequest:
      type: object
      properties:
        request:
          type: object
        response:
          type: object
          description: The response of the request.
        statusCode:
          type: string
          description: The HTTP status code of the request.
        success:
          type: boolean
          description: The success of the request.
        toolName:
          type: string
          description: The tool/function name.
    AISessionEventType:
      type: string
      enum:
        - MESSAGE_TO_USER
        - MESSAGE_FROM_USER
        - LLM_REQUEST
        - TOOL_REQUEST
        - CORE_MESSAGE
        - CANCEL_REQUEST
      description: The type of AI session event
    AISessionEventUpdateData:
      type: object
      properties:
        feedback:
          $ref: '#/components/schemas/FeedbackInfo'
          description: The feedback that the user provided for the AI session event.
    AISessionEventUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            aiSessionEvent:
              $ref: '#/components/schemas/AISessionEventUpdateData'
    AISessionEventUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/AISessionEventUpdateData'
      xml:
        name: request
    AISessionEventUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            aiSessionEvent:
              $ref: '#/components/schemas/AISessionEvent'
    AISessionFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    AISessionFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            aiSession:
              $ref: '#/components/schemas/AISession'
    AISessionListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/AISessionListFilter'
    AISessionListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: AI session list filter
          properties:
            action:
              $ref: '#/components/schemas/AISessionListFilterAction'
            aiSessionId:
              $ref: '#/components/schemas/AISessionListFilterAISessionId'
            entity:
              $ref: '#/components/schemas/AISessionListFilterEntity'
            hasFeedback:
              type: boolean
              description: Filter by sessions that have feedback on associated events
            isInternalUser:
              type: boolean
              description: Filter by internal user
            isLocked:
              type: boolean
              description: Filter by locked status
            isSatisfactory:
              type: boolean
              description: Filter by satisfactory rating
            reviewed:
              type: boolean
              description: Filter by reviewed status
            topics:
              $ref: '#/components/schemas/AISessionTopics'
              description: Filter by matching topics
            userId:
              type: string
              description: Filter by matching userId
    AISessionListFilterAISessionId:
      type: array
      items:
        type: string
      description: Filter by matching aiSessionId
    AISessionListFilterAction:
      type: array
      items:
        type: string
        enum:
          - explain
          - generate
          - chat
      description: Filter by matching action
    AISessionListFilterEntity:
      type: array
      items:
        $ref: '#/components/schemas/AISessionEntity'
      description: Filter by matching entity
    AISessionListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            aiSessions:
              type: array
              items:
                $ref: '#/components/schemas/AISession'
            filters:
              $ref: '#/components/schemas/AISessionListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    AISessionTopics:
      type: array
      items:
        type: string
    AISessionUpdateData:
      type: object
      properties:
        feedback:
          $ref: '#/components/schemas/FeedbackInfo'
          description: The feedback that the user provided for the AI session.
        isLocked:
          type: boolean
          description: Whether the AI session is locked. When locked, no new events can be added. Generally used when messages go beyond a certain threshold.
        reviewed:
          type: boolean
          description: Indicates if the feedback associated with this AI session has been reviewed by Pipe17 staff.
        topics:
          $ref: '#/components/schemas/AISessionTopics'
          description: The topics that the AI session is associated with.
    AISessionUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            aiSession:
              $ref: '#/components/schemas/AISessionUpdateData'
    AISessionUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/AISessionUpdateData'
      xml:
        name: request
    AISessionUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            aiSession:
              $ref: '#/components/schemas/AISession'
    Account:
      allOf:
        - type: object
          properties:
            activationKey:
              type: string
              description: Account Activation Key
            branding:
              $ref: '#/components/schemas/Branding'
            contacts:
              type: array
              items:
                $ref: '#/components/schemas/AccountContact'
            deletedAt:
              type: string
              format: date-time
            enforceMFA:
              $ref: '#/components/schemas/AccountEnforceMFA'
            expirationDate:
              type: string
              format: date
            integrations:
              type: array
              items:
                type: string
              description: Account Integrations
            internal:
              $ref: '#/components/schemas/InternalInfo'
            isExternalIntegrationAccessAllowed:
              type: boolean
              description: |
                Cascaded from the account's primary org. Toggle that gates the external integration access feature: when true, consuming apps may auto-provision delegated API keys, bounded by the caller's permissions, and issue one-time, time-limited connection URLs that let an external person without a Pipe17 account connect a store (via credentials or OAuth) to one of the orgs.
            isMultiOrgAllowed:
              type: boolean
              description: Indicates whether customer allowed to create secondary orgs
            isRebrandingAllowed:
              type: boolean
              description: Indicates whether customer allowed to re-brand app dashboard
            pausedAt:
              type: string
              format: date-time
            payment:
              $ref: '#/components/schemas/AccountPayment'
            prodOrgLimit:
              type: number
              description: Defines maximum number of 'production' orgs allowed for account (default - 1)
            roleIds:
              type: array
              items:
                type: string
              description: Account Role IDs
            secondaryOrgLimit:
              type: number
              description: Defines maximum number of secondary orgs allowed for account (default - 0)
            status:
              $ref: '#/components/schemas/AccountStatusWithDeleted'
              description: Account Status
            userId:
              type: string
              description: Account User ID
        - $ref: '#/components/schemas/CoreObject'
    AccountAddress:
      type: object
      required:
        - zipCodeOrPostalCode
        - country
        - stateOrProvince
      properties:
        country:
          description: Country
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
        address1:
          description: Address Line 1
          type: string
        address2:
          description: Address Line 2
          type: string
        city:
          description: City
          type: string
    AccountBilling:
      type: object
      required:
        - status
        - plan
        - basePeriod
        - amount
        - source
      properties:
        amount:
          type: number
        basePeriod:
          type: string
          enum:
            - monthly
            - annually
        plan:
          type: string
        source:
          type: string
        status:
          $ref: '#/components/schemas/AccountBillingStatus'
        addOns:
          type: array
          items:
            type: object
            nullable: true
            properties:
              name:
                type: string
              period:
                type: string
                enum:
                  - monthly
                  - annually
                  - one-time
              quantity:
                type: number
              value:
                type: number
        chargeEnterpriseSupport:
          type: boolean
        csm:
          type: string
          description: CSM person name
        customerId:
          type: string
          description: Tab customer ID
        effectivePlan:
          type: string
        note:
          type: string
        overageAmount:
          type: number
        overagePeriod:
          type: string
          enum:
            - monthly
            - annually
        quota:
          type: number
        renewalDate:
          type: string
          format: date-time
        startDate:
          type: string
          format: date-time
    AccountBillingStatus:
      type: string
      enum:
        - trial
        - paid
        - paidCanceled
        - unpaid
        - pastDue
        - discontinued
        - unknown
    AccountBillingUpdate:
      type: object
      properties:
        addOns:
          type: array
          items:
            type: object
            nullable: true
            properties:
              name:
                type: string
              period:
                type: string
                enum:
                  - monthly
                  - annually
                  - one-time
              quantity:
                type: number
              value:
                type: number
        amount:
          type: number
        basePeriod:
          type: string
          enum:
            - monthly
            - annually
        chargeEnterpriseSupport:
          type: boolean
        csm:
          type: string
          description: CSM person name
        customerId:
          type: string
          nullable: true
          description: Tab customer ID
        effectivePlan:
          type: string
        note:
          type: string
        overageAmount:
          type: number
        overagePeriod:
          type: string
          enum:
            - monthly
            - annually
        plan:
          type: string
        quota:
          type: number
        renewalDate:
          type: string
          format: date-time
          nullable: true
        source:
          type: string
        startDate:
          type: string
          format: date-time
          nullable: true
        status:
          $ref: '#/components/schemas/AccountBillingStatus'
    AccountContact:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
          enum:
            - Finance owner
        additionalEmails:
          type: array
          items:
            type: string
        email:
          type: string
          description: Required field if phone is not defined
        phone:
          type: string
          description: Required field if email is not defined
        phone2:
          type: string
      required:
        - type
        - name
    AccountCreateData:
      type: object
      required:
        - email
        - ownerFirstName
        - ownerLastName
        - phone
        - timeZone
        - address
      properties:
        address:
          $ref: '#/components/schemas/AccountAddress'
        email:
          type: string
          description: Account Owner email
        ownerFirstName:
          type: string
          description: Account Owner First Name
        ownerLastName:
          type: string
          description: Account Owner Last Name
        phone:
          type: string
          description: Account Phone
        timeZone:
          type: string
          description: Account Time Zone
        accountName:
          type: string
          description: Account Name
        companyName:
          type: string
          description: Company Name
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/AccountContact'
        enforceMFA:
          $ref: '#/components/schemas/AccountEnforceMFA'
        integrations:
          type: array
          description: Account Integrations
          items:
            type: string
        internal:
          $ref: '#/components/schemas/InternalInfo'
        isMultiOrgAllowed:
          type: boolean
          description: Indicates whether customer allowed to create secondary orgs
        isRebrandingAllowed:
          type: boolean
          description: Indicates whether customer allowed to re-brand app dashboard
        logoUrl:
          type: string
          description: Logo URL
        payment:
          $ref: '#/components/schemas/AccountPayment'
        prodOrgLimit:
          type: number
          description: Defines maximum number of 'production' orgs allowed for account (default - 1)
        secondaryOrgLimit:
          type: number
          description: Defines maximum number of secondary orgs allowed for account (default - 0)
    AccountCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            account:
              $ref: '#/components/schemas/AccountCreateData'
    AccountCreateRequest:
      allOf:
        - $ref: '#/components/schemas/AccountCreateData'
        - type: object
          required:
            - password
          properties:
            password:
              type: string
              description: Account Owner password
      xml:
        name: request
    AccountCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            account:
              $ref: '#/components/schemas/Account'
            activationKey:
              type: string
              description: Account Activation key
    AccountEnforceMFA:
      type: string
      enum:
        - all
        - primary
        - selected
    AccountFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    AccountFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            account:
              $ref: '#/components/schemas/Account'
    AccountPayment:
      type: object
      required:
        - billing
      properties:
        billing:
          $ref: '#/components/schemas/AccountBilling'
        pricingId:
          description: pricing plan id
          type: string
        salesDiscountCode:
          type: array
          items:
            type: string
    AccountPaymentUpdate:
      type: object
      nullable: true
      properties:
        billing:
          nullable: true
          $ref: '#/components/schemas/AccountBillingUpdate'
        pricingId:
          description: pricing plan id
          type: string
        salesDiscountCode:
          type: array
          nullable: true
          items:
            type: string
    AccountStatus:
      type: string
      enum:
        - pending
        - active
        - disabled
        - paused
        - retired
      description: Account's Status
    AccountStatusWithDeleted:
      type: string
      enum:
        - pending
        - active
        - disabled
        - paused
        - deleted
        - retired
      description: Account's Status
    AccountUpdateData:
      type: object
      properties:
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/AccountContact'
          nullable: true
        enforceMFA:
          $ref: '#/components/schemas/AccountEnforceMFA'
          nullable: true
        expirationDate:
          type: string
          format: date
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isMultiOrgAllowed:
          type: boolean
          description: Indicates whether customer allowed to create secondary orgs
        isRebrandingAllowed:
          type: boolean
          description: Indicates whether customer allowed to re-brand app dashboard
        payment:
          $ref: '#/components/schemas/AccountPaymentUpdate'
        prodOrgLimit:
          type: number
          description: Defines maximum number of 'production' orgs allowed for account (default - 1)
        secondaryOrgLimit:
          type: number
          description: Defines maximum number of secondary orgs allowed for account (default - 0)
        status:
          $ref: '#/components/schemas/AccountStatus'
    AccountUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            account:
              $ref: '#/components/schemas/AccountUpdateData'
    AccountUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/AccountUpdateData'
      xml:
        name: request
    AccountUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            account:
              $ref: '#/components/schemas/Account'
    AccountsDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    AccountsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    AccountsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Accounts Filter
          properties:
            billingStatus:
              type: array
              items:
                $ref: '#/components/schemas/AccountBillingStatus'
              description: Accounts by list of billingStatus
            deletedSince:
              type: string
              format: date-time
              description: Accounts with deletedAt after this date-time
            deletedUntil:
              type: string
              format: date-time
              description: Accounts with deletedAt before this date-time
            expirationSince:
              type: string
              format: date-time
              description: Accounts with expirationDate after this date-time
            expirationUntil:
              type: string
              format: date-time
              description: Accounts with expirationDate before this date-time
            isMultiOrgAllowed:
              type: boolean
              description: Accounts by isMultiOrgAllowed
            orgKey:
              type: array
              items:
                type: string
              description: Accounts by list of orgKey
            pausedSince:
              type: string
              format: date-time
              description: Accounts with pausedAt after this date-time
            pausedUntil:
              type: string
              format: date-time
              description: Accounts with pausedAt before this date-time
            renewalSince:
              type: string
              format: date-time
              description: Accounts with renewalDate after this date-time
            renewalUntil:
              type: string
              format: date-time
              description: Accounts with renewalDate before this date-time
            status:
              type: array
              items:
                $ref: '#/components/schemas/AccountStatusWithDeleted'
              description: Accounts by list of status
    AccountsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/AccountsListFilter'
    AccountsListFilter:
      allOf:
        - $ref: '#/components/schemas/AccountsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Accounts Filter
    AccountsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            accounts:
              type: array
              items:
                $ref: '#/components/schemas/Account'
            filters:
              $ref: '#/components/schemas/AccountsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    AdditionalCharge:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/AdditionalChargeType'
          description: Additional charge type
        value:
          type: number
          description: absolute value of additional charge
        createdAt:
          type: string
          format: date-time
          description: Order charge created at
        label:
          type: string
          description: optional additional charge
        lineItemId:
          type: string
          description: optional reference to lineItems[].uniqueId for lineItem additional charge
        reference:
          type: string
          description: optional id/name for additional charge
    AdditionalChargeType:
      type: string
      description: Additional charge type
      enum:
        - handling
        - wrapping
        - shipping
        - other
    Address:
      type: object
      properties:
        address1:
          description: Address
          type: string
        address2:
          description: Address Line 2
          type: string
        addressType:
          $ref: '#/components/schemas/AddressType'
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        country:
          description: ISO 2 letter code only
          type: string
        email:
          description: email
          type: string
        firstName:
          description: First Name
          type: string
        lastName:
          description: Last Name
          type: string
        phone:
          description: Phone
          type: string
        stateOrProvince:
          description: If within the US, required 2 letter State Code
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    AddressNullable:
      type: object
      nullable: true
      properties:
        address1:
          description: Address
          type: string
        address2:
          description: Address Line 2
          type: string
          nullable: true
        addressType:
          $ref: '#/components/schemas/AddressType'
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        country:
          description: ISO 2 letter code only
          type: string
        email:
          description: email
          type: string
        firstName:
          description: First Name
          type: string
        lastName:
          description: Last Name
          type: string
        phone:
          description: Phone
          type: string
        stateOrProvince:
          description: If within the US, required 2 letter State Code
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    AddressType:
      type: string
      enum:
        - residential
        - commercial
        - institutional
        - military
        - pobox
        - other
    AddressUpdateData:
      type: object
      properties:
        address1:
          description: Address
          type: string
        address2:
          description: Address Line 2
          type: string
        addressType:
          $ref: '#/components/schemas/AddressType'
          nullable: true
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        country:
          description: ISO 2 letter code only
          type: string
        email:
          description: email
          type: string
        firstName:
          description: First Name
          type: string
        lastName:
          description: Last Name
          type: string
        phone:
          description: Phone
          type: string
        stateOrProvince:
          description: If within the US, required 2 letter State Code
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    Any:
      type: object
    AnyValue: {}
    ApiKey:
      allOf:
        - type: object
          properties:
            apikeyId:
              type: string
              description: API key Id
            key_type:
              $ref: '#/components/schemas/ApiKeyType'
            userId:
              type: string
              description: User ID of the key creator, if known
        - $ref: '#/components/schemas/ApiKeyCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ApiKeyCreateData:
      type: object
      required:
        - name
        - methods
        - allowedIPs
      properties:
        allowedIPs:
          type: array
          items:
            type: string
          description: IP/CIDR Whitelist
        methods:
          $ref: '#/components/schemas/Methods'
        name:
          type: string
          description: API Key Name
        connector:
          type: string
          description: Connector ID
        description:
          type: string
          description: API Key Description
        environment:
          $ref: '#/components/schemas/Env'
        integration:
          type: string
          description: Integration ID
        internal:
          $ref: '#/components/schemas/InternalInfo'
        tier:
          $ref: '#/components/schemas/Tier'
        type:
          type: string
          enum:
            - regular
            - temporary
          description: API Key type (default - `regular`)
    ApiKeyCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ApiKeyCreateRequest:
      allOf:
        - $ref: '#/components/schemas/ApiKeyCreateData'
      xml:
        name: request
    ApiKeyCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - apikey
          properties:
            apikey:
              type: string
              description: New Api Key
            apikeyId:
              type: string
              description: New Api Key ID
    ApiKeyFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ApiKeyFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            apikey:
              $ref: '#/components/schemas/ApiKey'
    ApiKeyRotateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            apikey:
              type: string
              description: New Api Key
            apikeyId:
              type: string
              description: Api Key ID
    ApiKeyType:
      type: string
      enum:
        - masterkey
        - signupkey
        - portalkey
        - customkey
        - connectorkey
        - integrationkey
        - multiorgkey
    ApiKeyUpdateData:
      type: object
      properties:
        allowedIPs:
          type: array
          items:
            type: string
          description: IP/CIDR Whitelist
        description:
          type: string
          description: API Key Description
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        methods:
          $ref: '#/components/schemas/MethodsUpdateData'
        name:
          type: string
          description: API Key Name
        tier:
          type: string
          description: Usage plan
    ApiKeyUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            apikey:
              $ref: '#/components/schemas/ApiKeyUpdateData'
    ApiKeyUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ApiKeyUpdateData'
      xml:
        name: request
    ApiKeyUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            apikey:
              $ref: '#/components/schemas/ApiKey'
    ApiKeyValue:
      allOf:
        - type: object
          properties:
            apikey:
              type: string
              description: API key value
            apikeyId:
              type: string
              description: API key Id
            key_type:
              $ref: '#/components/schemas/ApiKeyType'
            userId:
              type: string
              description: User ID of the key creator, if known
        - $ref: '#/components/schemas/ApiKeyCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ApiKeyValueFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            apikey:
              $ref: '#/components/schemas/ApiKeyValue'
    ApiKeysDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    ApiKeysDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    ApiKeysFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: API Keys Filter
          properties:
            apikeyId:
              type: array
              items:
                type: string
              description: API Keys by list of apikey ids
            connector:
              type: array
              items:
                type: string
              description: List API Keys by matching connector id(s)
            integration:
              type: array
              items:
                type: string
              description: List API Keys by matching integration id(s)
            name:
              type: string
              description: List API Keys by matching name(s)
            type:
              type: string
              enum:
                - regular
                - temporary
    ApiKeysListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ApiKeysListFilter'
    ApiKeysListFilter:
      allOf:
        - $ref: '#/components/schemas/ApiKeysFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List API Keys Filter
    ApiKeysListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            apikeys:
              type: array
              items:
                $ref: '#/components/schemas/ApiKey'
            filters:
              $ref: '#/components/schemas/ApiKeysListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    Appeasement:
      type: object
      properties:
        appeasementId:
          type: string
          description: Appeasement ID
        createdAt:
          type: string
          format: date-time
        createdBy:
          type: string
          description: userId of the creator
        currency:
          type: string
          description: Currency code from the order
        extOrderId:
          type: string
          description: External order ID
        note:
          type: string
          description: Note
        orderId:
          type: string
          description: Order ID
        orgKey:
          type: string
        refunds:
          type: array
          items:
            $ref: '#/components/schemas/AppeasementRefund'
        status:
          $ref: '#/components/schemas/AppeasementStatus'
        updatedAt:
          type: string
          format: date-time
    AppeasementCode:
      type: object
      properties:
        amount:
          type: number
          description: Refund amount
        appeasementCodeId:
          type: string
          description: Appeasement Code ID
        authorizedRoles:
          type: array
          items:
            type: string
        createdAt:
          type: string
          format: date-time
        createdBy:
          type: string
          description: userId of the creator
        description:
          type: string
        name:
          type: string
          description: Unique name within the org
        orgKey:
          type: string
        placement:
          type: number
          description: Display order
        refundType:
          $ref: '#/components/schemas/AppeasementCodeRefundType'
        scope:
          $ref: '#/components/schemas/AppeasementCodeScope'
        status:
          $ref: '#/components/schemas/AppeasementCodeStatus'
        updatedAt:
          type: string
          format: date-time
        version:
          type: number
          description: Current version number
    AppeasementCodeCreateData:
      type: object
      required:
        - name
        - scope
        - refundType
      properties:
        name:
          type: string
          description: Unique name within the org (among non-deleted codes)
        refundType:
          $ref: '#/components/schemas/AppeasementCodeRefundType'
        scope:
          $ref: '#/components/schemas/AppeasementCodeScope'
        amount:
          type: number
          description: Refund amount (percentage 1-100 for percent, fixed currency amount for flat, not required for manualEntry)
        authorizedRoles:
          type: array
          items:
            type: string
          description: Role names that can use this code. Empty array means all users can use it.
        description:
          type: string
          description: Description of this appeasement code
        placement:
          type: number
          description: Display order in the CSR selection list
    AppeasementCodeCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            appeasementCode:
              $ref: '#/components/schemas/AppeasementCodeCreateData'
    AppeasementCodeCreateRequest:
      allOf:
        - $ref: '#/components/schemas/AppeasementCodeCreateData'
    AppeasementCodeCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            appeasementCode:
              $ref: '#/components/schemas/AppeasementCode'
    AppeasementCodeFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    AppeasementCodeFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            appeasementCode:
              $ref: '#/components/schemas/AppeasementCode'
    AppeasementCodeRefundType:
      type: string
      description: |
        How the refund amount is determined.

        `percent` -- a percentage (1-100) of the scope's value.

        `flat` -- a fixed currency amount.

        `manualEntry` -- an arbitrary amount supplied per appeasement.

        `cancelation` -- cancels the refund's `quantity` on the order line item and
        refunds that quantity's share of the line, net of the line's own discount.
        The canceled quantity is subtracted from the line's `quantity` and added to
        its `canceled` counter, `ordered` retains the original quantity, and
        `requiresShipping` becomes false once the whole line is canceled. Unshipped
        units already committed to a shipping request are released, and a request
        left with nothing to ship is canceled. Requires scope `lineItem`; the code's
        `amount` is not used.
      enum:
        - percent
        - flat
        - manualEntry
        - cancelation
    AppeasementCodeScope:
      type: string
      description: Scope of the appeasement code
      enum:
        - lineItem
        - shipping
        - order
    AppeasementCodeStatus:
      type: string
      description: Appeasement code status
      enum:
        - active
        - inactive
    AppeasementCodeUpdateData:
      type: object
      properties:
        amount:
          type: number
          nullable: true
          description: Refund amount. Send null to clear it, which a cancelation refundType requires.
        authorizedRoles:
          type: array
          items:
            type: string
          description: Role names that can use this code
          nullable: true
        description:
          type: string
          description: Description of this appeasement code
          nullable: true
        name:
          type: string
          description: Unique name within the org (among non-deleted codes)
        placement:
          type: number
          description: Display order in the CSR selection list
        refundType:
          $ref: '#/components/schemas/AppeasementCodeRefundType'
        status:
          $ref: '#/components/schemas/AppeasementCodeStatus'
    AppeasementCodeUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            appeasementCode:
              $ref: '#/components/schemas/AppeasementCodeUpdateData'
    AppeasementCodeUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/AppeasementCodeUpdateData'
    AppeasementCodeUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            appeasementCode:
              $ref: '#/components/schemas/AppeasementCode'
    AppeasementCodesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/AppeasementCodesListFilter'
    AppeasementCodesListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Appeasement Codes Filter
          properties:
            appeasementCodeId:
              type: array
              items:
                type: string
            createdBy:
              type: array
              items:
                type: string
            name:
              type: array
              items:
                type: string
            refundType:
              $ref: '#/components/schemas/AppeasementCodeRefundType'
            scope:
              $ref: '#/components/schemas/AppeasementCodeScope'
            status:
              $ref: '#/components/schemas/AppeasementCodeStatus'
    AppeasementCodesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            appeasementCodes:
              type: array
              items:
                $ref: '#/components/schemas/AppeasementCode'
            filters:
              $ref: '#/components/schemas/AppeasementCodesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    AppeasementCreateData:
      type: object
      required:
        - orderId
        - refunds
      properties:
        orderId:
          type: string
          description: ID of the order this appeasement applies to
        refunds:
          type: array
          description: List of refunds in this appeasement
          items:
            $ref: '#/components/schemas/AppeasementRefundInput'
        extOrderId:
          type: string
          description: External order ID
        note:
          type: string
          description: Optional note for this appeasement
    AppeasementCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            appeasement:
              $ref: '#/components/schemas/AppeasementCreateData'
    AppeasementCreatePartialResponse:
      type: object
      required:
        - success
        - code
      properties:
        code:
          type: integer
          format: int32
          description: Copy of HTTP status
          enum:
            - 207
          example: 207
        success:
          type: boolean
          description: Always true - the appeasement itself was created
          enum:
            - true
          example: true
        appeasement:
          $ref: '#/components/schemas/Appeasement'
        errors:
          type: array
          description: One entry per cancelation that could not be applied
          items:
            type: string
        message:
          type: string
          example: Created, but the cancelation could not be fully applied
    AppeasementCreateRequest:
      allOf:
        - $ref: '#/components/schemas/AppeasementCreateData'
    AppeasementCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            appeasement:
              $ref: '#/components/schemas/Appeasement'
    AppeasementFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    AppeasementFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            appeasement:
              $ref: '#/components/schemas/Appeasement'
    AppeasementRefund:
      type: object
      properties:
        amount:
          type: number
        appeasementCodeId:
          type: string
        appeasementType:
          type: string
          enum:
            - lineItem
            - shipping
            - order
        codeVersion:
          type: number
          description: Version of the appeasement code at time of creation
        itemId:
          type: string
        quantity:
          type: integer
          description: Whole number of units of the line item canceled by this refund
        refundType:
          $ref: '#/components/schemas/AppeasementCodeRefundType'
          description: refundType of the appeasement code at time of creation
    AppeasementRefundInput:
      type: object
      required:
        - appeasementType
        - appeasementCodeId
        - amount
      properties:
        amount:
          type: number
          description: Currency amount to refund (must be > 0)
        appeasementCodeId:
          type: string
          description: ID of the appeasement code to apply
        appeasementType:
          type: string
          description: Type of refund
          enum:
            - lineItem
            - shipping
            - order
        itemId:
          type: string
          description: Line item uniqueId (required when appeasementType is lineItem)
        quantity:
          type: integer
          description: |
            Whole number of units of the line item to cancel. Required when the
            appeasement code's `refundType` is `cancelation`, and not permitted for
            any other `refundType`.
    AppeasementStatus:
      type: string
      description: Appeasement status
      enum:
        - approved
    AppeasementUpdateData:
      type: object
      properties:
        note:
          type: string
          description: Updated note for the appeasement
    AppeasementUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            appeasement:
              $ref: '#/components/schemas/AppeasementUpdateData'
    AppeasementUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/AppeasementUpdateData'
    AppeasementUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            appeasement:
              $ref: '#/components/schemas/Appeasement'
    AppeasementsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/AppeasementsListFilter'
    AppeasementsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Appeasements Filter
          properties:
            appeasementId:
              type: array
              items:
                type: string
            createdBy:
              type: array
              items:
                type: string
            extOrderId:
              type: array
              items:
                type: string
            orderId:
              type: array
              items:
                type: string
            status:
              $ref: '#/components/schemas/AppeasementStatus'
    AppeasementsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            appeasements:
              type: array
              items:
                $ref: '#/components/schemas/Appeasement'
            filters:
              $ref: '#/components/schemas/AppeasementsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    Arrival:
      allOf:
        - type: object
          properties:
            arrivalId:
              type: string
              description: Arrival notification ID
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the arrival
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the arrival
            integration:
              type: string
              description: Reference to integration that created arrival
            orderIntegration:
              type: string
              description: Reference to integration that created order tied to arrival
            status:
              $ref: '#/components/schemas/ArrivalStatus'
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/ArrivalChangelogEntry'
        - $ref: '#/components/schemas/ArrivalCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ArrivalChangelogEntry:
      allOf:
        - type: object
          properties:
            arrivalId:
              type: string
              description: Arrival Id
            purchaseId:
              type: string
              description: Purchase order Id
            transferId:
              type: string
              description: Transfer order Id
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    ArrivalCreateData:
      type: object
      xml:
        name: arrival
      required:
        - senderName
        - toLocationId
      properties:
        senderName:
          type: string
          description: Sender's Name
        toLocationId:
          type: string
          description: Arrival Location ID
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        expectedArrivalDate:
          type: string
          format: date-time
          description: Expected Arrival Date
        extArrivalApiId:
          type: string
          description: External System Arrival API ID
        extArrivalId:
          type: string
          description: Reference to arrival on external system (vendor)
        extOrderId:
          type: string
          description: External TO or PO ID
        extReferenceId:
          type: string
          description: Reference ID
        extShipmentId:
          type: string
          description: External shipment ID
        extStatus:
          type: string
          description: Arrival status on external system
        fromAddress:
          $ref: '#/components/schemas/Address'
        fromLocationId:
          type: string
          description: Sender Location ID (for TO)
        fulfillmentId:
          type: string
          description: Fulfillment ID
        holdUntil:
          type: string
          format: date-time
        incoterms:
          type: string
          description: International Commercial Terms
        internal:
          $ref: '#/components/schemas/InternalInfo'
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ArrivalLineItem'
        purchaseId:
          type: string
          description: Purchase Order ID
        shippingCarrier:
          type: string
          description: Shipping Carrier
        shippingMethod:
          type: string
          description: Shipping Method
        shippingNote:
          type: string
          description: Shipping Note
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/ArrivalStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        totalWeight:
          type: string
          description: Total Weight
        trackingNumber:
          type: string
          description: Tracking number
        transferId:
          type: string
          description: Transfer Order ID
        transport:
          $ref: '#/components/schemas/ArrivalTransport'
        weightUnit:
          type: string
          description: Weight Unit
    ArrivalCreateResult:
      type: object
      properties:
        arrival:
          $ref: '#/components/schemas/Arrival'
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    ArrivalFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ArrivalFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            arrival:
              $ref: '#/components/schemas/Arrival'
    ArrivalLineItem:
      type: object
      required:
        - uniqueId
        - sku
        - quantity
      properties:
        quantity:
          type: number
          format: float
          description: Item Quantity
        sku:
          type: string
          description: Item SKU
        uniqueId:
          type: string
          description: Item unique Id (within an order)
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        expirationDate:
          description: Item expirationDate provided by fulfillment channel
          type: string
          format: date-time
        extOrderId:
          type: string
          description: extOrderId if different than arrival.extOrderId
        lotNumber:
          type: string
          description: Item lotNumber provided by fulfillment channel
        name:
          type: string
          description: Item Name
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        palletQuantity:
          type: number
          format: integer
        purchaseId:
          type: string
          description: purchaseId if different than arrival.purchaseId
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        receivedQuantity:
          type: number
          format: float
          description: Item Arrived Quantity
        serialNumbers:
          description: |
            Item serial numbers provided by fulfillment channel. Each entry is either a single serial (e.g. "10105") or an inclusive alphanumeric range "FROM..TO" using the ".." separator (e.g. "10120..10199" or "SN-00100..SN-00199"). Range endpoints must share an identical prefix and end with a numeric tail. Single serials may contain hyphens; only ".." denotes a range.
          type: array
          items:
            type: string
        transferId:
          type: string
          description: transferId if different than arrival.purchaseId
        upc:
          type: string
          description: Item UPC
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    ArrivalStatus:
      type: string
      description: Arrival notification Status
      enum:
        - draft
        - shipped
        - expected
        - partialReceived
        - received
        - canceled
        - failed
    ArrivalTransport:
      type: object
      properties:
        BOL:
          type: string
        containerNumber:
          type: string
        containerSize:
          type: string
        containerType:
          type: string
        seal:
          type: string
        trailerNumber:
          type: string
        trailerSize:
          type: string
        trailerType:
          type: string
    ArrivalUpdateData:
      type: object
      properties:
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        expectedArrivalDate:
          type: string
          format: date-time
          description: Expected Arrival Date
        extArrivalId:
          type: string
          description: Reference to arrival on external system (vendor)
        extReferenceId:
          type: string
          description: Reference ID
        extStatus:
          type: string
          nullable: true
          description: Arrival status on external system
        fromAddress:
          $ref: '#/components/schemas/Address'
        fromLocationId:
          type: string
          description: Sender Location ID (for TO)
        holdUntil:
          type: string
          format: date-time
          nullable: true
        incoterms:
          type: string
          description: International Commercial Terms
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ArrivalLineItem'
        senderName:
          type: string
          description: Sender's Name
        shippingCarrier:
          type: string
          description: Shipping Carrier
        shippingMethod:
          type: string
          description: Shipping Method
        shippingNote:
          type: string
          description: Shipping Note
        sourceDoc:
          nullable: true
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/ArrivalStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        toLocationId:
          type: string
          description: Arrival Location ID
        totalWeight:
          type: string
          description: Total Weight
        trackingNumber:
          type: string
          description: Tracking number
        transport:
          nullable: true
          $ref: '#/components/schemas/ArrivalTransport'
        weightUnit:
          type: string
          description: Weight Unit
    ArrivalUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            arrival:
              $ref: '#/components/schemas/ArrivalUpdateData'
    ArrivalUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ArrivalUpdateData'
      xml:
        name: request
    ArrivalUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            arrival:
              $ref: '#/components/schemas/Arrival'
    ArrivalsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            arrivals:
              type: array
              items:
                $ref: '#/components/schemas/ArrivalCreateResult'
    ArrivalsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/ArrivalCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    ArrivalsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            arrivals:
              type: array
              items:
                $ref: '#/components/schemas/ArrivalCreateResult'
    ArrivalsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ArrivalsDeleteFilter'
    ArrivalsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/ArrivalsFilter'
        - type: object
          description: Delete Arrivals Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Arrivals assigned these orgModes
    ArrivalsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            arrivals:
              type: array
              items:
                $ref: '#/components/schemas/Arrival'
            deleted:
              type: integer
              description: Number of deleted arrivals
            filters:
              $ref: '#/components/schemas/ArrivalsDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ArrivalsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Arrivals Filter
          properties:
            arrivalId:
              type: array
              items:
                type: string
              description: Arrivals by list of arrivalId
            deleted:
              type: boolean
              description: Soft deleted arrivals
            extArrivalId:
              type: array
              items:
                type: string
              description: Arrivals by list extArrivalId
            extOrderId:
              type: array
              items:
                type: string
              description: Arrivals by list external orders (PO or TO)
            extReferenceId:
              type: array
              items:
                type: string
              description: Arrivals by `extReferenceId` list
            fromLocationId:
              type: array
              items:
                type: string
              description: Arrivals by list fromLocationId
            fulfillmentId:
              type: array
              items:
                type: string
              description: Arrivals by list fulfillmentId
            hasSourceDoc:
              type: boolean
              description: Arrivals containing a source document
            integration:
              type: array
              items:
                type: string
              description: Arrivals of these integrations
            purchaseId:
              type: array
              items:
                type: string
              description: Arrivals by list purchase orders
            status:
              type: array
              items:
                $ref: '#/components/schemas/ArrivalStatus'
              description: Arrivals in specific status
            tags:
              $ref: '#/components/schemas/EntityTags'
            toLocationId:
              type: array
              items:
                type: string
              description: Arrivals by list toLocationId
            transferId:
              type: array
              items:
                type: string
              description: Arrivals by list transfer orders
    ArrivalsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ArrivalsListFilter'
    ArrivalsListFilter:
      allOf:
        - type: object
          properties:
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Arrivals by list of categories of the arrival related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Arrivals by list of types of the arrival related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
        - $ref: '#/components/schemas/ArrivalsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Arrivals Filter
    ArrivalsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - arrivals
          properties:
            arrivals:
              type: array
              items:
                $ref: '#/components/schemas/Arrival'
            filters:
              $ref: '#/components/schemas/ArrivalsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    AssignShipmentToWaveRequest:
      type: object
      required:
        - shipmentId
        - waveType
      properties:
        shipmentId:
          type: string
          description: Shipment Request ID to assign to a wave
        waveType:
          $ref: '#/components/schemas/WaveType'
    AssignShipmentToWaveResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            action:
              type: string
              enum:
                - added_to_existing_wave
                - created_new_wave
              description: Action taken (added to existing wave or created new wave)
            wave:
              $ref: '#/components/schemas/Wave'
    AssignToteRequest:
      type: object
      required:
        - toteBarcode
        - userId
      properties:
        toteBarcode:
          type: string
          description: Tote barcode identifier
        userId:
          type: string
          description: Associate user ID
        stagingLocation:
          type: string
          description: Staging location identifier
    AssignToteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            shipment:
              $ref: '#/components/schemas/Shipment'
    AutoEngUpdateStatus:
      type: string
      enum:
        - initialPending
        - pending
        - updated
        - none
        - disabled
        - failed
      description: |
        A status that indicates whether or not the automation engine may update the entity sometime in the future.
        Only set internally. Useful for services such as the order routing engine where the user intended order state is critical before action.
        Used for orders and shipments.

        Status definitions:
        - initialPending: the automation engine will process this entity in the first time.
        - pending: the automation engine will make an update to this entity in the future.
        - updated: the automation engine has successfully made an update to this entity.
        - none: No status to set because the org did not have an enabled automation at the time of create/update.
        - disabled: The automation engine will ignore this entity.
        - failed: the automation engine attempted to update this entity but was unable to. The entity will not be picked up again unless it is set back to pending, which can be done via the entity's sync endpoint.
    AutoEngUpdateStatusUpdatedAt:
      type: string
      format: date-time
      description: When the autoEngUpdateStatus was last updated
    Automation:
      allOf:
        - type: object
          properties:
            automationId:
              type: string
              description: The unique identifier of the automation.
        - $ref: '#/components/schemas/AutomationCreateData'
        - $ref: '#/components/schemas/CoreObject'
    AutomationAction:
      type: object
      description: |
        'The action to be performed by the automation. Properties: type, config, and isEnabled. type is required'
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/AutomationActionType'
        config:
          $ref: '#/components/schemas/AutomationActionConfig'
        isEnabled:
          $ref: '#/components/schemas/AutomationActionIsEnabled'
    AutomationActionConfig:
      type: object
      description: |
        'The configuration for the action. Will be dependent on the action type
      additionalProperties: true
    AutomationActionIsEnabled:
      type: boolean
      description: Determines whether or not the action is enabled.
    AutomationActionType:
      type: string
      description: The type of action to be performed by the automation rule.
      enum:
        - UPDATE_EXCEPTION_PROP
        - HOLD_ORDER
        - CONDITIONAL_HOLD_ORDER
        - CANCEL_ORDER
        - ARCHIVE_ORDER
        - UPDATE_ORDER_PROP
        - UPDATE_SHIPMENT_PROP
        - UPDATE_FULFILLMENT_PROP
        - HOLD_SHIPMENT
        - SET_ORDER_TO_DRAFT
        - CREATE_EXCEPTION
        - UPDATE_EXCEPTION_STATUS
        - CODE_UPDATE_ENTITY
        - TRIGGER_ORDER_ROUTING
        - TRIGGER_ENTITY_SYNC
        - UPDATE_PRODUCT_PROP
        - ADJUST_SHIPMENT_INVENTORY
        - ADJUST_FULFILLMENT_INVENTORY
        - ADJUST_SHIPMENT_INVENTORY_LEVEL
        - ADJUST_FULFILLMENT_INVENTORY_LEVEL
        - RECONNECT_INTEGRATION
        - UPDATE_LOCATION_PROP
    AutomationCreateData:
      type: object
      required:
        - trigger
        - entityType
      properties:
        trigger:
          $ref: '#/components/schemas/AutomationTrigger'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        isEnabled:
          type: boolean
          description: Whether the automation is enabled or not.
          default: true
        isPublic:
          type: boolean
          description: If set to true, the automation will be visible to all users. Public automations are maintained by the internal team.
          default: false
          x-p17Private: true
    AutomationCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            automation:
              $ref: '#/components/schemas/AutomationCreateData'
    AutomationCreateRequest:
      allOf:
        - $ref: '#/components/schemas/AutomationCreateData'
      xml:
        name: request
    AutomationCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automation:
              $ref: '#/components/schemas/Automation'
    AutomationFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    AutomationFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automation:
              $ref: '#/components/schemas/Automation'
    AutomationListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/AutomationsListFilter'
    AutomationListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automations:
              type: array
              items:
                $ref: '#/components/schemas/Automation'
            filters:
              $ref: '#/components/schemas/AutomationsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    AutomationRule:
      allOf:
        - type: object
          properties:
            assessmentOrder:
              type: integer
              description: The order that the automation rule gets assessed. The default rule's order will be -1.
              minimum: -1
            automationRuleId:
              type: string
              description: The unique identifier of the automation rule
            createdBy:
              type: string
              description: ID of the user who created the automation rule
            isPublic:
              type: boolean
              description: True if the automation rule is associated with a public automation. Otherwise undefined.
            updatedBy:
              type: string
              description: ID of the user who last updated the automation rule
        - $ref: '#/components/schemas/AutomationRuleCreateData'
        - $ref: '#/components/schemas/CoreObject'
    AutomationRuleActions:
      type: array
      description: The actions to be performed by the automation rule. An automation rule must contain at least one action.
      items:
        $ref: '#/components/schemas/AutomationAction'
        minItems: 1
    AutomationRuleAutomationId:
      type: string
      description: The ID of the parent automation
    AutomationRuleCreateData:
      type: object
      required:
        - name
        - filter
        - automationId
      properties:
        automationId:
          $ref: '#/components/schemas/AutomationRuleAutomationId'
        filter:
          $ref: '#/components/schemas/AutomationRuleFilter'
        name:
          $ref: '#/components/schemas/AutomationRuleName'
        actions:
          $ref: '#/components/schemas/AutomationRuleActions'
        description:
          $ref: '#/components/schemas/AutomationRuleDescription'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        isDefault:
          $ref: '#/components/schemas/AutomationRuleIsDefault'
        isEnabled:
          $ref: '#/components/schemas/AutomationRuleIsEnabled'
        originAutomationRuleId:
          $ref: '#/components/schemas/AutomationRuleOriginAutomationRuleId'
    AutomationRuleCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            automationRule:
              $ref: '#/components/schemas/AutomationRuleCreateData'
    AutomationRuleCreateRequest:
      allOf:
        - $ref: '#/components/schemas/AutomationRuleCreateData'
      xml:
        name: request
    AutomationRuleCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automationRule:
              $ref: '#/components/schemas/AutomationRule'
    AutomationRuleDescription:
      type: string
      description: |
        The description of the automation rule. A good place to note a rule's when, where and why.
    AutomationRuleFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    AutomationRuleFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automationRule:
              $ref: '#/components/schemas/AutomationRule'
    AutomationRuleFilter:
      type: object
      description: Determines whether or not the automation rule is applied to the entity.
      properties:
        dependencies:
          description: Additional dependencies the filter requires to evaluate.
          type: array
          default: []
          items:
            $ref: '#/components/schemas/EvaluationDependency'
        entityFilter:
          nullable: true
          type: object
          required:
            - name
            - query
            - entity
          properties:
            name:
              $ref: '#/components/schemas/EntityFilterName'
            query:
              $ref: '#/components/schemas/EntityFilterQuery'
            entity:
              $ref: '#/components/schemas/EntityName'
        entityTypes:
          description: Filter by entity type, used by rules that handle multiple entity types (eg. exception rules)
          type: array
          items:
            $ref: '#/components/schemas/ExceptionEntityName'
        integrationIds:
          description: The integration IDs to filter by.
          type: array
          nullable: true
          default: []
          items:
            type: string
        relatedFilters:
          type: object
          description: |
            'The related filters for the automation rule. Only present on exception related rules
          additionalProperties: true
        runOncePerEntity:
          description: Whether the automation rule should run only once per entity. We'll check the runs history to determine if the rule has already run for an entity.
          type: boolean
          nullable: true
        statuses:
          description: The statuses of the entity to filter by.
          type: array
          nullable: true
          items:
            type: string
    AutomationRuleIsDefault:
      type: boolean
      description: |
        Whether or not this is the default rule for the automation. There can only be one default rule within an automation rule and it must be enabled.
        The default automation rule is something that's managed by the platform and will always execute last if no other rules that terminate the automation run are applied.
      default: false
    AutomationRuleIsEnabled:
      type: boolean
      description: Whether the automation rule is enabled or not. Disabled rules will not be assesesed when their parent automation is triggered.
      default: true
    AutomationRuleName:
      type: string
      description: The name of the automation rule. Must be unique within the automation.
    AutomationRuleOrderRequest:
      type: object
      description: Set Automation Rule Order Request
      properties:
        automationRuleIds:
          type: array
          items:
            type: string
          description: |
            List of automation rule ids in the order they should be evaluated.
            Must include all automation rule ids for the automation, excluding that of the default automation rule.
    AutomationRuleOriginAutomationRuleId:
      type: string
      description: The ID of the public automation rule that this rule was cloned from.
    AutomationRuleUpdateData:
      type: object
      properties:
        actions:
          $ref: '#/components/schemas/AutomationRuleActions'
        description:
          $ref: '#/components/schemas/AutomationRuleDescription'
        filter:
          $ref: '#/components/schemas/AutomationRuleFilter'
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isEnabled:
          $ref: '#/components/schemas/AutomationRuleIsEnabled'
        name:
          $ref: '#/components/schemas/AutomationRuleName'
        originAutomationRuleId:
          $ref: '#/components/schemas/AutomationRuleOriginAutomationRuleId'
          nullable: true
    AutomationRuleUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    AutomationRuleUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/AutomationRuleUpdateData'
      xml:
        name: request
    AutomationRuleUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
    AutomationRulesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/AutomationRulesListFilter'
    AutomationRulesListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Automation Rules Filter
          properties:
            automationId:
              $ref: '#/components/schemas/AutomationRulesListFilterAutomationId'
            automationRuleId:
              $ref: '#/components/schemas/AutomationRulesListFilterAutomationRuleId'
            deleted:
              type: boolean
              description: Filter by deleted status
            isEnabled:
              $ref: '#/components/schemas/AutomationRuleIsEnabled'
            isPublic:
              type: boolean
              description: If true, only automation rules associated with a public automation will be returned
    AutomationRulesListFilterAutomationId:
      type: array
      items:
        type: string
      description: Filter by matching automationId
    AutomationRulesListFilterAutomationRuleId:
      type: array
      items:
        type: string
      description: Filter by matching automationRuleId
    AutomationRulesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automationRules:
              type: array
              items:
                $ref: '#/components/schemas/AutomationRule'
            filters:
              $ref: '#/components/schemas/AutomationRulesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    AutomationRun:
      allOf:
        - type: object
          required:
            - automationRunId
            - status
          properties:
            automationRunId:
              type: string
              description: The unique identifier of the automation.
            status:
              type: string
              description: Status of the automation run
            execCount:
              $ref: '#/components/schemas/AutomationRunExecCount'
        - $ref: '#/components/schemas/AutomationRunCreateData'
        - $ref: '#/components/schemas/CoreObject'
    AutomationRunAction:
      type: object
      description: |
        An automation action captures something that the user wants done in the Automation run.
        An automation action can consist of multiple steps.
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/AutomationActionType'
        config:
          $ref: '#/components/schemas/AutomationActionConfig'
    AutomationRunCreateData:
      type: object
      required:
        - entityId
        - entityType
        - automationId
      properties:
        automationId:
          type: string
          description: The type of the entity being operated on
        entityId:
          type: string
          description: The id of the entity being operated on
        entityType:
          type: string
          enum:
            - orders
            - shipments
            - fulfillments
            - exceptions
            - products
        actions:
          type: array
          items:
            $ref: '#/components/schemas/AutomationRunAction'
          description: |
            Required. The actions that were planned out for the automation run.
        automationRuleIds:
          type: array
          items:
            type: string
          description: |
            IDs of the automation rules that matched the filter and had actions that were used.
            Some rules may have a passing filter but won't be used if a preceding rule had a terminal action.
            In this case, those rule ids should not be included in this array.
        completedAt:
          type: string
          format: date-time
          description: The time the automation run was completed
        errorMessage:
          type: string
          description: The error message if the automation run failed
        failedAt:
          type: string
          format: date-time
          description: The time the automation run failed
        internal:
          $ref: '#/components/schemas/InternalInfo'
        jobId:
          type: string
          description: The id of the job that created the automation run, it is only present if the automation run was created by a job
        status:
          $ref: '#/components/schemas/AutomationRunStatus'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/AutomationStep'
          description: |
            Required. The steps that were planned out for the automation run.
        trigger:
          type: string
          enum:
            - event
            - manual
          description: |
            event: (default) The run was created due to an event that triggered the automation
            manual: The run was manually created by an user
    AutomationRunCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            automationRun:
              $ref: '#/components/schemas/AutomationRunCreateData'
    AutomationRunCreateRequest:
      allOf:
        - $ref: '#/components/schemas/AutomationRunCreateData'
      xml:
        name: request
    AutomationRunCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automationRun:
              $ref: '#/components/schemas/AutomationRun'
    AutomationRunExecCount:
      minimum: 1
      type: integer
      description: The number of times the automation run has been executed. If a job fails and is retried, this number will increase.
    AutomationRunFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    AutomationRunFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automationRun:
              $ref: '#/components/schemas/AutomationRun'
    AutomationRunStatus:
      type: string
      enum:
        - IN_PROGRESS
        - FAILED
        - COMPLETED
        - CANCELED
    AutomationRunUpdateData:
      type: object
      properties:
        automationRuleIds:
          type: array
          items:
            type: string
          description: |
            IDs of the automation rules that matched the filter and had actions that were used.
            Some rules may have a passing filter but won't be used if a preceding rule had a terminal action.
            In this case, those rule ids should not be included in this array.
        completedAt:
          type: string
          format: date-time
          description: The time the automation run was completed
        errorMessage:
          type: string
          description: The error message if the automation run failed
        execCount:
          $ref: '#/components/schemas/AutomationRunExecCount'
        failedAt:
          type: string
          format: date-time
          description: The time the automation run failed
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        status:
          $ref: '#/components/schemas/AutomationRunStatus'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/AutomationStep'
          description: |
            The steps that the automation run will take.
    AutomationRunUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            automationRun:
              $ref: '#/components/schemas/AutomationRunUpdateData'
    AutomationRunUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/AutomationRunUpdateData'
      xml:
        name: request
    AutomationRunUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automationRun:
              $ref: '#/components/schemas/AutomationRun'
    AutomationRunsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/AutomationRunsListFilter'
    AutomationRunsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Automation runs list filter
          properties:
            automationId:
              $ref: '#/components/schemas/AutomationRunsListFilterAutomationId'
            automationRuleId:
              $ref: '#/components/schemas/AutomationRunsListFilterAutomationRuleId'
            automationRunId:
              $ref: '#/components/schemas/AutomationRunsListFilterAutomationRunId'
            entityId:
              $ref: '#/components/schemas/AutomationRunsListFilterEntityId'
            status:
              $ref: '#/components/schemas/AutomationRunsListFilterStatus'
    AutomationRunsListFilterAutomationId:
      type: array
      items:
        type: string
      description: Filter by matching automationId
    AutomationRunsListFilterAutomationRuleId:
      description: Filter by matching automationRuleId
      type: array
      items:
        type: string
    AutomationRunsListFilterAutomationRunId:
      type: array
      items:
        type: string
      description: Filter by matching automationRunId
    AutomationRunsListFilterEntityId:
      description: Filter by matching entityid
      type: array
      items:
        type: string
    AutomationRunsListFilterStatus:
      description: Filter by matching status
      type: array
      items:
        type: string
    AutomationRunsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automationRuns:
              type: array
              items:
                $ref: '#/components/schemas/AutomationRun'
            filters:
              $ref: '#/components/schemas/AutomationRunsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    AutomationStep:
      type: object
      description: |
        An automation step is derived from an AutomationRunAction and is a contains 2 types of information:
        1. A description of an atomic action for the system to execute. This is almost always going to be some kind of request to the Pipe17API or AWS.
        2. A status of the action
        The system can combine multiple steps into a single step where appropriate. An example of this is the UPDATE_ORDER
        AutomationStep. If there are two adjacent steps that are both UPDATE_ORDER, the system will combine them into a single
        step so that the effects occur in a single order update request. This consolidation will occur in the Automation engine
        and isn't something the API needs to worry about.
      required:
        - type
        - status
      properties:
        status:
          type: string
          enum:
            - PENDING
            - FAILED
            - COMPLETED
        type:
          type: string
          description: The type of the step
          enum:
            - UPDATE_ORDER
            - UPDATE_SHIPMENT
            - UPDATE_EXCEPTION
            - UPDATE_FULFILLMENT
            - SCHEDULE_ORDER_HOLD
            - ASSESS_ENTITY_HOLD_CONDITION
            - RELEASE_CONDITIONAL_HOLD
            - CREATE_EXCEPTION
            - UPDATE_EXCEPTION_STATUS
            - SCHEDULE_SHIPMENT_HOLD
            - TRIGGER_ENTITY_SYNC
            - UPDATE_PRODUCT
            - UPDATE_INVENTORY
            - RECONNECT_INTEGRATION
            - UPDATE_LOCATION
        automationRuleId:
          type: string
          description: The id of the automation rule that created this step
        completedAt:
          type: string
          format: date-time
          description: The time the step was completed
        config:
          type: object
          description: Configuration that's specific to the step type
          additionalProperties: true
        errorMessage:
          type: string
          description: The reason the step failed
        failedAt:
          type: string
          format: date-time
          description: The time the step failed.
    AutomationTrigger:
      type: string
      description: The name of the event that starts the automation.
      enum:
        - NEW_ORDER
        - ORDER_UPDATED
        - SHIPMENT_UPDATED
        - FULFILLMENT_CREATED
        - MANUAL_ORDER
        - MANUAL_SHIPMENT
        - MANUAL_FULFILLMENT
        - EXCEPTION_MODIFIED
        - PRODUCT_UPDATED
        - MANUAL_PRODUCT
        - EXCEPTION_RESOLUTION
    AutomationUpdateData:
      type: object
      properties:
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isEnabled:
          type: boolean
          description: Whether the automation is enabled or not.
    AutomationUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    AutomationUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/AutomationUpdateData'
      xml:
        name: request
    AutomationUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            automation:
              $ref: '#/components/schemas/Automation'
    AutomationsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Automations Filter
          properties:
            automationId:
              $ref: '#/components/schemas/AutomationsListFilterAutomationId'
            deleted:
              type: boolean
              description: Filter by deleted status
            trigger:
              $ref: '#/components/schemas/AutomationsListFilterTrigger'
    AutomationsListFilterAutomationId:
      type: array
      items:
        type: string
      description: Filter by matching automationId
    AutomationsListFilterTrigger:
      type: array
      items:
        $ref: '#/components/schemas/AutomationTrigger'
      description: Filter by matching automation trigger
    BaseFilter:
      type: object
      properties:
        count:
          type: integer
          format: int32
          description: Return at most this many items
        pagination:
          type: string
          enum:
            - disabled
          description: Exclude pagination info from the response
        since:
          type: string
          format: date-time
          description: Items created after this date-time
        skip:
          type: integer
          format: int32
          description: Skip this many items
        until:
          type: string
          format: date-time
          description: Items created before this date-time
        updatedSince:
          type: string
          format: date-time
          description: Items updated after this date-time
        updatedUntil:
          type: string
          format: date-time
          description: Items updated before this date-time
    BatchUpdatePickStatusRequest:
      type: object
      required:
        - shipmentIds
        - pickStatus
      properties:
        pickStatus:
          $ref: '#/components/schemas/ShipmentPickStatus'
        shipmentIds:
          type: array
          items:
            type: string
    BatchUpdatePickStatusResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            results:
              type: array
              items:
                type: object
                properties:
                  shipmentId:
                    type: string
                  status:
                    type: string
                    enum:
                      - updated
                      - failed
                  error:
                    type: string
    Branding:
      type: object
      description: Branding information
      properties:
        copyright:
          type: string
          description: Copyright information
        helpRequestURL:
          type: string
          description: Customer help desk URL
        helpRequestURLExcludedDomains:
          type: array
          nullable: true
          description: Email domains whose users bypass branding.helpRequestURL and fall back to the default Pipe17 help request form. Each entry is a lowercase bare domain (no scheme, no path, e.g. "pipe17.com"). Empty or missing means no exemption.
          items:
            type: string
            pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$
        logoURL:
          type: string
          description: Logo URL
        privacyURL:
          type: string
          description: Privacy policy URL
    CancelLabelBody:
      type: object
      required:
        - userId
        - labelId
      properties:
        labelId:
          type: string
        userId:
          type: string
    CancelLabelResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            labelId:
              type: string
            refundStatus:
              type: string
              enum:
                - pending
                - accepted
                - rejected
              description: |
                Carrier refund state. `pending` is the typical 200 response (refund submitted, awaiting carrier confirmation via webhook). When the carrier later rejects the refund, the reason is recorded as an Exception on the label rather than returned here.
            refundStatusRaw:
              type: string
              description: Raw vendor refund status.
            shipmentStatus:
              type: string
    CapacityLimits:
      type: object
      description: Order routing capacity limits for BOSS + BOPIS
      nullable: true
      properties:
        effectiveDate:
          type: string
          format: date-time
          description: When these limits take effect
        maxNewOrdersPerDay:
          type: integer
          minimum: 0
          description: Max new BOSS + BOPIS orders to be routed per day
          default: 100
        maxOpenOrders:
          type: integer
          minimum: 0
          description: Max open BOSS + BOPIS orders at any given time
          default: 50
    CarrierConfig:
      type: object
      description: A carrier and its pickup windows at this store
      required:
        - carrierCode
        - enabled
        - pickupSchedules
      properties:
        carrierCode:
          type: string
          description: Lowercase carrier identifier (e.g., ups, fedex, usps)
        enabled:
          type: boolean
          default: true
          description: When false, this carrier's pickups are ignored
        pickupSchedules:
          type: array
          minItems: 1
          description: Pickup windows for this carrier
          items:
            $ref: '#/components/schemas/CarrierPickupWindow'
        isDefault:
          type: boolean
          default: false
          description: Marks the store's default carrier; at most one carrier per store may set this to true
    CarrierCoordination:
      type: object
      description: Per-carrier pickup schedules; referenced by carrier_cutoff wave schedules
      required:
        - carriers
      properties:
        carriers:
          type: array
          description: One entry per carrier serving the store
          items:
            $ref: '#/components/schemas/CarrierConfig'
    CarrierPickupWindow:
      type: object
      description: A set of weekdays and the pickup time on those days
      required:
        - days
        - time
      properties:
        days:
          type: array
          minItems: 1
          description: Weekdays on which the pickup occurs at `time`
          items:
            $ref: '#/components/schemas/DayOfWeek'
        time:
          type: string
          description: Pickup time (HH:mm) in the store's local timezone
          pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
    Catalog:
      allOf:
        - type: object
          properties:
            catalogId:
              type: string
              description: Auto Generated
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the catalog
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the catalog
            integration:
              type: string
              description: Reference to integration that created the catalog
        - $ref: '#/components/schemas/CatalogCreateData'
        - $ref: '#/components/schemas/CoreObject'
    CatalogCreateData:
      type: object
      xml:
        name: catalog
      required:
        - name
        - currency
      properties:
        currency:
          type: string
          description: Currency code
        name:
          type: string
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        description:
          type: string
        extCatalogId:
          type: string
        includeAll:
          type: boolean
        internal:
          $ref: '#/components/schemas/InternalInfo'
        priceRule:
          $ref: '#/components/schemas/CatalogPriceRule'
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/CatalogStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        type:
          $ref: '#/components/schemas/CatalogType'
    CatalogCreateResult:
      type: object
      properties:
        catalog:
          $ref: '#/components/schemas/Catalog'
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    CatalogFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    CatalogFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            catalog:
              $ref: '#/components/schemas/Catalog'
    CatalogPriceRule:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          enum:
            - fixed
            - increment
            - decrement
        value:
          type: number
    CatalogProduct:
      allOf:
        - type: object
          properties:
            catalogProductId:
              type: string
              description: Auto Generated
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the catalog product
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the catalog product
            integration:
              type: string
              description: Reference to integration that created the catalog product
        - $ref: '#/components/schemas/CatalogProductCreateData'
        - $ref: '#/components/schemas/CoreObject'
    CatalogProductCreateData:
      type: object
      xml:
        name: catalog
      required:
        - catalogId
        - sku
        - status
      properties:
        catalogId:
          type: string
        sku:
          type: string
        status:
          $ref: '#/components/schemas/CatalogProductStatus'
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        priceRule:
          $ref: '#/components/schemas/CatalogProductPriceRule'
        quantityRule:
          $ref: '#/components/schemas/CatalogProductQuantityRule'
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        tags:
          $ref: '#/components/schemas/EntityTags'
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
        volumePricing:
          type: array
          items:
            $ref: '#/components/schemas/CatalogProductVolumePricing'
    CatalogProductCreateResult:
      type: object
      properties:
        catalog_product:
          $ref: '#/components/schemas/CatalogProduct'
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    CatalogProductFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    CatalogProductFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            catalog_product:
              $ref: '#/components/schemas/CatalogProduct'
    CatalogProductPriceRule:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          enum:
            - fixed
            - increment
            - decrement
        value:
          type: number
    CatalogProductQuantityRule:
      type: object
      required:
        - increment
        - min
      properties:
        increment:
          type: integer
        min:
          type: integer
        max:
          type: integer
    CatalogProductStatus:
      type: string
      description: Catalog Product Status
      enum:
        - included
        - excluded
    CatalogProductUpdateData:
      type: object
      properties:
        catalogId:
          type: string
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        priceRule:
          $ref: '#/components/schemas/CatalogProductPriceRule'
        quantityRule:
          $ref: '#/components/schemas/CatalogProductQuantityRule'
        sku:
          type: string
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/CatalogProductStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
        volumePricing:
          type: array
          items:
            $ref: '#/components/schemas/CatalogProductVolumePricing'
    CatalogProductUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            catalog_product:
              $ref: '#/components/schemas/CatalogProductUpdateData'
    CatalogProductUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/CatalogProductUpdateData'
      xml:
        name: request
    CatalogProductUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            catalog_product:
              $ref: '#/components/schemas/CatalogProduct'
    CatalogProductVolumePricing:
      type: object
      required:
        - quantity
        - value
      properties:
        quantity:
          type: integer
        value:
          type: number
    CatalogProductsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            catalog_products:
              type: array
              items:
                $ref: '#/components/schemas/CatalogProductCreateResult'
    CatalogProductsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/CatalogProductCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    CatalogProductsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            catalog_products:
              type: array
              items:
                $ref: '#/components/schemas/CatalogProductCreateResult'
    CatalogProductsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/CatalogProductsListFilter'
    CatalogProductsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Catalog Products Filter
          properties:
            catalogId:
              type: array
              items:
                type: string
              description: Select catalog products by catalogId list
            catalogProductId:
              type: array
              items:
                type: string
              description: Select catalog products by catalogProductId list
            deleted:
              type: boolean
              description: Select the soft deleted catalog products
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Select by list of categories of the product related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Select by list of types of the product related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            hasSourceDoc:
              type: boolean
              description: Select catalog products containing a source document
            integration:
              type: array
              items:
                type: string
              description: Select catalog products of these integrations
            sku:
              type: array
              items:
                type: string
              description: Select catalog products by sku list
            status:
              type: array
              items:
                $ref: '#/components/schemas/CatalogProductStatus'
              description: Select catalog products by status list
            tags:
              $ref: '#/components/schemas/EntityTags'
    CatalogProductsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            catalog_products:
              type: array
              items:
                $ref: '#/components/schemas/CatalogProduct'
            filters:
              $ref: '#/components/schemas/CatalogProductsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    CatalogStatus:
      type: string
      description: Catalog Status
      enum:
        - draft
        - active
        - inactive
      default: draft
    CatalogType:
      type: string
      description: Catalog Type
      enum:
        - b2b
        - market
        - collection
        - other
      default: other
    CatalogUpdateData:
      type: object
      properties:
        currency:
          type: string
          description: Currency code
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        description:
          type: string
        extCatalogId:
          type: string
        includeAll:
          type: boolean
        internal:
          $ref: '#/components/schemas/InternalInfo'
        name:
          type: string
        priceRule:
          $ref: '#/components/schemas/CatalogPriceRule'
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/CatalogStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        type:
          $ref: '#/components/schemas/CatalogType'
    CatalogUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            catalog:
              $ref: '#/components/schemas/CatalogUpdateData'
    CatalogUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/CatalogUpdateData'
      xml:
        name: request
    CatalogUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            catalog:
              $ref: '#/components/schemas/Catalog'
    CatalogsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            catalogs:
              type: array
              items:
                $ref: '#/components/schemas/CatalogCreateResult'
    CatalogsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/CatalogCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    CatalogsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            catalogs:
              type: array
              items:
                $ref: '#/components/schemas/CatalogCreateResult'
    CatalogsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/CatalogsListFilter'
    CatalogsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Catalogs Filter
          properties:
            catalogId:
              type: array
              items:
                type: string
              description: Select catalogs by catalogId list
            deleted:
              type: boolean
              description: Select the soft deleted catalogs
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Select by list of categories of the catalog related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Select by list of types of the catalog related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            extCatalogId:
              type: array
              items:
                type: string
              description: Select catalogs by extCatalogId list
            hasSourceDoc:
              type: boolean
              description: Select catalogs containing a source document
            integration:
              type: array
              items:
                type: string
              description: Select catalogs of these integrations
            name:
              type: array
              items:
                type: string
              description: Select catalogs by name list
            status:
              type: array
              items:
                $ref: '#/components/schemas/CatalogStatus'
              description: Select catalogs by status list
            tags:
              $ref: '#/components/schemas/EntityTags'
            type:
              type: array
              items:
                $ref: '#/components/schemas/CatalogType'
              description: Select catalogs by type list
    CatalogsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            catalogs:
              type: array
              items:
                $ref: '#/components/schemas/Catalog'
            filters:
              $ref: '#/components/schemas/CatalogsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ChangelogEntry:
      oneOf:
        - $ref: '#/components/schemas/ArrivalChangelogEntry'
        - $ref: '#/components/schemas/FulfillmentChangelogEntry'
        - $ref: '#/components/schemas/IntegrationChangelogEntry'
        - $ref: '#/components/schemas/InvoiceChangelogEntry'
        - $ref: '#/components/schemas/OrderChangelogEntry'
        - $ref: '#/components/schemas/PurchaseChangelogEntry'
        - $ref: '#/components/schemas/ReceiptChangelogEntry'
        - $ref: '#/components/schemas/ReturnChangelogEntry'
        - $ref: '#/components/schemas/ShipmentChangelogEntry'
        - $ref: '#/components/schemas/TransferChangelogEntry'
        - $ref: '#/components/schemas/ExceptionChangelogEntry'
    ChangelogEntryBase:
      type: object
      properties:
        apikeyId:
          type: string
          description: Id of the change request API key
        eventId:
          type: string
          description: Event Id in the API Event Log
        integrationId:
          type: string
          description: Integration that created/updated entity
        logId:
          type: string
          description: Log entry Id
        operation:
          type: string
          enum:
            - create
            - update
        status:
          type: string
          description: Entity status after change
        timestamp:
          type: string
          format: date-time
          description: Time the entity created/updated
        userId:
          type: string
          description: Author Id
    ChangelogFilter:
      type: object
      properties:
        apikeyId:
          type: array
          items:
            type: string
        arrivalId:
          type: array
          items:
            type: string
        count:
          type: integer
          format: int32
        createdSince:
          type: string
          format: date-time
        createdUntil:
          type: string
          format: date-time
        eventId:
          type: array
          items:
            type: string
        exceptionId:
          type: array
          items:
            type: string
        fulfillmentId:
          type: array
          items:
            type: string
        integration:
          type: array
          items:
            type: string
        integrationId:
          type: array
          items:
            type: string
        invoiceId:
          type: array
          items:
            type: string
        keys:
          type: string
        logId:
          type: array
          items:
            type: string
        order:
          type: string
        orderId:
          type: array
          items:
            type: string
        pagination:
          type: string
          enum:
            - disabled
        purchaseId:
          type: array
          items:
            type: string
        receiptId:
          type: array
          items:
            type: string
        shipmentId:
          type: array
          items:
            type: string
        since:
          type: string
          format: date-time
        skip:
          type: integer
          format: int32
        status:
          type: array
          items:
            type: string
        transferId:
          type: array
          items:
            type: string
        until:
          type: string
          format: date-time
    ChangelogListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ChangelogFilter'
    ChangelogListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            changelog:
              type: array
              items:
                $ref: '#/components/schemas/ChangelogEntry'
            filters:
              $ref: '#/components/schemas/ChangelogFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    CheckerError:
      type: object
      properties:
        code:
          type: integer
          format: int32
          enum:
            - 500
        errors:
          type: array
          description: Error details
          items:
            type: string
        message:
          type: string
          description: Error message
        success:
          type: boolean
          enum:
            - false
    CheckerResponse:
      type: object
      properties:
        code:
          type: integer
          format: int32
          enum:
            - 200
        output:
          type: object
          description: dry-run-lambda output (- RouteOrderOutput or error object)
        success:
          type: boolean
          enum:
            - true
    CompletePickupRequest:
      type: object
      required:
        - userId
      properties:
        userId:
          type: string
          description: Associate user ID completing the handoff
        idVerified:
          type: boolean
          description: Whether photo ID was verified
        notes:
          type: string
          description: Additional handoff notes
        pickupCode:
          type: string
          description: Pickup verification code (optional — not currently enforced)
        signatureData:
          type: string
          description: Base64 encoded signature image (if required)
    CompletePickupResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            shipment:
              $ref: '#/components/schemas/Shipment'
    CompleteShipmentRequest:
      type: object
      required:
        - userId
      properties:
        userId:
          type: string
          description: Associate user ID completing the handoff
        carrier:
          type: string
          description: Shipping carrier name
        labelUrl:
          type: string
          description: URL to the shipping label
        notes:
          type: string
          description: Additional handoff notes
        trackingNumber:
          type: string
          description: Carrier tracking number
    CompleteShipmentResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            shipment:
              $ref: '#/components/schemas/Shipment'
    CompositeCandidateLocations:
      type: object
      description: |
        The locations the composite engine may route to. `locationIds` and
        `groupNames` are merged and de-duplicated; supply at least one of them.
      properties:
        groupNames:
          type: array
          items:
            type: string
          description: Named static location groups whose members are eligible for routing
        locationIds:
          type: array
          items:
            type: string
          description: Individual location IDs eligible for routing
    CompositeScoringConfig:
      type: object
      description: |
        Configuration for the deterministic composite scoring engine. Only read
        when `routingStrategy` is `COMPOSITE_SCORING`; stored but dormant
        otherwise, so a routing can be switched back and forth without losing
        either configuration.
      properties:
        allowPartialLineItems:
          type: boolean
          description: |
            Allows a location to partially fill a line item (ship 3 of a
            quantity of 5). Defaults to true; both plan-level split search and
            now/future splits depend on partial fills. Set false only when a
            location must cover a whole line item or ship nothing.
        beamWidth:
          type: integer
          description: |
            Number of partial plans retained at each step of the plan search.
            Higher values search more thoroughly at a higher cost. Defaults to 3.
        candidateLocations:
          $ref: '#/components/schemas/CompositeCandidateLocations'
        maxDistanceMiles:
          type: number
          description: |
            Hard constraint excluding any candidate location farther than this
            distance from the destination. Optional; no limit when absent.
        maxShipments:
          type: integer
          description: |
            Maximum number of shipments a routing plan may contain. `1` means
            the order is never split. Defaults to 3.
        priorities:
          type: array
          items:
            $ref: '#/components/schemas/CompositeVariableConfig'
          description: |
            Scoring variables and their relative weights. Weights are relative
            and normalized by the engine. The order of this array does not
            affect scoring.
        requiresInventory:
          type: boolean
          description: |
            Requires available inventory at a candidate location before it may
            be assigned units. Defaults to true. Setting false disables the
            inventory guard and can oversell.
        routeWithFutureInventory:
          type: boolean
          description: |
            Allows units to be assigned against incoming (future) inventory.
            Defaults to false.
        sendFutureImmediately:
          type: boolean
          description: |
            Releases shipments assigned from future inventory immediately
            instead of holding them until the inventory arrives. Defaults to
            false.
        skipLocation:
          type: boolean
          description: |
            Allows the engine to skip a candidate location that cannot serve an
            item rather than failing the plan. Defaults to true.
    CompositeVariableConfig:
      type: object
      description: One scoring variable and how it is weighted and normalized
      properties:
        bad:
          type: number
          description: Raw value that scores as the worst possible (penalty 1)
        depthAggregation:
          type: string
          enum:
            - min
            - unitWeightedMean
          description: |
            `inventoryDepth` only. How to aggregate per-SKU inventory headroom:
            `min` reads stranding risk (default), `unitWeightedMean` weights each
            SKU's headroom by the units assigned to it.
        depthReference:
          type: number
          description: |
            `inventoryHealth` only. The stock level "thin" is measured against.
            Must be a positive finite number: the engine drops a weighted
            `inventoryHealth` that lacks one, because without a reference every
            candidate whose stock covers the order scores identically and dead
            stock ranks alongside a same-day shipment.
        good:
          type: number
          description: Raw value that scores as the best possible (penalty 0)
        lookbackDays:
          type: number
          description: |
            `inventoryHealth` only. Stagnancy window in days used to judge
            whether stock is moving. Defaults to 90; a non-positive or
            non-finite value reads as absent.
        onMissing:
          type: string
          enum:
            - neutral
            - worst
            - exclude
          description: |
            How to score a candidate whose raw value is unavailable. Defaults to
            `neutral`.
        variable:
          type: string
          enum:
            - distance
            - inventoryDepth
            - locationPriority
            - splitCount
            - futureInventory
            - exceptionRate
            - fulfillmentCost
            - capacityHeadroom
            - inventoryHealth
            - fulfillmentSpeed
            - slaFit
          description: |
            The signal being scored. `distance`, `inventoryDepth`,
            `locationPriority`, `exceptionRate`, `fulfillmentCost`,
            `capacityHeadroom`, `inventoryHealth` and `fulfillmentSpeed` are
            scored per shipment; `splitCount` and `futureInventory` are scored
            once per plan. `slaFit` is reserved for a planned variable and is
            accepted but not yet scored by the engine.
        weight:
          type: number
          description: Relative weight of this variable; normalized by the engine
    Connector:
      allOf:
        - type: object
          properties:
            availabilityStatus:
              $ref: '#/components/schemas/ConnectorAvailabilityStatus'
            capability:
              type: array
              items:
                $ref: '#/components/schemas/IntegrationCapability'
            connectorId:
              type: string
              description: Connector ID
            disableAutoProvision:
              type: boolean
              description: Disables plugin connector from being auto-provisioned to new orgs
            intentName:
              type: string
              description: Connector intent label
            intentRank:
              type: number
              description: Connector intent rank (higher ranks indicate better match)
            intentShow:
              type: boolean
              description: Indicates whether to show connector on intent
            isPublic:
              type: boolean
              description: Public connector indicator
            rank:
              type: number
              description: Connector rank in category (higher ranks indicate better match)
            scope:
              type: array
              items:
                type: string
              description: Restricts the audience of a public connector (honored only when isPublic is true). Empty/omitted or containing "*" means visible to all organizations; otherwise visibility is limited to the home organization plus the listed account ids and/or org keys.
            selfServiceMode:
              $ref: '#/components/schemas/ConnectorSelfServiceMode'
            status:
              $ref: '#/components/schemas/ConnectorStatus'
            visibility:
              allOf:
                - $ref: '#/components/schemas/ConnectorVisibility'
              readOnly: true
        - $ref: '#/components/schemas/ConnectorCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ConnectorAction:
      type: object
      description: Connector specific action
      properties:
        actionName:
          type: string
          description: Action label
        actionType:
          type: string
          description: Connector specific action type
        description:
          type: string
          description: Action description
        fields:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/ConnectorSettingsField'
          description: connection action arguments
        verb:
          type: string
          description: Actionable item label
    ConnectorAvailabilityStatus:
      type: string
      description: Connector availability status
      enum:
        - general
        - limited
        - future
        - beta
        - deprecated
    ConnectorConnection:
      type: object
      description: 3rd party's credentials
      properties:
        fields:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/ConnectorSettingsField'
          description: correspond to ui fields
        type:
          type: string
          description: Connection Type
          enum:
            - basic
            - apikey
            - appid
            - oauth2
        url:
          type: string
          description: Connection redirect URL
    ConnectorCreateData:
      type: object
      required:
        - connectorName
        - connectorType
      properties:
        connectorName:
          type: string
          description: Connector Name
        connectorType:
          $ref: '#/components/schemas/ConnectorType'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ConnectorAction'
          description: List of actions supported by connector
        capability:
          type: array
          items:
            type: string
        connection:
          $ref: '#/components/schemas/ConnectorConnection'
        description:
          type: string
          description: Connector description
        displayName:
          type: string
          description: Connector Display Name
        documentationURLs:
          type: array
          items:
            type: string
        entities:
          type: array
          items:
            $ref: '#/components/schemas/ConnectorEntity'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        linkedConnectorId:
          type: string
          description: Link connector with parent connectorId to allow parent accessing all integrations of this connector
        linkedConnectorName:
          type: string
          description: Link connector with parent by name to allow parent accessing all integrations of this connector
        logoUrl:
          type: string
          description: Logo URL
        orgUnique:
          type: boolean
          description: Indicates whether only one integration is allowed to be created in org
        orgWideAccess:
          type: boolean
          description: Indicates whether connector/integration should have access to all declared entity types
        pricingCategory:
          type: string
          description: Connector pricing category
        privacyPolicy:
          type: array
          items:
            $ref: '#/components/schemas/PrivacyPolicy'
        readme:
          type: string
          description: Connector readme markup
        settings:
          $ref: '#/components/schemas/ConnectorSettings'
        slug:
          type: string
          description: Connector Slug
        tags:
          $ref: '#/components/schemas/EntityTags'
        version:
          type: string
          description: Connector version
        webhook:
          nullable: true
          $ref: '#/components/schemas/ConnectorWebhook'
    ConnectorCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            connector:
              $ref: '#/components/schemas/ConnectorCreateData'
    ConnectorCreateRequest:
      allOf:
        - $ref: '#/components/schemas/ConnectorCreateData'
      xml:
        name: request
    ConnectorCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            connector:
              $ref: '#/components/schemas/Connector'
    ConnectorEntity:
      type: object
      description: Mapping or Routing Entity
      required:
        - name
        - direction
      properties:
        direction:
          $ref: '#/components/schemas/Direction'
        name:
          $ref: '#/components/schemas/ConnectorEntityName'
        mappingUuid:
          type: string
          description: Mapping Id
        restrictions:
          nullable: true
          $ref: '#/components/schemas/EntityRestrictionsList'
        routingUuid:
          description: Routing Id
          type: string
    ConnectorEntityName:
      type: string
      description: Entity Name
      enum:
        - arrivals
        - catalogs
        - catalog_products
        - connectors
        - customers
        - custom_objects
        - contacts
        - entity_filters
        - exceptions
        - fulfillments
        - inventory
        - invoices
        - labels
        - locations
        - payments
        - orders
        - order_routings
        - products
        - purchases
        - receipts
        - refunds
        - returns
        - schedules
        - shipments
        - shipment_boxes
        - shipping_methods
        - statements
        - statement_transactions
        - cycle_counts
        - cycle_count_entries
        - stores
        - suppliers
        - transfers
        - waves
    ConnectorFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ConnectorFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            connector:
              $ref: '#/components/schemas/Connector'
    ConnectorRotateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            apikey:
              type: string
              description: New connector api key
            apikeyId:
              type: string
              description: Connector api key ID
    ConnectorSelfServiceMode:
      type: string
      description: Connector self service mode status
      enum:
        - full
        - assisted
        - disabled
    ConnectorSettings:
      type: object
      description: Connector specific settings
      properties:
        fields:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/ConnectorSettingsField'
          description: correspond to ui fields
    ConnectorSettingsField:
      type: object
      properties:
        group:
          type: string
          description: Setting defines a group
        options:
          $ref: '#/components/schemas/ConnectorSettingsOptions'
        path:
          type: string
          description: Option Name
        secret:
          type: boolean
          description: Setting Option is secret
        type:
          type: string
          description: Option Type
          enum:
            - string
            - number
            - boolean
            - date
            - array
            - object
            - json
        validation:
          $ref: '#/components/schemas/ConnectorSettingsFieldValidation'
    ConnectorSettingsFieldValidation:
      type: array
      items:
        type: object
        properties:
          type:
            type: string
            enum:
              - required
              - minimum
              - maximum
              - minLength
              - maxLength
              - regex
          value:
            type: string
          message:
            type: string
    ConnectorSettingsOptions:
      type: object
      properties:
        common:
          type: boolean
          description: Indicates that field should be presented in common setting section
        component:
          type: string
        defaultValue:
          type: object
          description: Option initial variable value
        endAdornment:
          type: string
        extra:
          type: object
        fields:
          nullable: true
          type: array
          description: Nested fields
          items:
            type: object
        genkey:
          type: string
          description: Option random initial value
          enum:
            - apikey
            - nonce
        group:
          type: string
          description: Option group
        helperText:
          type: string
        hidden:
          type: boolean
          description: Option not displayed to user
        internal:
          type: boolean
          description: Option allowing Pipe17 employees to view and edit
        label:
          type: string
          description: Option user readable label
        placeholder:
          type: string
        readme:
          type: string
        readonly:
          type: boolean
          description: Option user cannot edit value
        startAdornment:
          type: string
        values:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
              value:
                type: string
        wizard:
          type: boolean
          description: Indicates that field should be presented in onboarding wizard
    ConnectorSetupData:
      type: object
      properties:
        availabilityStatus:
          type: string
          nullable: true
          enum:
            - general
            - limited
            - future
            - beta
            - deprecated
          description: Connector availability status
        disableAutoProvision:
          type: boolean
          nullable: true
          description: Disables plugin connector from being auto-provisioned to new orgs
        intentName:
          type: string
          nullable: true
          description: Connector intent label
        intentRank:
          type: number
          nullable: true
          description: Connector intent rank (higher ranks indicate better match)
        intentShow:
          type: boolean
          nullable: true
          description: Indicates whether to show connector on intent
        isPublic:
          type: boolean
          description: Public connector indicator
        linkedConnectorId:
          type: string
          nullable: true
          description: Link connector with parent connectorId to allow parent accessing all integrations of this connector
        linkedConnectorName:
          type: string
          nullable: true
          description: Link connector with parent by name to allow parent accessing all integrations of this connector
        orgUnique:
          type: boolean
          description: Indicates whether only one integration is allowed to be created in org
        rank:
          type: number
          description: Connector rank in category (higher ranks indicate better match)
        scope:
          type: array
          nullable: true
          items:
            type: string
          description: Restricts the audience of a public connector. Honored only when isPublic is true. When omitted, empty, or containing the "*" marker, a public connector is visible to all organizations. Otherwise the connector is visible only to its home organization plus the listed entries; an entry may be an account id (exposes that account's primary and all of its secondary organizations) or an organization key (exposes that single organization). The literal "*" means all organizations.
        selfServiceMode:
          type: string
          nullable: true
          enum:
            - full
            - assisted
            - disabled
          description: Connector availability status
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
    ConnectorSetupError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            options:
              $ref: '#/components/schemas/ConnectorSetupData'
    ConnectorSetupRequest:
      allOf:
        - $ref: '#/components/schemas/ConnectorSetupData'
      xml:
        name: request
    ConnectorSetupResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
    ConnectorStatus:
      type: string
      description: Connector Status
      enum:
        - created
        - active
        - inactive
        - deleted
    ConnectorType:
      type: string
      enum:
        - ecommerce
        - finance
        - logistics
        - plugin
        - other
      description: Connector Type
    ConnectorUpdateData:
      type: object
      properties:
        actions:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/ConnectorAction'
          description: List of actions supported by connector
        capability:
          type: array
          items:
            type: string
          nullable: true
        connection:
          nullable: true
          $ref: '#/components/schemas/ConnectorConnection'
        connectorType:
          $ref: '#/components/schemas/ConnectorType'
        description:
          type: string
          description: Connector description
        displayName:
          type: string
          description: Connector Display Name
        documentationURLs:
          type: array
          items:
            type: string
          nullable: true
        entities:
          type: array
          items:
            $ref: '#/components/schemas/ConnectorEntity'
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        linkedConnectorId:
          type: string
          nullable: true
          description: Link connector with parent connectorId to allow parent accessing all integrations of this connector
        linkedConnectorName:
          type: string
          nullable: true
          description: Link connector with parent by name to allow parent accessing all integrations of this connector
        logoUrl:
          type: string
          nullable: true
          description: Logo URL
        orgUnique:
          type: boolean
          description: Indicates whether only one integration is allowed to be created in org
        orgWideAccess:
          type: boolean
          description: Indicates whether connector/integration should have access to all declared entity types
        pricingCategory:
          type: string
          description: Connector pricing category
        privacyPolicy:
          type: array
          items:
            $ref: '#/components/schemas/PrivacyPolicy'
          nullable: true
        readme:
          type: string
          description: Connector readme markup
        settings:
          nullable: true
          $ref: '#/components/schemas/ConnectorSettings'
        slug:
          type: string
          description: Connector Slug
        status:
          type: string
          enum:
            - active
            - inactive
          description: Connector Status
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
        version:
          type: string
          description: Connector version
        webhook:
          nullable: true
          description: Connector Webhook
          type: object
          properties:
            url:
              type: string
              description: Webhook URL
            apikey:
              type: string
              description: Webhook api key
            topics:
              type: array
              description: Webhook topics
              items:
                $ref: '#/components/schemas/WebhookTopics'
    ConnectorUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            connector:
              $ref: '#/components/schemas/ConnectorUpdateData'
    ConnectorUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ConnectorUpdateData'
      xml:
        name: request
    ConnectorUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            connector:
              $ref: '#/components/schemas/Connector'
    ConnectorVisibility:
      type: string
      description: Computed visibility. private = home org only; public = all organizations; oem = restricted to the connector's own account (primary and/or secondaries); mixed = reaches organizations outside the own account.
      enum:
        - private
        - public
        - oem
        - mixed
    ConnectorWebhook:
      type: object
      required:
        - url
        - apikey
        - topics
      properties:
        apikey:
          type: string
          description: Webhook api key
        topics:
          type: array
          description: Webhook topics
          items:
            $ref: '#/components/schemas/WebhookTopics'
        url:
          type: string
          description: Webhook URL
    ConnectorsDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    ConnectorsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    ConnectorsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Connectors Filter
          properties:
            availabilityStatus:
              type: array
              items:
                $ref: '#/components/schemas/ConnectorAvailabilityStatus'
            capability:
              type: array
              items:
                type: string
              description: Retrieve connectors by list of capabilities
            connectorId:
              type: array
              items:
                type: string
              description: Retrieve connectors by list of connectorId
            connectorName:
              type: array
              items:
                type: string
              description: Retrieve connectors by list of connector names
            connectorType:
              type: array
              items:
                type: string
              description: Retrieve connectors by list of connector types
            intentShow:
              type: boolean
              description: Retrieve connectors by intent show attribute
            selfServiceMode:
              type: array
              items:
                $ref: '#/components/schemas/ConnectorSelfServiceMode'
            slug:
              type: array
              items:
                type: string
              description: Retrieve connectors by list of connector slugs
            status:
              type: array
              items:
                $ref: '#/components/schemas/ConnectorStatus'
            tags:
              $ref: '#/components/schemas/EntityTags'
            visibility:
              type: array
              items:
                $ref: '#/components/schemas/ConnectorVisibility'
              description: Retrieve connectors by computed visibility
    ConnectorsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ConnectorsListFilter'
    ConnectorsListFilter:
      allOf:
        - $ref: '#/components/schemas/ConnectorsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Connectors Filter
    ConnectorsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            connectors:
              type: array
              items:
                $ref: '#/components/schemas/Connector'
            filters:
              $ref: '#/components/schemas/ConnectorsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    Contact:
      allOf:
        - type: object
          properties:
            contactId:
              type: string
              description: Contact ID
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the contact
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the contact
            status:
              $ref: '#/components/schemas/ContactStatus'
        - $ref: '#/components/schemas/ContactCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ContactCreateData:
      type: object
      required:
        - shippingAddress
      properties:
        shippingAddress:
          $ref: '#/components/schemas/Address'
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/ContactCustomField'
        extContactId:
          type: string
          description: Contact external ID
        internal:
          $ref: '#/components/schemas/InternalInfo'
        name:
          type: string
          description: Contact name
        tags:
          $ref: '#/components/schemas/EntityTags'
    ContactCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            contact:
              $ref: '#/components/schemas/ContactCreateData'
    ContactCreateRequest:
      allOf:
        - $ref: '#/components/schemas/ContactCreateData'
      xml:
        name: request
    ContactCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            contact:
              $ref: '#/components/schemas/Contact'
    ContactCustomField:
      type: object
      properties:
        compliance:
          type: string
          enum:
            - none
            - pii
            - pci
            - hippa
        name:
          type: string
        value:
          type: string
    ContactFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ContactFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            contact:
              $ref: '#/components/schemas/Contact'
    ContactStatus:
      type: string
      description: Contact status
      enum:
        - active
        - deleted
    ContactUpdateData:
      type: object
      properties:
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/ContactCustomField'
          nullable: true
        extContactId:
          type: string
          description: Contact external ID
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        name:
          type: string
          description: Contact name
        shippingAddress:
          $ref: '#/components/schemas/AddressUpdateData'
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
    ContactUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            contact:
              $ref: '#/components/schemas/ContactUpdateData'
    ContactUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ContactUpdateData'
      xml:
        name: request
    ContactUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            contact:
              $ref: '#/components/schemas/Contact'
    ContactsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ContactsListFilter'
    ContactsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Contacts Filter
          properties:
            contactId:
              type: array
              items:
                type: string
              description: Retrieve contacts by list of contactId
            emailAddr:
              type: array
              items:
                type: string
              description: Retrieve contacts by list of shippingAddress.email
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Retrieve contacts by list of categories of the contact related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Retrieve contacts by list of types of the contact related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            extContactId:
              type: array
              items:
                type: string
              description: Retrieve contacts by list of extContactId
            status:
              $ref: '#/components/schemas/ContactStatus'
            tags:
              $ref: '#/components/schemas/EntityTags'
    ContactsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            contacts:
              type: array
              items:
                $ref: '#/components/schemas/Contact'
            filters:
              $ref: '#/components/schemas/ContactsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ConvertRequest:
      type: object
      required:
        - rules
        - source
      properties:
        rules:
          type: object
          properties:
            mappings:
              type: array
              items:
                $ref: '#/components/schemas/MappingRule'
              description: Mapping Rules
            mappingId:
              type: string
              description: Mapping ID (- ignored if mappings specified)
        source:
          type: object
          description: Source object to convert
    ConvertResponse:
      type: object
      properties:
        message:
          type: string
        result:
          type: object
          properties:
            status:
              type: number
              format: int32
              description: 200 - Ok, otherwise - failure
              example: 200
            body:
              type: object
              description: Conversion result
    ConverterRequest:
      type: object
      required:
        - rules
        - source
      properties:
        rules:
          type: object
          properties:
            mappings:
              type: array
              items:
                $ref: '#/components/schemas/MappingRule'
              description: Mapping Rules (- required if mappingUuid is not specified, otherwise must be missing)
            mappingUuid:
              type: string
              description: Mapping UUID (- required if mapping rules are not specified, otherwise must be missing)
        source:
          type: object
          description: Source object to convert
        debug:
          type: boolean
          description: Return detailed mapping errors on a per-rule basis
    ConverterResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            info:
              type: object
            message:
              type: string
            result:
              type: object
              description: Conversion result
              properties:
                status:
                  type: number
                  format: int32
                  example:
                    - 200
                body:
                  type: object
    CoreObject:
      type: object
      properties:
        createdAt:
          type: string
          format: date-time
          readOnly: true
          description: When the object was created within Pipe17
        orgKey:
          type: string
          readOnly: true
          description: Organization this object belong to
        updatedAt:
          type: string
          format: date-time
          readOnly: true
          description: When the object was updated within Pipe17
    CustomObject:
      allOf:
        - type: object
          properties:
            customObjectId:
              type: string
              description: Custom Object ID
              readOnly: true
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the object
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the object
            integration:
              type: string
              description: ID of integration that created the object
              readOnly: true
        - $ref: '#/components/schemas/CustomObjectCreateData'
        - $ref: '#/components/schemas/CoreObject'
    CustomObjectCreateData:
      type: object
      required:
        - extEntityId
        - type
      properties:
        extEntityId:
          type: string
        type:
          type: string
          description: Type of the object
        data:
          type: object
          description: Custom data
        relatedEntityId:
          type: string
        relatedEntityType:
          $ref: '#/components/schemas/EntityName'
        tags:
          $ref: '#/components/schemas/EntityTags'
    CustomObjectCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        customObject:
          $ref: '#/components/schemas/CustomObject'
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    CustomObjectFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    CustomObjectFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            customObject:
              $ref: '#/components/schemas/CustomObject'
    CustomObjectListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/CustomObjectListFilter'
    CustomObjectListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: CustomObjects Filter
          properties:
            customObjectId:
              type: array
              items:
                type: string
              description: Select by 'customObjectId' list
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Select by list of categories of the object related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Select by list of types of the object related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            extEntityId:
              type: array
              items:
                type: string
              description: Select by 'extEntityId' list
            integration:
              type: array
              items:
                type: string
              description: Select by 'integration' list
            relatedEntityId:
              type: array
              items:
                type: string
              description: Select by 'relatedEntityId' list
            relatedEntityType:
              type: array
              items:
                $ref: '#/components/schemas/EntityName'
              description: Select by 'relatedEntityType' list
            tags:
              $ref: '#/components/schemas/EntityTags'
            type:
              type: array
              items:
                type: string
              description: Select by 'type' list
    CustomObjectListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            customObjects:
              type: array
              items:
                $ref: '#/components/schemas/CustomObject'
            filters:
              $ref: '#/components/schemas/CustomObjectListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    CustomObjectUpdateData:
      type: object
      properties:
        data:
          type: object
          description: Custom data
          nullable: true
        extEntityId:
          type: string
        relatedEntityId:
          type: string
        relatedEntityType:
          $ref: '#/components/schemas/EntityName'
        tags:
          $ref: '#/components/schemas/EntityTags'
        type:
          type: string
          description: Type of the object
    CustomObjectUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            customObject:
              $ref: '#/components/schemas/CustomObjectUpdateData'
    CustomObjectUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/CustomObjectUpdateData'
      xml:
        name: request
    CustomObjectUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            customObject:
              $ref: '#/components/schemas/CustomObject'
    CustomObjectsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            customObjects:
              type: array
              items:
                $ref: '#/components/schemas/CustomObjectCreateResult'
    CustomObjectsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/CustomObjectCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    CustomObjectsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            customObjects:
              type: array
              items:
                $ref: '#/components/schemas/CustomObjectCreateResult'
    Customer:
      allOf:
        - type: object
          properties:
            customerId:
              type: string
              description: Customer ID
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the customer
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the customer
            status:
              $ref: '#/components/schemas/CustomerStatus'
        - $ref: '#/components/schemas/CustomerCreateData'
        - $ref: '#/components/schemas/CoreObject'
    CustomerAddress:
      allOf:
        - $ref: '#/components/schemas/CustomerShippingAddress'
        - type: object
          description: Delete Customers Filter
          properties:
            type:
              $ref: '#/components/schemas/CustomerAddressType'
    CustomerAddressType:
      type: string
      description: Customer address type
      enum:
        - billing
        - shipping
        - other
    CustomerBillingAddress:
      type: object
      properties:
        address1:
          description: Address
          type: string
        address2:
          description: Address Line 2
          type: string
        addressType:
          $ref: '#/components/schemas/AddressType'
        city:
          description: City
          type: string
        country:
          description: Country
          type: string
        email:
          description: Email
          type: string
        phone:
          description: Phone
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: Zipcode or postal code
          type: string
    CustomerCheckoutSettings:
      type: object
      description: Customer checkout settings
      properties:
        checkoutToDraft:
          type: boolean
        editableShippingAddress:
          type: boolean
        payNowOnly:
          type: boolean
    CustomerCreateData:
      type: object
      properties:
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/CustomerAddress'
        billingAddress:
          $ref: '#/components/schemas/CustomerBillingAddress'
        catalogIds:
          type: array
          items:
            type: string
        checkoutSettings:
          $ref: '#/components/schemas/CustomerCheckoutSettings'
        company:
          type: string
          description: Customer company name
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/CustomerCustomField'
        displayName:
          type: string
          description: Customer display name
        email:
          type: string
          description: Customer email
        extCustomerId:
          type: string
          description: Customer external ID
        firstName:
          type: string
          description: Customer first name
        internal:
          $ref: '#/components/schemas/InternalInfo'
        lastName:
          type: string
          description: Customer last name
        linkedCustomers:
          description: References to parent customer objects(s) and assigned role(s) of individual in parent customer
          type: array
          items:
            $ref: '#/components/schemas/CustomerLink'
        notes:
          type: string
        paymentTerms:
          $ref: '#/components/schemas/CustomerPaymentTerms'
        phone:
          type: string
          description: Customer phone
        shippingAddress:
          $ref: '#/components/schemas/CustomerShippingAddress'
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/CustomerStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        taxOptions:
          $ref: '#/components/schemas/CustomerTaxOptions'
        type:
          $ref: '#/components/schemas/CustomerType'
    CustomerCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            customer:
              $ref: '#/components/schemas/CustomerCreateData'
    CustomerCreateRequest:
      allOf:
        - $ref: '#/components/schemas/CustomerCreateData'
      xml:
        name: request
    CustomerCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            customer:
              $ref: '#/components/schemas/Customer'
    CustomerCustomField:
      type: object
      properties:
        compliance:
          type: string
          enum:
            - none
            - pii
            - pci
            - hippa
        name:
          type: string
        value:
          type: string
    CustomerFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    CustomerFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            customer:
              $ref: '#/components/schemas/Customer'
    CustomerLink:
      required:
        - customerId
        - roles
      type: object
      description: Customer link
      properties:
        customerId:
          description: reference to customerId e.g. company or company_location
          type: string
        roles:
          description: roles of current customer within linked customer
          type: array
          items:
            $ref: '#/components/schemas/CustomerRole'
    CustomerPaymentTerm:
      type: string
      description: Customer payment term
      enum:
        - net
        - fixed
        - fulfillment
        - receipt
        - unknown
        - other
    CustomerPaymentTerms:
      required:
        - term
      type: object
      description: Customer payment terms
      properties:
        term:
          $ref: '#/components/schemas/CustomerPaymentTerm'
        depositPercentage:
          type: number
        dueInDays:
          type: number
        note:
          type: string
    CustomerRole:
      type: string
      description: Customer type
      enum:
        - main_contact
        - allow_ordering
        - admin
        - assigned
    CustomerShippingAddress:
      type: object
      properties:
        address1:
          description: Address
          type: string
        address2:
          description: Address Line 2
          type: string
        addressType:
          $ref: '#/components/schemas/AddressType'
        city:
          description: City
          type: string
        country:
          description: Country
          type: string
        email:
          description: Email
          type: string
        phone:
          description: Phone
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: Zipcode or postal code
          type: string
    CustomerStatus:
      type: string
      description: Customer status
      enum:
        - active
        - inactive
        - deleted
    CustomerTaxOptions:
      type: object
      description: Customer tax options
      properties:
        taxExempt:
          type: boolean
        taxId:
          type: string
        taxRules:
          type: array
          items:
            $ref: '#/components/schemas/CustomerTaxRule'
    CustomerTaxRule:
      required:
        - type
        - name
      type: object
      description: Customer tax rules
      properties:
        name:
          type: string
        type:
          $ref: '#/components/schemas/CustomerTaxRuleType'
    CustomerTaxRuleType:
      type: string
      description: Customer tax rule type
      enum:
        - exempt
    CustomerType:
      type: string
      description: Customer type
      enum:
        - individual
        - company
        - company_location
        - other
    CustomerUpdateData:
      type: object
      properties:
        addresses:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/CustomerAddress'
        billingAddress:
          $ref: '#/components/schemas/CustomerBillingAddress'
        catalogIds:
          nullable: true
          type: array
          items:
            type: string
        checkoutSettings:
          nullable: true
          $ref: '#/components/schemas/CustomerCheckoutSettings'
        company:
          type: string
          description: Customer company name
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/CustomerCustomField'
        displayName:
          type: string
          description: Customer display name
        email:
          type: string
          description: Customer email
        extCustomerId:
          type: string
          description: Customer external ID
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        linkedCustomers:
          description: References to parent customer objects(s) and assigned role(s) of individual in parent customer
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/CustomerLink'
        notes:
          type: string
        paymentTerms:
          nullable: true
          $ref: '#/components/schemas/CustomerPaymentTerms'
        phone:
          type: string
          description: Customer phone
        shippingAddress:
          $ref: '#/components/schemas/CustomerShippingAddress'
        sourceDoc:
          nullable: true
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/CustomerStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        taxOptions:
          nullable: true
          $ref: '#/components/schemas/CustomerTaxOptions'
    CustomerUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            customer:
              $ref: '#/components/schemas/CustomerUpdateData'
    CustomerUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/CustomerUpdateData'
      xml:
        name: request
    CustomerUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            customer:
              $ref: '#/components/schemas/Customer'
    CustomersDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/CustomersDeleteFilter'
    CustomersDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/CustomersFilter'
        - type: object
          description: Delete Customers Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Customers assigned these orgModes
    CustomersDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            customers:
              type: array
              items:
                $ref: '#/components/schemas/Customer'
            deleted:
              type: integer
              description: Number of deleted customers
            filters:
              $ref: '#/components/schemas/CustomersDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    CustomersFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Customers Filter
          properties:
            catalogIds:
              type: array
              items:
                type: string
              description: Retrieve customers by list of assigned catalog Ids
            customerId:
              type: array
              items:
                type: string
              description: Retrieve customers by list of customerId
            deleted:
              type: boolean
              description: Soft deleted customers
            extCustomerId:
              type: array
              items:
                type: string
              description: Retrieve customers by list of extCustomerId
            linkedCustomerId:
              type: array
              items:
                type: string
              description: Retrieve customers by list of linked customerId
            status:
              $ref: '#/components/schemas/CustomerStatus'
            tags:
              $ref: '#/components/schemas/EntityTags'
            type:
              $ref: '#/components/schemas/CustomerType'
    CustomersListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/CustomersListFilter'
    CustomersListFilter:
      allOf:
        - $ref: '#/components/schemas/CustomersFilter'
        - type: object
          properties:
            company:
              type: string
              description: Retrieve customers by company name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            displayName:
              type: string
              description: Retrieve customers by displayName (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            email:
              type: string
              description: Retrieve customers by email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            emailAddr:
              type: array
              items:
                type: string
              description: Retrieve customers by list of billing/shippingAddress.email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Retrieve customers by list of categories of the customer related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Retrieve customers by list of types of the customer related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            firstName:
              type: string
              description: Retrieve customers by firstName (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            hasSourceDoc:
              type: boolean
              description: Retrieve customers containing a source document
            lastName:
              type: string
              description: Retrieve customers by lastName (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            phone:
              type: string
              description: Retrieve customers by phone (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
        - $ref: '#/components/schemas/ListResultOrderKeys'
    CustomersListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            customers:
              type: array
              items:
                $ref: '#/components/schemas/Customer'
            filters:
              $ref: '#/components/schemas/CustomersListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    CycleCount:
      allOf:
        - type: object
          properties:
            cycleCountId:
              type: string
              description: Cycle count ID
            status:
              $ref: '#/components/schemas/CycleCountStatus'
        - $ref: '#/components/schemas/CycleCountOpenData'
        - type: object
          properties:
            approvalNotes:
              type: string
            approvedAt:
              type: string
              format: date-time
              description: '''approve'' request submission time'
            approvedBy:
              type: string
              description: userId|apikeyId from the 'approve' request
            cancelReason:
              type: string
            canceledAt:
              type: string
              format: date-time
              description: '''cancel'' request submission time'
            canceledBy:
              type: string
              description: userId|apikeyId from the 'cancel' request
            commitNotes:
              type: string
            committedAt:
              type: string
              format: date-time
              description: '''commit'' request submission time'
            committedBy:
              type: string
              description: userId|apikeyId from the 'commit' request
            postNotes:
              type: string
            postedAt:
              type: string
              format: date-time
              description: '''post'' request submission time'
            postedBy:
              type: string
              description: userId|apikeyId from the 'post' request
            reopenHistory:
              type: array
              items:
                type: object
                properties:
                  reopenedBy:
                    type: string
                    description: userId|apikeyId from the 'reopen' request
                  reopenedAt:
                    type: string
                    format: date-time
                    description: '''reopen'' request submission time'
                  reopenReason:
                    type: string
        - $ref: '#/components/schemas/CoreObject'
    CycleCountApproveData:
      type: object
      properties:
        approvalNotes:
          type: string
    CycleCountApproveError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            parameters:
              $ref: '#/components/schemas/CycleCountApproveData'
    CycleCountApproveRequest:
      allOf:
        - $ref: '#/components/schemas/CycleCountApproveData'
      xml:
        name: request
    CycleCountApproveResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count:
              $ref: '#/components/schemas/CycleCount'
    CycleCountCancelData:
      type: object
      required:
        - cancelReason
      properties:
        cancelReason:
          type: string
    CycleCountCancelError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            parameters:
              $ref: '#/components/schemas/CycleCountCancelData'
    CycleCountCancelRequest:
      allOf:
        - $ref: '#/components/schemas/CycleCountCancelData'
      xml:
        name: request
    CycleCountCancelResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count:
              $ref: '#/components/schemas/CycleCount'
    CycleCountCommitData:
      type: object
      properties:
        commitNotes:
          type: string
    CycleCountCommitError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            parameters:
              $ref: '#/components/schemas/CycleCountCommitData'
    CycleCountCommitRequest:
      allOf:
        - $ref: '#/components/schemas/CycleCountCommitData'
      xml:
        name: request
    CycleCountCommitResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count:
              $ref: '#/components/schemas/CycleCount'
    CycleCountEntriesCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            cycle_count_entries:
              type: array
              items:
                $ref: '#/components/schemas/CycleCountEntryCreateResult'
    CycleCountEntriesCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/CycleCountEntryCreateData'
      xml:
        name: request
        wrapped: true
    CycleCountEntriesCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count_entries:
              type: array
              items:
                $ref: '#/components/schemas/CycleCountEntryCreateResult'
    CycleCountEntriesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/CycleCountEntriesListFilter'
    CycleCountEntriesListFilter:
      allOf:
        - type: object
          description: Cycle-count entries filter
          properties:
            cycleCountEntryId:
              type: array
              items:
                type: string
              description: Select by cycleCountEntryId list
            cycleCountId:
              type: array
              items:
                type: string
              description: Select by cycleCountId list
            sku:
              type: array
              items:
                type: string
              description: Select by sku list
            status:
              type: array
              items:
                $ref: '#/components/schemas/CycleCountEntryStatus'
        - $ref: '#/components/schemas/BaseFilter'
    CycleCountEntriesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count_entries:
              type: array
              items:
                $ref: '#/components/schemas/CycleCountEntry'
            filters:
              $ref: '#/components/schemas/CycleCountEntriesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    CycleCountEntriesRegisterData:
      type: array
      items:
        $ref: '#/components/schemas/CycleCountEntryAdjustment'
    CycleCountEntriesRegisterError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            cycle_count_entries:
              $ref: '#/components/schemas/CycleCountEntriesRegisterData'
    CycleCountEntriesRegisterRequest:
      allOf:
        - $ref: '#/components/schemas/CycleCountEntriesRegisterData'
      xml:
        name: request
        wrapped: true
    CycleCountEntriesRegisterResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count_entries:
              type: array
              items:
                $ref: '#/components/schemas/CycleCountEntryRegisterResult'
    CycleCountEntry:
      allOf:
        - type: object
          properties:
            cycleCountEntryId:
              type: string
              description: Cycle-count entry ID
            status:
              $ref: '#/components/schemas/CycleCountEntryStatus'
        - $ref: '#/components/schemas/CycleCountEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    CycleCountEntryAdjustment:
      type: object
      required:
        - cycleCountEntryId
        - adjustmentId
      properties:
        adjustmentId:
          type: string
          description: ID of added ledger record (-`inventoryId`)
        cycleCountEntryId:
          type: string
          description: Count entry ID
        adjustedAt:
          type: string
          format: date-time
          description: Time when the correction record was added
    CycleCountEntryBase:
      type: object
      properties:
        adjustedAt:
          type: string
          format: date-time
          description: Time when the correction record was added to the ledger
        adjustmentId:
          type: string
          description: ID of ledger record (-`inventoryId`) added to correct the detected variance
        cycleCountId:
          type: string
          description: Cycle-count ID
        ledgerRecordId:
          type: string
          description: ID of ledger record (-`inventoryId`) from which the `onHandRecorded` is taken
        onHandCounted:
          type: number
          format: float
          description: Physical on hand quantity at the onHandCountedAt time calculated by the "counter"
        onHandCountedAt:
          type: string
          format: date-time
          description: Time point for which the `onHandCounted` was calculated
        onHandRecorded:
          type: number
          format: float
          description: On hand quantity at the entry submission time recorded in the ledger
        onHandVariance:
          type: number
          format: float
          description: Difference between the `onHandCounted` value and the `onHandRecorded`
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        sku:
          type: string
          description: Product SKU
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    CycleCountEntryCreateData:
      type: object
      required:
        - cycleCountId
        - sku
        - onHandCounted
      properties:
        cycleCountId:
          type: string
          description: Cycle-count ID
        onHandCounted:
          type: number
          format: float
          description: Physical on hand quantity the "counter" found
        sku:
          type: string
          description: Product SKU
        onHandCountedAt:
          type: string
          format: date-time
          description: Time point for which the `onHandCounted` was calculated
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    CycleCountEntryCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if any
        cycle_count_entry:
          $ref: '#/components/schemas/CycleCountEntry'
        errors:
          type: array
          items:
            type: string
          description: Error details if any
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    CycleCountEntryFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    CycleCountEntryFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count_entry:
              $ref: '#/components/schemas/CycleCountEntry'
    CycleCountEntryRegisterResult:
      type: object
      properties:
        cycle_count_entry:
          $ref: '#/components/schemas/CycleCountEntryAdjustment'
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    CycleCountEntryStatus:
      type: string
      description: Cycle-count entry status (`correct` - zero deviation, `incorrect` - adjustment required, `corrected` - adjustment done)
      enum:
        - correct
        - incorrect
        - corrected
    CycleCountEntryUpdateData:
      type: object
      properties:
        adjustedAt:
          type: string
          format: date-time
        adjustmentId:
          type: string
        status:
          $ref: '#/components/schemas/CycleCountEntryStatus'
    CycleCountEntryUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            cycle_count_entry:
              $ref: '#/components/schemas/CycleCountEntryUpdateData'
    CycleCountEntryUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/CycleCountEntryUpdateData'
      xml:
        name: request
    CycleCountEntryUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count_entry:
              $ref: '#/components/schemas/CycleCountEntry'
    CycleCountFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    CycleCountFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count:
              $ref: '#/components/schemas/CycleCount'
    CycleCountOpenData:
      type: object
      required:
        - locationId
      properties:
        locationId:
          type: string
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extCycleCountId:
          type: string
        glAccount:
          type: string
        internal:
          $ref: '#/components/schemas/InternalInfo'
        reasonCode:
          type: string
        storeId:
          type: string
        tags:
          $ref: '#/components/schemas/EntityTags'
    CycleCountOpenError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            cycle_count:
              $ref: '#/components/schemas/CycleCountOpenData'
    CycleCountOpenRequest:
      allOf:
        - $ref: '#/components/schemas/CycleCountOpenData'
      xml:
        name: request
    CycleCountOpenResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count:
              $ref: '#/components/schemas/CycleCount'
    CycleCountPostData:
      type: object
      properties:
        postNotes:
          type: string
    CycleCountPostError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            parameters:
              $ref: '#/components/schemas/CycleCountPostData'
    CycleCountPostRequest:
      allOf:
        - $ref: '#/components/schemas/CycleCountPostData'
      xml:
        name: request
    CycleCountPostResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count:
              $ref: '#/components/schemas/CycleCount'
    CycleCountReopenData:
      type: object
      required:
        - reopenReason
      properties:
        reopenReason:
          type: string
    CycleCountReopenError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            parameters:
              $ref: '#/components/schemas/CycleCountReopenData'
    CycleCountReopenRequest:
      allOf:
        - $ref: '#/components/schemas/CycleCountReopenData'
      xml:
        name: request
    CycleCountReopenResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count:
              $ref: '#/components/schemas/CycleCount'
    CycleCountStatus:
      type: string
      description: Cycle count status
      enum:
        - open
        - counted
        - approved
        - posted
        - processing
        - completed
        - canceled
    CycleCountUpdateData:
      type: object
      properties:
        customFields:
          type: array
          nullable: true
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extCycleCountId:
          type: string
        glAccount:
          type: string
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        reasonCode:
          type: string
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
    CycleCountUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            cycle_count:
              $ref: '#/components/schemas/CycleCountUpdateData'
    CycleCountUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/CycleCountUpdateData'
      xml:
        name: request
    CycleCountUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_count:
              $ref: '#/components/schemas/CycleCount'
    CycleCountsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/CycleCountsListFilter'
    CycleCountsListFilter:
      allOf:
        - type: object
          description: Cycle counts filter
          properties:
            cycleCountId:
              type: array
              items:
                type: string
              description: Select by cycleCountId list
            extCycleCountId:
              type: array
              items:
                type: string
              description: Select by extCycleCountId list
            locationId:
              type: array
              items:
                type: string
              description: Select by locationId list
            status:
              type: array
              items:
                $ref: '#/components/schemas/CycleCountStatus'
            storeId:
              type: array
              items:
                type: string
              description: Select by storeId list
        - $ref: '#/components/schemas/BaseFilter'
    CycleCountsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cycle_counts:
              type: array
              items:
                $ref: '#/components/schemas/CycleCount'
            filters:
              $ref: '#/components/schemas/CycleCountsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    DDQueriesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/DDQueriesListFilter'
    DDQueriesListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Query Filter
          properties:
            name:
              type: array
              items:
                type: string
              description: Select queries by `name` list
            queryId:
              type: array
              items:
                type: string
              description: Select queries by `queryId` list
            type:
              $ref: '#/components/schemas/DDQueryType'
              description: Select queries of specified type (default - any)
    DDQueriesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - queries
          properties:
            queries:
              type: array
              items:
                $ref: '#/components/schemas/DDQuery'
            filters:
              $ref: '#/components/schemas/DDQueriesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    DDQuery:
      allOf:
        - type: object
          properties:
            queryId:
              type: string
              description: Auto Generated
        - $ref: '#/components/schemas/DDQueryCreateData'
        - $ref: '#/components/schemas/CoreObject'
    DDQueryBodyTemplate:
      type: object
      description: |
        Query body template object with parameter placeholders. 
        Two schemes of the objects are supported:
          - https://docs.datadoghq.com/api/latest/logs/#aggregate-events
          - https://docs.datadoghq.com/api/latest/logs/#search-logs
        Placeholder format: "${paramName}".
    DDQueryCreateData:
      type: object
      required:
        - name
        - type
        - body
      properties:
        body:
          $ref: '#/components/schemas/DDQueryBodyTemplate'
        name:
          type: string
          description: Unique name of the query
        type:
          $ref: '#/components/schemas/DDQueryType'
        description:
          type: string
          description: Query description
        params:
          type: array
          items:
            $ref: '#/components/schemas/DDQueryParam'
          description: |
            Descriptors of the dd-query parameters that are required or 
            can be passed in query-string of the 'exec' request.
    DDQueryCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            query:
              $ref: '#/components/schemas/DDQueryCreateData'
    DDQueryCreateRequest:
      allOf:
        - $ref: '#/components/schemas/DDQueryCreateData'
      xml:
        name: request
    DDQueryCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            query:
              $ref: '#/components/schemas/DDQuery'
    DDQueryExecError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            params:
              $ref: '#/components/schemas/DDQueryParams'
    DDQueryExecResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            params:
              $ref: '#/components/schemas/DDQueryParams'
            result:
              $ref: '#/components/schemas/DDQueryResult'
    DDQueryFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    DDQueryFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            query:
              $ref: '#/components/schemas/DDQuery'
    DDQueryParam:
      type: object
      required:
        - name
        - type
      properties:
        name:
          type: string
          description: Parameter name
        type:
          type: string
          enum:
            - string
            - number
            - time
          description: Value type
        default:
          type: object
          nullable: true
          description: Default value convertible to the param type
        description:
          type: string
          description: Parameter description
        required:
          type: boolean
    DDQueryParams:
      type: object
      description: Values of parameters that were passed to execute query
    DDQueryResult:
      type: object
      description: |
        Result of the query execution received from the DD 
        (- a data set or error info; see Datadog API docs for details).
    DDQueryType:
      type: string
      enum:
        - agg
        - search
      description: |
        Query type (identifies the target DD endpoint).
        - `agg`: "Aggregate events" queries
        - `search`: "Search logs" queries
    DDQueryUpdateData:
      type: object
      properties:
        body:
          $ref: '#/components/schemas/DDQueryBodyTemplate'
        description:
          type: string
          description: Query description
        name:
          type: string
          description: Unique name of the query
        params:
          type: array
          items:
            $ref: '#/components/schemas/DDQueryParam'
          description: |
            Descriptors of the dd-query parameters that are required or 
            can be passed in query-string of the 'exec' request.
        type:
          $ref: '#/components/schemas/DDQueryType'
    DDQueryUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            query:
              $ref: '#/components/schemas/DDQueryUpdateData'
    DDQueryUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/DDQueryUpdateData'
      xml:
        name: request
    DDQueryUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            query:
              $ref: '#/components/schemas/DDQuery'
    DayOfWeek:
      type: string
      description: Day of the week (lowercase, matching pipe17api-v3 enum convention)
      enum:
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday
        - sunday
    DeleteAction:
      type: string
      description: Action for delete operation
      enum:
        - soft
        - hard
    DeliveryMethod:
      type: string
      enum:
        - shipping
        - pickUp
        - local
        - retail
        - warehouse
        - none
        - other
    DeliveryProfile:
      type: object
      properties:
        code:
          type: string
        deliveryAfter:
          type: string
          format: date-time
        deliveryBefore:
          type: string
          format: date-time
        deliveryPromiseAfter:
          type: string
          format: date-time
        deliveryPromiseBefore:
          type: string
          format: date-time
        name:
          type: string
        notes:
          type: string
        profileId:
          type: string
        reference:
          type: string
        type:
          $ref: '#/components/schemas/DeliveryMethod'
    DeliveryPromise:
      description: An immutable Pipe17 record of one delivery option from an Estimated Delivery Date evaluation for an order.
      allOf:
        - type: object
          properties:
            carrierServiceLevelCode:
              type: string
              description: Carrier service level this option is estimated against.
            contextExpiresAt:
              type: string
              format: date-time
              readOnly: true
              description: Server-generated expiry, 400 days after createdAt. The API provides no decision-context URLs after this time.
            contextS3Path:
              type: string
              readOnly: true
              description: Server-generated S3 path for the decision context.
            contextStatus:
              $ref: '#/components/schemas/DeliveryPromiseContextStatus'
            deliveryPromiseId:
              type: string
              readOnly: true
              description: Pipe17-generated delivery-promise ID.
            estimatedDays:
              type: integer
              minimum: 0
              description: Days from evaluation to promiseDate.
            extDeliveryPromiseId:
              type: string
              minLength: 1
              description: Delivery-estimate ID of this delivery option at the delivery-estimate source.
            fulfillmentStrategy:
              type: string
              enum:
                - shipNow
                - waitForConsolidation
              description: Whether this option ships as inventory becomes available or holds until the order can ship together.
            isSplit:
              type: boolean
              description: Whether this option fulfills the order from more than one location.
            locations:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/DeliveryPromiseLocation'
              description: Fulfillment locations this option ships from.
            orderId:
              type: string
              description: Pipe17 order ID associated with this promise.
            promiseDate:
              type: string
              format: date-time
              description: Date the whole order is expected to be delivered under this option.
            rank:
              type: integer
              minimum: 1
              description: Position of this option among the options offered for the order, 1 being the best ranked.
            shipments:
              type: array
              items:
                $ref: '#/components/schemas/DeliveryPromiseShipment'
              description: Shipments planned for this option.
        - $ref: '#/components/schemas/CoreObject'
    DeliveryPromiseActionRequest:
      type: object
      additionalProperties: false
      description: Send an empty JSON object (`{}`).
    DeliveryPromiseCompleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deliveryPromise:
              $ref: '#/components/schemas/DeliveryPromise'
    DeliveryPromiseContextStatus:
      type: string
      enum:
        - pending
        - available
        - expired
      description: Whether the decision context is pending, available for download, or expired.
    DeliveryPromiseCreateData:
      type: object
      description: Delivery-promise data supplied by the delivery-estimate source.
      required:
        - extDeliveryPromiseId
        - orderId
        - rank
        - locations
        - promiseDate
        - estimatedDays
        - isSplit
        - fulfillmentStrategy
        - carrierServiceLevelCode
      properties:
        carrierServiceLevelCode:
          type: string
          description: Carrier service level this option is estimated against.
        estimatedDays:
          type: integer
          minimum: 0
          description: Days from evaluation to promiseDate.
        extDeliveryPromiseId:
          type: string
          minLength: 1
          description: Delivery-estimate ID of this delivery option at the delivery-estimate source.
        fulfillmentStrategy:
          type: string
          enum:
            - shipNow
            - waitForConsolidation
          description: Whether this option ships as inventory becomes available or holds until the order can ship together.
        isSplit:
          type: boolean
          description: Whether this option fulfills the order from more than one location.
        locations:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/DeliveryPromiseLocation'
          description: Fulfillment locations this option ships from.
        orderId:
          type: string
          description: Pipe17 order ID associated with this promise.
        promiseDate:
          type: string
          format: date-time
          description: Date the whole order is expected to be delivered under this option.
        rank:
          type: integer
          minimum: 1
          description: Position of this option among the options offered for the order, 1 being the best ranked.
        shipments:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryPromiseShipment'
          description: Shipments planned for this option.
    DeliveryPromiseCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            deliveryPromise:
              $ref: '#/components/schemas/DeliveryPromiseCreateData'
    DeliveryPromiseCreateRequest:
      allOf:
        - $ref: '#/components/schemas/DeliveryPromiseCreateData'
      xml:
        name: request
    DeliveryPromiseCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            contextS3UploadHeaders:
              type: object
              readOnly: true
              additionalProperties:
                type: string
              description: 'Required headers for the upload URL. Send `if-none-match: *` to prevent overwrites.'
            contextS3UploadUrl:
              type: string
              readOnly: true
              description: Presigned URL for uploading the decision context. Expires after up to 15 minutes and never after contextExpiresAt.
            deliveryPromise:
              $ref: '#/components/schemas/DeliveryPromise'
            expiresIn:
              type: integer
              readOnly: true
              description: Number of seconds until the upload URL expires.
    DeliveryPromiseFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    DeliveryPromiseFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            contextS3DownloadUrl:
              type: string
              readOnly: true
              description: Presigned URL for downloading an available decision context. Expires after up to one hour and never after contextExpiresAt.
            deliveryPromise:
              $ref: '#/components/schemas/DeliveryPromise'
    DeliveryPromiseInventoryAllocation:
      type: object
      description: Inventory allocated to fulfill an item in the delivery option.
      required:
        - source
        - quantity
      properties:
        quantity:
          type: number
          minimum: 0
          description: Allocation quantity. Must not be negative.
        source:
          type: string
          enum:
            - onHand
            - arrival
          description: Arrival allocations require arrivalId, expectedArrivalDate, and inventoryReadyDate.
        arrivalId:
          type: string
          description: Required when source is arrival.
        expectedArrivalDate:
          type: string
          format: date-time
          description: Required when source is arrival.
        inventoryReadyDate:
          type: string
          format: date-time
          description: Required when source is arrival.
    DeliveryPromiseItem:
      type: object
      description: An order item fulfilled by a location in the delivery option.
      required:
        - sku
        - quantity
        - inventoryAllocations
      properties:
        inventoryAllocations:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryPromiseInventoryAllocation'
        quantity:
          type: integer
          minimum: 1
        sku:
          type: string
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    DeliveryPromiseLocation:
      type: object
      description: A fulfillment location used by the delivery option.
      required:
        - locationId
        - items
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryPromiseItem'
        locationId:
          type: string
        facilityName:
          type: string
    DeliveryPromiseShipment:
      type: object
      description: A shipment planned for the delivery option.
      required:
        - locationId
        - shipDate
        - estimatedDeliveryDate
        - transitDays
      properties:
        estimatedDeliveryDate:
          type: string
          format: date-time
        locationId:
          type: string
        shipDate:
          type: string
          format: date-time
        transitDays:
          type: integer
          minimum: 0
    DeliveryPromiseUploadUrlResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            contextS3UploadHeaders:
              type: object
              readOnly: true
              additionalProperties:
                type: string
              description: 'Required headers for the upload URL. Send `if-none-match: *` to prevent overwrites.'
            contextS3UploadUrl:
              type: string
              readOnly: true
              description: Presigned URL for uploading the decision context. Expires after up to 15 minutes and never after contextExpiresAt.
            expiresIn:
              type: integer
              readOnly: true
              description: Number of seconds until the upload URL expires.
    DeliveryPromisesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/DeliveryPromisesListFilter'
    DeliveryPromisesListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          properties:
            contextStatus:
              $ref: '#/components/schemas/DeliveryPromisesListFilterContextStatus'
            deliveryPromiseId:
              $ref: '#/components/schemas/DeliveryPromisesListFilterDeliveryPromiseId'
            extDeliveryPromiseId:
              $ref: '#/components/schemas/DeliveryPromisesListFilterExtDeliveryPromiseId'
            orderId:
              $ref: '#/components/schemas/DeliveryPromisesListFilterOrderId'
    DeliveryPromisesListFilterContextStatus:
      type: array
      items:
        $ref: '#/components/schemas/DeliveryPromiseContextStatus'
    DeliveryPromisesListFilterDeliveryPromiseId:
      type: array
      items:
        type: string
    DeliveryPromisesListFilterExtDeliveryPromiseId:
      type: array
      items:
        type: string
    DeliveryPromisesListFilterOrderId:
      type: array
      items:
        type: string
    DeliveryPromisesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deliveryPromises:
              type: array
              items:
                $ref: '#/components/schemas/DeliveryPromise'
            filters:
              $ref: '#/components/schemas/DeliveryPromisesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    DependencyEntityName:
      type: string
      description: Dependency Entity Name
      enum:
        - entity
        - exceptions
        - fulfillments
        - inventory
        - locations
        - payments
        - orders
        - products
        - relatedEntity
        - shipments
        - integrations
        - organizations
        - location_groups
        - shipping_methods
    Destination:
      type: object
      properties:
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extDestinationId:
          type: string
          description: destinationId
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/DestinationLineItem'
        shippingAddress:
          $ref: '#/components/schemas/AddressNullable'
    DestinationLineItem:
      type: object
      properties:
        quantity:
          type: number
          format: float
          description: Item Quantity
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        sku:
          type: string
          description: Item SKU
        uniqueId:
          type: string
          description: Item unique Id (within an order)
    Direction:
      type: string
      description: Route/Mapping Direction
      enum:
        - in
        - out
    Discount:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/DiscountType'
          description: Discount type
        value:
          type: number
          description: absolute value of discount
        createdAt:
          type: string
          format: date-time
          description: Order discount created at
        label:
          type: string
          description: optional discount label
        lineItemId:
          type: string
          description: optional reference to lineItems[].uniqueId for lineItem discount
        reference:
          type: string
          description: optional id/name of discount source, e.g. coupon code
    DiscountType:
      type: string
      description: Discount Type
      enum:
        - coupon
        - manual
        - other
    DryRunRequestData:
      type: object
      required:
        - integrationId
      properties:
        integrationId:
          type: string
          description: Order Routing Engine Integration ID
        filters:
          type: array
          items:
            type: object
            description: Pipe17 Order Routing Filters
        integrationSettingsMap:
          type: object
          description: ORE Integration Settings
        inventories:
          type: array
          items:
            type: object
            description: Pipe17 Inventory Objects
        locations:
          type: array
          items:
            type: object
            description: Pipe17 Location Objects
        order:
          type: object
          description: Pipe17 Order Object
        orderRouting:
          type: object
          description: Pipe17 Order Routing Object
        shipmentsForOrder:
          type: array
          items:
            type: object
            description: Pipe17 Shipment Objects
      description: dry-run-lambda input object (- DryrunPayload)
    EntityFieldRef:
      type: string
      enum:
        - metrics.name
        - orders.orderSource
        - products.sku
        - products.integration
        - products.vendor
      description: Entity field reference, in "entityType.fieldPath" format
    EntityFilter:
      allOf:
        - type: object
          properties:
            filterId:
              type: string
              description: Filter ID
            status:
              type: string
              description: Filter status
        - $ref: '#/components/schemas/EntityFilterCreateData'
        - $ref: '#/components/schemas/CoreObject'
    EntityFilterCondition:
      type: object
      description: An entity filter condition
      additionalProperties: true
    EntityFilterCreateData:
      type: object
      properties:
        entity:
          $ref: '#/components/schemas/FilterEntityName'
        name:
          $ref: '#/components/schemas/EntityFilterName'
        query:
          $ref: '#/components/schemas/EntityFilterQuery'
        dashboard:
          type: integer
          description: Order parameter of the filter view on dashboard
        favorite:
          type: boolean
          description: Favourite filter indicator
        internal:
          $ref: '#/components/schemas/InternalInfo'
        isPublic:
          type: boolean
          description: Public filter indicator
        originId:
          type: string
      required:
        - name
        - query
        - entity
    EntityFilterCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            entityFilter:
              $ref: '#/components/schemas/EntityFilter'
    EntityFilterCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            entityFilter:
              $ref: '#/components/schemas/EntityFilter'
    EntityFilterFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    EntityFilterFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            entityFilter:
              $ref: '#/components/schemas/EntityFilter'
    EntityFilterListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/EntityFiltersListFilter'
    EntityFilterListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            entityFilters:
              type: array
              items:
                $ref: '#/components/schemas/EntityFilter'
            filters:
              $ref: '#/components/schemas/EntityFiltersListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    EntityFilterName:
      type: string
      description: Filter name
    EntityFilterQuery:
      type: object
      description: Filter query object
      additionalProperties: true
      required:
        - operator
        - conditions
      properties:
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/EntityFilterCondition'
        operator:
          type: string
          description: Query operator
        inverse:
          type: boolean
          description: Toggles whether the query result is inverted when assessing whether an object passes the filter
        version:
          type: string
          description: Version of the query object schema
    EntityFilterUpdateData:
      type: object
      properties:
        dashboard:
          type: integer
          description: Order parameter of the filter view on dashboard
          nullable: true
        favorite:
          type: boolean
          description: Favourite filter indicator
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isPublic:
          type: boolean
          description: Public filter indicator
        name:
          type: string
          description: Filter name
        originId:
          type: string
        query:
          $ref: '#/components/schemas/EntityFilterQuery'
    EntityFilterUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    EntityFilterUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/EntityFilterUpdateData'
      xml:
        name: request
    EntityFilterUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            entityFilter:
              $ref: '#/components/schemas/EntityFilter'
    EntityFiltersDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    EntityFiltersDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    EntityFiltersFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Entity Filters Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted filters
            entity:
              type: array
              items:
                $ref: '#/components/schemas/FilterEntityName'
              description: Fetch by list of entity types
            filterId:
              type: array
              items:
                type: string
              description: Fetch by list of filterId
            name:
              type: array
              items:
                type: string
              description: Fetch by list of filter names
            originId:
              type: array
              items:
                type: string
              description: Fetch by list of originId
    EntityFiltersListFilter:
      allOf:
        - $ref: '#/components/schemas/EntityFiltersFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Entity Filters Filter
    EntityName:
      type: string
      description: Entity Name
      enum:
        - accounts
        - arrivals
        - automations
        - automation_rules
        - automation_runs
        - changelog
        - connectors
        - customers
        - custom_objects
        - contacts
        - entity_filters
        - exceptions
        - fulfillments
        - fulfillment_rates
        - functions
        - inventory
        - inventory_groups
        - inventoryrules
        - invoices
        - labels
        - locations
        - location_groups
        - lookup_objects
        - metrics
        - payments
        - orders
        - order_regions
        - order_routings
        - catalogs
        - catalog_products
        - products
        - purchases
        - receipts
        - refunds
        - returns
        - schedules
        - shipments
        - shipment_boxes
        - shipping_methods
        - statements
        - statement_transactions
        - cycle_counts
        - cycle_count_entries
        - stores
        - suppliers
        - transfers
        - waves
        - trackings
        - usagedata
        - usageplans
        - vendor_schemas
    EntityRestrictionsItem:
      type: object
      required:
        - path
      properties:
        path:
          type: string
          enum:
            - restricted
            - since
            - until
            - content
    EntityRestrictionsList:
      type: array
      items:
        $ref: '#/components/schemas/EntityRestrictionsItem'
    EntityRestrictionsValue:
      allOf:
        - $ref: '#/components/schemas/EntityRestrictionsItem'
        - type: object
          properties:
            type:
              type: string
              enum:
                - boolean
                - date
                - array
            value:
              type: object
    EntityRestrictionsValueList:
      type: array
      items:
        $ref: '#/components/schemas/EntityRestrictionsValue'
    EntitySchema:
      allOf:
        - type: object
          properties:
            schemaId:
              type: string
              description: Schema ID
        - $ref: '#/components/schemas/EntitySchemaCreateData'
        - $ref: '#/components/schemas/CoreObject'
    EntitySchemaCreateData:
      type: object
      properties:
        entity:
          $ref: '#/components/schemas/EntityName'
        fields:
          $ref: '#/components/schemas/EntitySchemaItems'
        name:
          type: string
          description: Schema name
        internal:
          $ref: '#/components/schemas/InternalInfo'
      required:
        - name
        - fields
        - entity
    EntitySchemaCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            entitySchema:
              $ref: '#/components/schemas/EntitySchema'
    EntitySchemaCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            entitySchema:
              $ref: '#/components/schemas/EntitySchema'
    EntitySchemaFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    EntitySchemaFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            entitySchema:
              $ref: '#/components/schemas/EntitySchema'
    EntitySchemaItem:
      type: object
      description: Entity schema field descriptor
    EntitySchemaItems:
      type: array
      description: Entity schema field descriptors
      items:
        $ref: '#/components/schemas/EntitySchemaItem'
    EntitySchemaListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/EntitySchemasListFilter'
    EntitySchemaListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            entitySchemas:
              type: array
              items:
                $ref: '#/components/schemas/EntitySchema'
            filters:
              $ref: '#/components/schemas/EntitySchemasListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    EntitySchemaUpdateData:
      type: object
      properties:
        fields:
          $ref: '#/components/schemas/EntitySchemaItems'
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        name:
          type: string
          description: Schema name
    EntitySchemaUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    EntitySchemaUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/EntitySchemaUpdateData'
      xml:
        name: request
    EntitySchemaUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            entitySchema:
              $ref: '#/components/schemas/EntitySchema'
    EntitySchemasDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    EntitySchemasDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    EntitySchemasFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Entity Schemas Filter
          properties:
            entity:
              type: array
              items:
                $ref: '#/components/schemas/EntityName'
              description: Fetch by list of entity types
            name:
              type: array
              items:
                type: string
              description: Fetch by list of schema names
            schemaId:
              type: array
              items:
                type: string
              description: Fetch by list of schemaId
    EntitySchemasListFilter:
      allOf:
        - $ref: '#/components/schemas/EntitySchemasFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Entity Schemas Filter
    EntityTags:
      type: array
      items:
        type: string
      description: Tags assigned to entity
    Env:
      type: string
      description: Environment ID
      enum:
        - test
        - prod
    ErasureLogFilter:
      type: object
      properties:
        count:
          type: integer
          format: int32
          description: Return at most this many records
        email:
          type: array
          items:
            type: string
          description: Select records by email list
        keys:
          type: string
          default: recordId,orgKey,email,count,status,createdAt
          description: Return these top-level ields
        order:
          type: string
          default: '-createdAt'
          description: Sort by these top-level fields
        pagination:
          type: string
          enum:
            - disabled
          description: Exclude pagination info from the response
        recordId:
          type: array
          items:
            type: string
          description: Select records by recordId list
        rquestId:
          type: array
          items:
            type: string
          description: Select records by rquestId list
        since:
          type: string
          format: date-time
          description: Select records created after this date-time
        skip:
          type: integer
          format: int32
          description: Skip this many record
        status:
          type: array
          items:
            type: string
            enum:
              - completed
              - uncompleted
              - rejected
          description: Select records by status list
        until:
          type: string
          format: date-time
          description: Select records created before this date-time
    ErasureLogRecord:
      allOf:
        - type: object
          required:
            - email
            - status
          properties:
            email:
              type: string
              description: Email address of data subject
            status:
              type: string
              enum:
                - completed
                - uncompleted
                - rejected
              description: |
                Erasure attempt completion status:
                - `completed` - successful completion
                - `uncompleted` - erasure is not completed, a repeat will be done
                - `rejected` - erasure can't be executed
            before:
              type: string
              format: date-time
              description: The max date of creation of the objects for which the search was performed
            count:
              type: number
              description: The number of objects where personal information was found and erased
            details:
              type: array
              description: Each element of the array represents cleanup result of an entity collection
              items:
                type: object
                required:
                  - entity
                  - status
                properties:
                  entity:
                    description: Entity collection name
                    type: string
                    enum:
                      - contacts
                      - customers
                      - invoices
                      - orders
                      - returns
                      - shipments
                  count:
                    type: number
                    description: The number of objects where personal information was found and erased
                  status:
                    description: Cleanup completion status
                    type: string
                    enum:
                      - fulfilled
                      - rejected
                  reason:
                    type: string
                    description: The reason for rejection
            identity:
              type: string
              description: Identity of api user who initiated the erasure (- userId|apikeyId)
            reason:
              type: string
              description: The reason for rejection
            recordId:
              type: string
              description: ID of this log record
            requestId:
              type: string
              description: ID of http api request that initiated the erasure
        - $ref: '#/components/schemas/CoreObject'
    ErasureRecordListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ErasureLogFilter'
    ErasureRecordListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ErasureLogFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            records:
              description: Each log entry represents an iteration of the erasure process
              type: array
              items:
                $ref: '#/components/schemas/ErasureLogRecord'
    EvaluationDependency:
      type: object
      description: A dependency required for evaluation.
      oneOf:
        - $ref: '#/components/schemas/EvaluationDependencyRelated'
        - $ref: '#/components/schemas/EvaluationDependencyList'
    EvaluationDependencyBase:
      type: object
      required:
        - type
        - entity
      properties:
        entity:
          type: string
          description: The entity to fetch.
          allOf:
            - $ref: '#/components/schemas/DependencyEntityName'
        type:
          type: string
          enum:
            - related
            - list
    EvaluationDependencyList:
      type: object
      description: Any dependency required for evaluation which will list entities with supplied param filters.
      allOf:
        - $ref: '#/components/schemas/EvaluationDependencyBase'
      properties:
        entity:
          type: string
          description: Entity to fetch by list.
          $ref: '#/components/schemas/DependencyEntityName'
        variableName:
          type: string
          description: Variable name to use for the fetched items in evaluation code.  Must not conflict with reserved words or variable names.
        getParamsByCode:
          type: string
          description: Code that returns params used for fetching the entity by list.
    EvaluationDependencyRelated:
      type: object
      description: A dependency related to the current context required for evaluation.
      allOf:
        - $ref: '#/components/schemas/EvaluationDependencyBase'
    Event:
      allOf:
        - type: object
          properties:
            eventId:
              type: string
              description: Event ID
            keywords:
              type: array
              items:
                type: string
            source:
              $ref: '#/components/schemas/EventRequestSource'
        - $ref: '#/components/schemas/EventCreateData'
        - $ref: '#/components/schemas/CoreObject'
    EventBase:
      type: object
      properties:
        direction:
          $ref: '#/components/schemas/Direction'
          description: operation direction
        duration:
          type: number
          format: int32
          description: operation duration
        entityId:
          type: string
          description: entityId
        entityType:
          type: string
          description: entity type
        extEntityId:
          type: string
          description: extEntityId
        integration:
          type: string
          description: integration id
        isBatch:
          type: boolean
          description: Indicates if the event is for a batch action
        operation:
          $ref: '#/components/schemas/EventOperation'
        requestId:
          type: string
          description: API request Id
        source:
          $ref: '#/components/schemas/EventRequestSourcePublic'
        status:
          $ref: '#/components/schemas/EventRequestStatus'
        timestamp:
          type: string
          format: date-time
          description: When the event was triggered
        userId:
          type: string
          description: API user id
    EventCreateData:
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - type: object
          properties:
            request:
              $ref: '#/components/schemas/EventRequestData'
            response:
              $ref: '#/components/schemas/EventResponseData'
    EventCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            event:
              $ref: '#/components/schemas/Event'
    EventCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            event:
              $ref: '#/components/schemas/Event'
    EventFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    EventFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            event:
              $ref: '#/components/schemas/Event'
    EventListItem:
      allOf:
        - type: object
          properties:
            eventId:
              type: string
              description: Event ID
            keywords:
              type: array
              items:
                type: string
            source:
              $ref: '#/components/schemas/EventRequestSource'
        - $ref: '#/components/schemas/EventBase'
        - $ref: '#/components/schemas/CoreObject'
    EventOperation:
      type: string
      enum:
        - create
        - update
        - delete
        - poll
        - acknowledge
        - check
        - cleanup
        - detach
        - download
        - mode
        - move
        - reinvite
        - replay
        - reset_password
        - results
        - set-rule-order
        - setup
        - sync
        - upgrade
        - upload
        - variables
      description: |
        Name of operation with entity. The following operations are applicable only to particular types of entities:
        - "acknowledge" - fulfillments
        - "check" - orders
        - "cleanup" - organizations
        - "detach" - organizations
        - "download" - labels
        - "mode" - organizations
        - "move" - organizations
        - "reinvite" - users
        - "replay" - events
        - "reset_password" - users
        - "results" - jobs
        - "set-rule-order" - automations
        - "setup" - connectors
        - "sync" - arrivals, fulfillments, inventory, orders, products, receipts, shipments
        - "upgrade" - integrations
        - "upload" - labels
        - "variables" - integrations
    EventReplayError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    EventReplayResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
    EventRequestData:
      type: object
      properties:
        authobj:
          type: object
          description: Request authorization info
        body:
          type: string
          description: Request body
        headers:
          type: object
          description: Request headers
        method:
          type: string
          description: Request method
        url:
          type: string
          description: Request url
    EventRequestSource:
      type: string
      description: Event Type
      enum:
        - api
        - api-webhook
        - custom
    EventRequestSourcePublic:
      type: string
      description: Event Type
      enum:
        - custom
    EventRequestStatus:
      type: string
      description: Event Status
      enum:
        - pending
        - acknowledged
        - completed
        - failed
    EventResponseData:
      type: object
      properties:
        body:
          type: string
          description: Response body
        headers:
          type: object
          description: Response headers
        message:
          type: string
          description: Response message
        retries:
          type: number
          description: Number of retries
        status:
          type: number
          description: Response status
    EventSource:
      type: string
      description: Event source partner type
      enum:
        - wms
        - ims
        - oms
        - portal
    EventType:
      type: string
      description: |
        Type of event triggering inventory change:
          * `ingest` - Indicates quantities reported by fulfillment channel (warehouse).
          * `adjust` - Manual inventory update or result of bundle quantities update by Inventory Engine.
          * `assign` - Partial inventory level reported by a fulfillment channel. Any quantity may be omitted; omitted quantities keep their current value, and the remaining quantity is derived so that `onHand = committed + available + unavailable`. `committed` is never derived, so a supply-only sync cannot disturb demand. Only valid on the inventory create path.
          * `touch` - Simulated inventory update not tied with quantity changes. Initiates inventory sync and/or recalculation process.
          * `POSOrder` - Includes quantity updates of inventory item referred in POS order. Reduces `available`, `onHand`.
          * `virtualCommit` - Includes quantity updates of inventory item referred in sales order or shipping request. Indicates the difference between order quantity and shipment(s) quantity. Used to adjust `available` and `committed` in the virtual location to maintain inventory totals prior to creation of shipping request.
          * `ship` - Includes quantity updates of inventory item referred in sales order shipping request. Reduces `available`, increases `committed` and `commitShip`.
          * `shipCancel` - Includes quantity updates of inventory item referred in canceled sales order shipping request (excluding `futureShipCancel` case). Decreases `committed`, adjusts `onHand` and `commitShip`.
          * `shipCancelRestock` - Includes quantity updates of inventory item referred in canceled sales order shipping request with `canceledRestock` status. Reduces `committed`, increases `available`, adjusts `commitShip`.
          * `fulfill` - Includes quantity updates of inventory item referred in sales order fulfillment. Reduces `committed`, `onHand`, `commitShip`.
          * `futureShip` - Includes quantity updates of inventory item referred in sales order shipping request assigned `pendingInventory` status. Increases `committedFuture`.
          * `release` - Includes quantity updates of inventory item referred in sales order shipping request once it transitions from `pendingInventory` to `readyForFulfillment` status. Transfers quantity from `committedFuture` to `committed`, adjusts `available` and `commitShip`.
          * `futureShipCancel` - Includes quantity updates of inventory item referred in canceled sales order shipping request which was once assigned `pendingInventory` status. Reduces `committedFuture`.
          * `xferout` - Includes quantity updates of inventory item referred in transfer order shipping request with `readyForFulfillment` status. Reduces `available`, increases `committed`, adjusts `commitXfer`.
          * `xferfulfill` - Includes quantity updates of inventory item referred in transfer order fulfillment. Reduces `committed`, `onHand`, `commitXfer`.
          * `xferin` - Includes quantity updates of inventory item referred in arrival. Increases `incoming` quantity.
          * `receive` - Includes quantity updates of inventory item referred in receipt. Increases `available`, decreases `incoming`, adjusts `onHand` and `future`.
          * `cycleCount` - Reconciles inventory to a physical stock count. Only valid on the inventory update path, and the one event there that assigns an absolute quantity: `quantity` carries the **counted on-hand**, not a delta. `onHand` is set to it, `available` absorbs the difference against the previous level, and `committed` is left untouched. The ledger entry records the resulting adjustment in `quantity`. To assign quantities other than `onHand`, or several at once, use the `assign` event on the create path.
      enum:
        - ingest
        - adjust
        - assign
        - custom
        - revise
        - ship
        - fulfill
        - xferin
        - xferout
        - return
        - receive
        - xferfulfill
        - futureShip
        - release
        - shipCancel
        - shipCancelRestock
        - futureShipCancel
        - virtualCommit
        - touch
        - POSOrder
        - instantTransfer
        - cycleCount
    EventUpdateData:
      type: object
      properties:
        duration:
          type: number
          format: int32
          description: operation duration
        isBatch:
          type: boolean
          description: Indicates if the event is for a batch action
        response:
          $ref: '#/components/schemas/EventResponseData'
          type: number
          description: Event data response code
        status:
          $ref: '#/components/schemas/EventRequestStatus'
    EventUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    EventUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/EventUpdateData'
      xml:
        name: request
    EventUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            event:
              $ref: '#/components/schemas/Event'
    EventsDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    EventsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    EventsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Events Filter
          properties:
            apikeyId:
              type: array
              items:
                type: string
              description: Fetch by list of api keys
            direction:
              type: array
              items:
                $ref: '#/components/schemas/Direction'
              description: Fetch by list of event directions
            entityId:
              type: array
              items:
                type: string
              description: Fetch by list of entityId
            entityType:
              type: array
              items:
                type: string
              description: Fetch by list of entity types
            eventId:
              type: array
              items:
                type: string
              description: Fetch by list of eventId
            extEntityId:
              type: array
              items:
                type: string
              description: Fetch by list of extEntityId
            identity:
              type: array
              items:
                type: string
              description: Fetch by list of identity ids (- either integration, apikeyId, or userId)
            integration:
              type: array
              items:
                type: string
              description: Fetch by list of integrations
            keywords:
              type: array
              items:
                type: string
              description: Fetch by keywords
            operation:
              type: array
              items:
                $ref: '#/components/schemas/EventOperation'
              description: Fetch by list of event operations
            source:
              type: array
              items:
                $ref: '#/components/schemas/EventRequestSource'
              description: Fetch by list of event sources
            status:
              type: array
              items:
                $ref: '#/components/schemas/EventRequestStatus'
              description: Fetch by list of event statuses
            userId:
              type: array
              items:
                type: string
              description: Fetch by list of userId
    EventsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/EventsListFilter'
    EventsListFilter:
      allOf:
        - $ref: '#/components/schemas/EventsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Events Filter
    EventsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            events:
              type: array
              items:
                $ref: '#/components/schemas/EventListItem'
            filters:
              $ref: '#/components/schemas/EventsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    Exception:
      allOf:
        - type: object
          properties:
            autoEngUpdateStatus:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
            autoEngUpdateStatusUpdatedAt:
              $ref: '#/components/schemas/AutoEngUpdateStatusUpdatedAt'
            categoryId:
              type: string
              description: Exception category ID
            exceptionId:
              type: string
              description: Exception ID
            integration:
              type: string
              description: Reference to integration that created an item
            status:
              $ref: '#/components/schemas/ExceptionStatus'
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/ExceptionChangelogEntry'
        - $ref: '#/components/schemas/ExceptionCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ExceptionCategoriesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ExceptionCategoriesListFilter'
    ExceptionCategoriesListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Categories Filter
          properties:
            categoryId:
              type: array
              items:
                type: string
              description: Categories by categoryId list
            entityType:
              type: array
              items:
                type: string
              description: Categories by entityType list
            exceptionType:
              type: array
              items:
                type: string
              description: Categories by exceptionType list
            isPublic:
              type: boolean
              description: The `true` - public categories only, `false` - only org specific ones. By default, any of them.
            tags:
              $ref: '#/components/schemas/EntityTags'
    ExceptionCategoriesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            categories:
              type: array
              items:
                $ref: '#/components/schemas/ExceptionCategory'
            filters:
              $ref: '#/components/schemas/ExceptionCategoriesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ExceptionCategory:
      allOf:
        - type: object
          properties:
            categoryId:
              type: string
              description: Category Id
            status:
              type: string
        - $ref: '#/components/schemas/ExceptionCategoryCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ExceptionCategoryCreateData:
      type: object
      required:
        - specs
      properties:
        specs:
          description: Category exceptions specs
          type: array
          items:
            $ref: '#/components/schemas/ExceptionCategorySpec'
        description:
          type: string
          description: Description of category
        internal:
          $ref: '#/components/schemas/InternalInfo'
        name:
          type: string
          description: Name of category
        tags:
          $ref: '#/components/schemas/EntityTags'
    ExceptionCategoryCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            category:
              $ref: '#/components/schemas/ExceptionCategoryCreateData'
    ExceptionCategoryCreateRequest:
      allOf:
        - $ref: '#/components/schemas/ExceptionCategoryCreateData'
      xml:
        name: request
    ExceptionCategoryCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            category:
              $ref: '#/components/schemas/ExceptionCategory'
    ExceptionCategoryFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ExceptionCategoryFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            category:
              $ref: '#/components/schemas/ExceptionCategory'
    ExceptionCategorySpec:
      type: object
      description: Category exceptions spec
      required:
        - exceptionType
        - entityType
      properties:
        entityType:
          $ref: '#/components/schemas/ExceptionEntityName'
        exceptionType:
          $ref: '#/components/schemas/ExceptionType'
        description:
          type: string
    ExceptionCategoryUpdateData:
      type: object
      properties:
        description:
          type: string
          description: Description of category
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        name:
          type: string
          description: Name of category
        specs:
          description: Category exceptions specs
          type: array
          items:
            $ref: '#/components/schemas/ExceptionCategorySpec'
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
    ExceptionCategoryUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            category:
              $ref: '#/components/schemas/ExceptionCategoryUpdateData'
    ExceptionCategoryUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ExceptionCategoryUpdateData'
      xml:
        name: request
    ExceptionCategoryUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            category:
              $ref: '#/components/schemas/ExceptionCategory'
    ExceptionChangelogEntry:
      allOf:
        - type: object
          properties:
            exceptionId:
              type: string
              description: Exception Id
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    ExceptionCreateData:
      type: object
      required:
        - exceptionType
        - entityId
        - entityType
      properties:
        entityId:
          type: string
          description: Entity ID, or a comma-separated list of Entity IDs when the exception covers several entities. A Pipe17 ID never contains a comma, so no escaping applies to this field.
        entityType:
          $ref: '#/components/schemas/ExceptionEntityName'
        exceptionType:
          $ref: '#/components/schemas/ExceptionType'
        aiTip:
          type: string
        autoEngUpdateStatus:
          $ref: '#/components/schemas/AutoEngUpdateStatus'
        categoryId:
          type: string
          description: Exception category ID
        exceptionDetails:
          type: string
          description: Exception specific error message/details
        exceptionPriority:
          $ref: '#/components/schemas/ExceptionPriority'
        exceptionSeverity:
          $ref: '#/components/schemas/ExceptionSeverity'
        extEntityId:
          type: string
          description: 'External Entity ID, or a comma-separated list of them when the exception covers several entities. Since an external ID may itself contain the separator, both `,` and `\` are reserved inside a value and escaped as `\,` and `\\` -- on input and in responses alike. Any value can therefore be carried, including one that ends in a backslash. Note that JSON string escaping applies on top, so in a JSON body those become `\\,` and `\\\\`. For example the two IDs `WIDGET,BLUE` and `SKU-C` are sent and returned as `"extEntityId": "WIDGET\\,BLUE,SKU-C"`, and `SKU\1` with `SKU-2` as `"extEntityId": "SKU\\\\1,SKU-2"`.'
        extRelatedEntityId:
          type: string
          description: 'External ID of the Related Entity, or a comma-separated list of them. Escaping is the same as for extEntityId: `,` and `\` are reserved inside a value and escaped as `\,` and `\\` -- written `\\,` and `\\\\` in a JSON body, since JSON string escaping applies on top.'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        origin:
          type: string
          enum:
            - external
            - internal
            - unknown
          description: Origin type of the exception
        recommendation:
          type: string
        relatedEntityId:
          type: string
          description: Related Entity ID, or a comma-separated list of them (e.g. for a shipping request the related entity is a sales order or a transfer order). A Pipe17 ID never contains a comma, so no escaping applies to this field.
        relatedEntityType:
          $ref: '#/components/schemas/ExceptionEntityName'
        tags:
          $ref: '#/components/schemas/EntityTags'
    ExceptionCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            exception:
              $ref: '#/components/schemas/ExceptionCreateData'
    ExceptionCreateRequest:
      allOf:
        - $ref: '#/components/schemas/ExceptionCreateData'
      xml:
        name: request
    ExceptionCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            exception:
              $ref: '#/components/schemas/Exception'
    ExceptionEntityName:
      type: string
      description: Exception Entity Name
      enum:
        - accounts
        - apikey
        - arrivals
        - automation_rules
        - automation_runs
        - automations
        - changelog
        - connectors
        - customers
        - custom_objects
        - contacts
        - entity_filters
        - entity_schemas
        - events
        - exception_categories
        - exception_filters
        - exceptions
        - fulfillments
        - functions
        - integration_actions
        - integration_state
        - integrations
        - inventory
        - inventory_groups
        - inventoryrules
        - invoices
        - jobs
        - labels
        - locations
        - location_groups
        - lookup_objects
        - mappings
        - metrics
        - notes
        - delivery_promises
        - order_routing_runs
        - order_routings
        - payments
        - orders
        - organizations
        - catalogs
        - catalog_products
        - pricing
        - products
        - purchases
        - receipts
        - references
        - refunds
        - returns
        - roles
        - routings
        - shipment_boxes
        - shipments
        - shipping_methods
        - statement_transactions
        - statements
        - cycle_counts
        - cycle_count_entries
        - suppliers
        - trackings
        - transfers
        - usagedata
        - usageplans
        - users
        - vendor_schemas
        - webhooks
    ExceptionFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ExceptionFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            exception:
              $ref: '#/components/schemas/Exception'
    ExceptionFilter:
      allOf:
        - type: object
          properties:
            filterId:
              type: string
              description: Filter ID
        - $ref: '#/components/schemas/ExceptionFilterCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ExceptionFilterCreateData:
      type: object
      properties:
        exceptionType:
          $ref: '#/components/schemas/ExceptionType'
        blocking:
          type: boolean
        enabled:
          type: boolean
        internal:
          $ref: '#/components/schemas/InternalInfo'
        isPublic:
          type: boolean
          description: Public filter indicator
        originId:
          type: string
        settings:
          type: object
      required:
        - exceptionType
    ExceptionFilterCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            exceptionFilter:
              $ref: '#/components/schemas/ExceptionFilterCreateData'
    ExceptionFilterCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            exceptionFilter:
              $ref: '#/components/schemas/ExceptionFilter'
    ExceptionFilterFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ExceptionFilterFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            exceptionFilter:
              $ref: '#/components/schemas/ExceptionFilter'
    ExceptionFilterListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ExceptionFiltersListFilter'
    ExceptionFilterListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            exceptionFilters:
              type: array
              items:
                $ref: '#/components/schemas/ExceptionFilter'
            filters:
              $ref: '#/components/schemas/ExceptionFiltersListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ExceptionFilterUpdateData:
      type: object
      properties:
        blocking:
          type: boolean
        enabled:
          type: boolean
        exceptionType:
          $ref: '#/components/schemas/ExceptionType'
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isPublic:
          type: boolean
          description: Public filter indicator
        originId:
          type: string
        settings:
          type: object
    ExceptionFilterUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ExceptionFilterUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ExceptionFilterUpdateData'
      xml:
        name: request
    ExceptionFilterUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            exceptionFilter:
              $ref: '#/components/schemas/ExceptionFilter'
    ExceptionFiltersDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    ExceptionFiltersDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    ExceptionFiltersFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Exception Filters Filter
          properties:
            exceptionType:
              type: array
              items:
                type: string
              description: Filters by exceptionType list
            filterId:
              type: array
              items:
                type: string
              description: Filters by filterId list
            originId:
              type: array
              items:
                type: string
              description: Filters by originId list
    ExceptionFiltersListFilter:
      allOf:
        - $ref: '#/components/schemas/ExceptionFiltersFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Exception Filters Filter
    ExceptionPriority:
      type: string
      description: Exception priority
      enum:
        - high
        - medium
        - low
    ExceptionSeverity:
      type: string
      description: Exception severity
      enum:
        - high
        - medium
        - low
    ExceptionStatus:
      type: string
      description: Exception status
      enum:
        - active
        - dismissed
        - resolved
    ExceptionSyncRequest:
      type: object
      properties:
        syncAE:
          type: boolean
          description: Reset autoEngUpdateStatus
    ExceptionType:
      type: string
      description: Exception type
      enum:
        - eAutomation
        - eAutomationGetParamsByCodeError
        - eAutomationListDependencyFetchError
        - eAutomationCodeFilterError
        - eAutomationCodeActionError
        - eGeneric
        - eSyncFailure
        - eUnacknowledged
        - eDelayed
        - eLate
        - eLateCancel
        - eEarly
        - eLost
        - eToday
        - eSplit
        - eStuck
        - eLarge
        - eLow
        - eMissing
        - eMissingSKU
        - eMissingLocation
        - eMismatch
        - eMismatchTax
        - eInvalid
        - eInvalidAddress
        - eInvalidDate
        - eInvalidLocation
        - eInvalidSKU
        - eInvalidMethod
        - eIncomplete
        - eIncompleteAddress
        - eDuplicate
        - eDuplicateSKU
        - eUnexpected
        - eUnexpectedDate
        - eUnexpectedRoutingDelay
        - ePotentialShipByDateDelay
        - eRestock
        - eOutOfStock
        - eFraudSuspected
        - eApprovalRequired
        - ePartiallyCanceled
        - eRouteNotFound
        - eRouteOutOfStock
        - eShippingMethod
        - ePaymentRequired
        - eUnfulfillable
        - eTransform
        - eShipmentMismatch
        - eUnexpectedSplitShipment
        - ePotentialOverfulfill
        - eStuckShippingRequest
        - eCreditMemoInsufficient
        - eOrderSyncFailure
        - eOrderTaxMismatch
        - eInventoryOutOfStock
    ExceptionUpdateData:
      type: object
      properties:
        aiTip:
          type: string
          nullable: true
        autoEngUpdateStatus:
          $ref: '#/components/schemas/AutoEngUpdateStatus'
        categoryId:
          type: string
          description: Exception category ID
        exceptionPriority:
          $ref: '#/components/schemas/ExceptionPriority'
        exceptionSeverity:
          $ref: '#/components/schemas/ExceptionSeverity'
        extRelatedEntityId:
          type: string
          description: External ID of the Related Entity, or a comma-separated list of them. `,` and `\` are reserved inside a value and escaped as `\,` and `\\` -- written `\\,` and `\\\\` in a JSON body, since JSON string escaping applies on top.
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        recommendation:
          type: string
          nullable: true
        relatedEntityId:
          type: string
          description: Related Entity ID, or a comma-separated list of them (e.g. for a shipping request the related entity is a sales order or a transfer order). A Pipe17 ID never contains a comma, so no escaping applies to this field.
        relatedEntityType:
          $ref: '#/components/schemas/ExceptionEntityName'
        status:
          $ref: '#/components/schemas/ExceptionStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
    ExceptionUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            exception:
              $ref: '#/components/schemas/ExceptionUpdateData'
    ExceptionUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ExceptionUpdateData'
      xml:
        name: request
    ExceptionUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            exception:
              $ref: '#/components/schemas/Exception'
    ExceptionsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ExceptionsDeleteFilter'
    ExceptionsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/ExceptionsFilter'
        - type: object
          properties:
            action:
              type: string
              enum:
                - list
                - hard
    ExceptionsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted exceptions
            exceptions:
              type: array
              items:
                $ref: '#/components/schemas/Exception'
            filters:
              $ref: '#/components/schemas/ExceptionsDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ExceptionsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Exceptions Filter
          properties:
            categoryId:
              type: array
              items:
                type: string
              description: Exceptions by categoryId-list
            entityId:
              type: array
              items:
                type: string
              description: Exceptions related to this list of entities
            entityType:
              type: array
              items:
                type: string
              description: Exceptions related to list of entity types
            exceptionId:
              type: array
              items:
                type: string
              description: Exceptions by exceptionId-list
            exceptionType:
              type: array
              items:
                type: string
              description: Exceptions by exceptionType-list
            integration:
              type: array
              items:
                type: string
              description: Exceptions created by listed integrations
            tags:
              $ref: '#/components/schemas/EntityTags'
    ExceptionsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ExceptionsListFilter'
    ExceptionsListFilter:
      allOf:
        - $ref: '#/components/schemas/ExceptionsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          properties:
            autoEngUpdateStatus:
              type: array
              items:
                $ref: '#/components/schemas/AutoEngUpdateStatus'
            exceptionDetails:
              type: array
              items:
                type: string
              description: Exceptions with the status `active`, which contain specified terms in the `exceptionDetails` field  (wildcards `*` and `?` are supported in any term, but not as the first character)
            exceptionPriority:
              type: array
              items:
                $ref: '#/components/schemas/ExceptionPriority'
              description: Exceptions by exceptionPriority-list
            exceptionSeverity:
              type: array
              items:
                $ref: '#/components/schemas/ExceptionSeverity'
              description: Exceptions by exceptionSeverity-list
            extEntityId:
              type: array
              items:
                type: string
              description: Exceptions related to this list of entities. `,` and `\` are reserved inside a value and escaped as `\,` and `\\` -- written with a single backslash in the URL, since no JSON escaping applies here.
            extRelatedEntityId:
              type: array
              items:
                type: string
              description: Exceptions related to this list of related entities. `,` and `\` are reserved inside a value and escaped as `\,` and `\\` -- written with a single backslash in the URL, since no JSON escaping applies here.
            integrationOwned:
              type: boolean
              description: Exceptions created by current integration only
            relatedEntityId:
              type: array
              items:
                type: string
              description: Exceptions related to this list of related entities
            relatedEntityType:
              type: array
              items:
                type: string
              description: Exceptions related to list of related entity types
            status:
              type: array
              items:
                type: string
              description: Exceptions by status-list
    ExceptionsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            exceptions:
              type: array
              items:
                $ref: '#/components/schemas/Exception'
            filters:
              $ref: '#/components/schemas/ExceptionsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ExceptionsStatusUpdateData:
      type: object
      required:
        - exceptions
        - status
      properties:
        exceptions:
          type: array
          items:
            type: string
            maxItems: 50
          description: exception IDs to be updated
        status:
          type: string
          enum:
            - active
            - dismissed
            - resolved
          description: status to which the objects should be updated
    ExceptionsStatusUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            params:
              $ref: '#/components/schemas/ExceptionsStatusUpdateData'
    ExceptionsStatusUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ExceptionsStatusUpdateData'
      xml:
        name: request
    ExceptionsStatusUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            unresolved:
              type: array
              items:
                type: string
              description: Unresolved IDs (- exceptions not found)
            updated:
              type: array
              items:
                type: string
              description: IDs of the updated exceptions
    Failure:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    Fee:
      type: object
      required:
        - name
        - value
      properties:
        name:
          type: string
          description: fee name as defined at source channel, might be composed from several source attributes
        value:
          type: number
          description: monetary amount
        category:
          type: string
          description: fee category
          enum:
            - charge
            - fee
            - refund
            - dispute
            - adjustment
            - payout
            - reserve
            - other
        kind:
          type: string
          description: fee balance hint
          enum:
            - credit
            - debit
            - neutral
            - unknown
        ordinal:
          type: number
          description: defines order for presentation (UI)
        term:
          type: string
          description: fee term
          enum:
            - gross
            - net
            - deduction
    FeedbackInfo:
      type: object
      required:
        - isSatisfactory
      properties:
        isSatisfactory:
          type: boolean
          description: Whether the user found the interaction satisfactory
        message:
          type: string
          description: User feedback message
    FilterEntityName:
      type: string
      description: EntityFilter Entity Name
      enum:
        - accounts
        - apikey
        - arrivals
        - automation_rules
        - automation_runs
        - automations
        - changelog
        - connectors
        - customers
        - custom_objects
        - contacts
        - entity_filters
        - entity_schemas
        - events
        - exception_categories
        - exception_filters
        - exceptions
        - fulfillments
        - functions
        - integration_actions
        - integration_state
        - integrations
        - inventory
        - inventory_groups
        - inventoryrules
        - invoices
        - jobs
        - labels
        - locations
        - location_groups
        - lookup_objects
        - mappings
        - metrics
        - notes
        - order_regions
        - delivery_promises
        - order_routing_runs
        - order_routings
        - payments
        - orders
        - organizations
        - catalogs
        - catalog_products
        - pricing
        - products
        - purchases
        - receipts
        - references
        - refunds
        - returns
        - roles
        - routings
        - shipment_boxes
        - shipments
        - shipping_methods
        - statement_transactions
        - statements
        - cycle_counts
        - cycle_count_entries
        - suppliers
        - trackings
        - transfers
        - usagedata
        - usageplans
        - users
        - vendor_schemas
        - webhooks
    Fulfillment:
      allOf:
        - type: object
          properties:
            acknowledgement:
              type: array
              description: Integrations acknowledgement info for this fulfillment
              items:
                $ref: '#/components/schemas/FulfillmentAcknowledgment'
            acknowledgementSources:
              type: object
              properties:
                erp:
                  type: string
                  format: date-time
                oms:
                  type: string
                  format: date-time
              description: fulfillment acknowledgments by integration type
            autoEngUpdateStatus:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the fulfillment
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the fulfillment
            fulfillmentId:
              type: string
              description: Fulfillment ID
            integration:
              type: string
              description: Reference to integration that created an item
            lineItems:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentItemExt'
            locationId:
              type: string
              description: locationId of the fulfillment
            orderId:
              type: string
              description: Pipe17 Internal Order's ID
            orderIntegration:
              type: string
              description: Reference to integration that created order tied to an item
            orderSource:
              type: string
              description: 'The order platform: walmart, etsy, etc'
            orderType:
              type: string
              enum:
                - sales
                - transfer
                - purchase
              description: Type of Pipe17 Internal Order
            priority:
              $ref: '#/components/schemas/Priority'
            shipmentIntegration:
              type: string
              description: Reference to integration that created shipment tied to an item
            status:
              type: string
              enum:
                - submitted
                - deleted
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentChangelogEntry'
        - $ref: '#/components/schemas/FulfillmentCreateGroupProps'
        - $ref: '#/components/schemas/FulfillmentCreateBaseData'
        - $ref: '#/components/schemas/CoreObject'
    FulfillmentAcknowledgeData:
      type: object
      properties:
        integration:
          type: string
          description: Acknowledging integration
    FulfillmentAcknowledgeError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            options:
              $ref: '#/components/schemas/FulfillmentAcknowledgeData'
    FulfillmentAcknowledgeRequest:
      allOf:
        - $ref: '#/components/schemas/FulfillmentAcknowledgeData'
      xml:
        name: request
    FulfillmentAcknowledgeResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
    FulfillmentAcknowledgment:
      type: object
      properties:
        acknowledgedAt:
          type: string
          format: date-time
          description: Acknowledged at
        integration:
          type: string
    FulfillmentAcknowledgmentSource:
      type: string
      enum:
        - erp
        - oms
    FulfillmentChangelogEntry:
      allOf:
        - type: object
          properties:
            fulfillmentId:
              type: string
              description: Fulfillment Id
            shipmentId:
              type: string
              description: Shipment Id
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    FulfillmentCreateBaseData:
      type: object
      properties:
        actualShipDate:
          type: string
          format: date-time
          description: Actual ship date
        billOfLading:
          type: string
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        dimensionsUnit:
          type: string
          description: Dimensions UOM
          enum:
            - cm
            - in
            - ft
        expectedArrivalDate:
          type: string
          format: date-time
          description: Expected arrival date
        extFulfillmentId:
          type: string
          description: Reference to fulfillment on external system (vendor)
        extOrderId:
          type: string
          description: External customer friendly ID
        fulfillmentType:
          $ref: '#/components/schemas/FulfillmentType'
        height:
          type: number
          format: float
          description: Height
        internal:
          $ref: '#/components/schemas/InternalInfo'
        length:
          type: number
          format: float
          description: Length
        locationId:
          type: string
          description: locationId of the fulfillment
        pickupDetails:
          type: object
          description: Pickup completion details (BOPIS/BOPAC only)
          nullable: true
          properties:
            pickedUpBy:
              type: object
              description: Person who picked up the order
              properties:
                firstName:
                  type: string
                lastName:
                  type: string
                phone:
                  type: string
                email:
                  type: string
                idType:
                  type: string
                  enum:
                    - drivers_license
                    - passport
                    - state_id
                    - military_id
                    - other
                idNumber:
                  type: string
                  description: Last 4 digits of ID number
            pickedUpAt:
              type: string
              format: date-time
              description: When order was picked up
            verifiedBy:
              type: string
              description: User ID of store rep who verified pickup
            verifiedByName:
              type: string
              description: Name of store rep who verified
            verificationMethod:
              type: string
              enum:
                - pickup_code
                - photo_id
                - signature
                - phone_verification
              description: How identity was verified
            pickupEvidence:
              type: array
              description: Evidence of pickup (photos, signatures)
              items:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - signature
                      - photo
                      - id_scan
                  url:
                    type: string
                    description: URL to evidence file (S3, etc.)
                  capturedAt:
                    type: string
                    format: date-time
                  capturedBy:
                    type: string
                    description: User ID who captured evidence
            pickupNotes:
              type: string
              description: Additional notes from store rep
        sacCode:
          type: string
        shipmentId:
          type: string
          description: Internal Pipe17 ID of the Shipment
        shippingCarrier:
          type: string
          description: Shipping Carrier
        shippingCharge:
          type: number
          format: float
          description: Shipping Charge
        shippingClass:
          type: string
          description: Shipping Class
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        ssccCode:
          type: string
        tags:
          $ref: '#/components/schemas/EntityTags'
        trackedAtSourceChannel:
          type: boolean
          description: Whether tracking number were issued by source channel and thus fulfillment reporting is not required
        trackingNumber:
          type: array
          items:
            type: string
          description: Tracking number(s). Not required when `fulfillmentType` is `rejected` or `void`.
        trackingURLs:
          type: array
          items:
            type: string
          description: Tracking url(s)
        ucc128:
          type: string
        weight:
          type: number
          format: float
          description: Weight
        weightUnit:
          type: string
          description: Weight unit
          enum:
            - lb
            - oz
            - kg
            - g
        width:
          type: number
          format: float
          description: Width
    FulfillmentCreateData:
      allOf:
        - type: object
          xml:
            name: fulfillment
          required:
            - shipmentId
            - trackingNumber
            - lineItems
          properties:
            lineItems:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentItem'
            autoEngUpdateStatus:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
            priority:
              $ref: '#/components/schemas/Priority'
        - $ref: '#/components/schemas/FulfillmentCreateGroupProps'
        - $ref: '#/components/schemas/FulfillmentCreateBaseData'
    FulfillmentCreateGroupProps:
      type: object
      properties:
        groupComplete:
          type: boolean
        groupId:
          type: string
        groupItem:
          type: number
        groupLength:
          type: number
    FulfillmentCreateResult:
      type: object
      properties:
        code:
          type: integer
          format: int32
          description: HTTP status code
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        exceptionId:
          type: string
          description: Id of the exception the platform raised for this item. Present only when the item failed and an exception was raised for it.
        fulfillment:
          $ref: '#/components/schemas/Fulfillment'
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    FulfillmentFailureException:
      type: object
      description: The exception the platform raised for the failed request. Present only on a single-fulfillment request that failed and for which an exception was raised.
      properties:
        exceptionId:
          type: string
          description: Id of the raised exception
    FulfillmentFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    FulfillmentFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            fulfillment:
              $ref: '#/components/schemas/Fulfillment'
    FulfillmentItem:
      type: object
      required:
        - sku
        - quantity
      properties:
        quantity:
          type: number
          format: float
          description: Item quantity
        sku:
          type: string
          description: Item SKU
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        expirationDate:
          description: Item expirationDate provided by fulfillment channel
          type: string
          format: date-time
        lotNumber:
          description: Item lot number provided by fulfillment channel
          type: string
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        serialNumbers:
          description: |
            Item serial numbers provided by fulfillment channel. Each entry is either a single serial (e.g. "10105") or an inclusive alphanumeric range "FROM..TO" using the ".." separator (e.g. "10120..10199" or "SN-00100..SN-00199"). Range endpoints must share an identical prefix and end with a numeric tail. Single serials may contain hyphens; only ".." denotes a range.
          type: array
          items:
            type: string
        trackedAtSourceChannel:
          type: boolean
        uniqueId:
          type: string
          description: Item unique Id (to be matched with shipment line item)
        upc:
          type: string
          description: Item UPC
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    FulfillmentItemExt:
      allOf:
        - $ref: '#/components/schemas/FulfillmentItem'
        - type: object
          properties:
            bundleQuantity:
              type: number
              format: float
              description: Matching bundle quantity when available
            bundleQuantityPartial:
              type: array
              items:
                type: number
            bundleSKU:
              type: string
              description: Matching bundle SKU when available
            bundleUPC:
              type: string
              description: reference to bundle for bundle components
            originalBundleSKU:
              type: string
              description: |
                Canonical Pipe17 SKU that 'bundleSKU' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
            vendorBundleSKU:
              type: string
              description: |
                Channel SKU for the bundle. On a write made with withSKUMapping, the channel SKU that 'bundleSKU' was resolved from is recorded here.
    FulfillmentRate:
      allOf:
        - type: object
          properties:
            lane:
              type: string
              description: Lane key (`locationId|service`), assigned by the server
            rateId:
              type: string
              description: Fulfillment rate ID
            specificity:
              type: integer
              description: Match specificity score, computed by the server
            status:
              $ref: '#/components/schemas/FulfillmentRateStatus'
        - $ref: '#/components/schemas/FulfillmentRateBase'
        - $ref: '#/components/schemas/CoreObject'
    FulfillmentRateBase:
      type: object
      properties:
        boxes:
          type: array
          items:
            $ref: '#/components/schemas/FulfillmentRateBox'
          description: The location's box catalog used for packing
        country:
          type: string
          default: US
          description: Destination country (US only for now)
        fees:
          $ref: '#/components/schemas/FulfillmentRateFees'
        locationId:
          type: string
          description: Location (warehouse) this rate is negotiated for
        observations:
          type: integer
          description: Number of observed fulfillments behind this rate (0 for cards and manual rates)
        options:
          $ref: '#/components/schemas/FulfillmentRateOptions'
        pickup:
          $ref: '#/components/schemas/FulfillmentRatePickup'
        price:
          $ref: '#/components/schemas/FulfillmentRatePrice'
        service:
          type: string
          description: |
            Carrier service as `carrier/SERVICE` (e.g. `usps/GA`), or a bare carrier code to cover every service of that carrier
        source:
          $ref: '#/components/schemas/FulfillmentRateSource'
        surcharges:
          type: array
          items:
            $ref: '#/components/schemas/FulfillmentRateSurcharge'
          description: Structured surcharges (base-tariff rates only)
        transit:
          $ref: '#/components/schemas/FulfillmentRateTransit'
        validFrom:
          type: string
          format: date-time
          description: Start of the period this rate is grounded in
        validTo:
          type: string
          format: date-time
          description: End of the period this rate is grounded in
        weight:
          $ref: '#/components/schemas/FulfillmentRateWeight'
        zipPrefixes:
          type: array
          items:
            type: string
            pattern: ^(\*|[A-Za-z0-9]{1,8})$
          description: |
            Destination postal-code prefixes at any granularity (e.g. `902`, `90210`, `K1A`, `SW1A`); `*` means any destination, and each entry is `*` or 1-8 letters/digits with no spaces. Defaults to `*`
        zone:
          type: string
          description: |
            Carrier zone label this rate was derived from (e.g. `4`, `Local`). Descriptive only; not used for matching
    FulfillmentRateBox:
      type: object
      required:
        - boxId
        - length
        - width
        - height
      properties:
        boxId:
          type: string
          description: Box identifier within the location's catalog
        height:
          type: number
          format: float
          description: Inner height (in)
        length:
          type: number
          format: float
          description: Inner length (in)
        width:
          type: number
          format: float
          description: Inner width (in)
        maxWeight:
          type: number
          format: float
          description: Max total weight incl. contents and tare (lb)
        tare:
          type: number
          format: float
          description: Empty box weight (lb)
    FulfillmentRateCreateData:
      allOf:
        - type: object
          required:
            - locationId
            - service
            - price
        - $ref: '#/components/schemas/FulfillmentRateBase'
    FulfillmentRateCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate rate scope error details, if any
        errors:
          type: array
          items:
            type: string
          description: Error details if any
        fulfillment_rate:
          $ref: '#/components/schemas/FulfillmentRate'
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    FulfillmentRateFees:
      type: object
      description: The location's handling fees; default 0
      properties:
        perPackage:
          type: number
          format: float
          description: Charged per box (the pack)
        perShipment:
          type: number
          format: float
          description: Charged once per shipment (the pick)
    FulfillmentRateFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    FulfillmentRateFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            fulfillment_rate:
              $ref: '#/components/schemas/FulfillmentRate'
    FulfillmentRateOptions:
      type: object
      description: Pricing and eligibility attributes; never used for matching
      properties:
        dimFactor:
          type: number
          format: float
          description: Dimensional weight divisor (e.g. 139, 166); billable = max(actual, cubic inches / dimFactor)
        maxLength:
          type: number
          format: float
          description: Hard cap on the longest package side (in); packages over it are refused
        maxLengthPlusGirth:
          type: number
          format: float
          description: Hard cap on length + girth (in); packages over it are refused
        oversizeLength:
          type: number
          format: float
          description: Length threshold (in) above which an oversize fee is likely; flags the option, never refuses
    FulfillmentRatePickup:
      type: object
      description: Carrier pickup schedule for this lane; omitted means always open
      properties:
        cutoffHourUtc:
          type: number
          format: float
          description: Latest UTC hour a hand-over still makes that day's pickup
        days:
          type: array
          items:
            type: string
            enum:
              - mon
              - tue
              - wed
              - thu
              - fri
              - sat
              - sun
          description: Weekdays the carrier collects
    FulfillmentRatePrice:
      type: object
      required:
        - p50
      properties:
        p50:
          type: number
          format: float
          description: The per-package price (median for observed rates)
        basis:
          type: string
          description: |
            `allIn` - surcharges included; `baseTariff` - contracted base, surcharges apply separately. Defaults to `allIn`
          enum:
            - allIn
            - baseTariff
        p90:
          type: number
          format: float
          description: Pessimistic price; defaults to `p50`
    FulfillmentRateSource:
      type: string
      description: |
        Where the rate came from. `manual` rates take absolute precedence, then more specific rates win; `backfill` beats `card` on ties
      enum:
        - card
        - backfill
        - manual
    FulfillmentRateStatus:
      type: string
      description: Fulfillment rate status
      enum:
        - active
        - disabled
    FulfillmentRateSurcharge:
      type: object
      required:
        - name
        - level
        - apply
        - value
      properties:
        apply:
          type: string
          description: How the value applies
          enum:
            - amount
            - percent
        level:
          type: string
          description: What the surcharge attaches to
          enum:
            - package
            - shipment
        name:
          type: string
          description: Surcharge name (e.g. `fuel`, `residential`, `additional_handling`)
        value:
          type: number
          format: float
          description: Dollar amount, or fraction for percent
        base:
          type: string
          description: For percent surcharges, what the percentage multiplies
        condition:
          type: object
          description: Optional condition evaluated at lookup time (e.g. residential delivery)
    FulfillmentRateTransit:
      type: object
      description: This rate's transit claim; omit when the rate makes none
      properties:
        basis:
          type: string
          description: How the transit claim is grounded
          enum:
            - promise
            - observed
            - nominal
            - unknown
        p50Days:
          type: integer
          description: Median transit business days
        p90Days:
          type: integer
          description: Pessimistic transit business days (deadline checks use this)
    FulfillmentRateUpdateRequest:
      allOf:
        - type: object
          properties:
            status:
              $ref: '#/components/schemas/FulfillmentRateStatus'
        - $ref: '#/components/schemas/FulfillmentRateBase'
      xml:
        name: request
    FulfillmentRateWeight:
      type: object
      description: |
        The weight rung this rate prices, `(min, max]` in lb. Omitted entirely means the rate prices any weight
      properties:
        basis:
          type: string
          description: |
            Which weight the rung brackets. `billable` - dimensional weight applies via `options.dimFactor`; `actual` - scale weight of observed shipments; `any` - prices the scale weight as-is
          enum:
            - billable
            - actual
            - any
        max:
          type: number
          format: float
          description: Rung ceiling, inclusive (lb); 9999 means unbounded
        min:
          type: number
          format: float
          description: Rung floor, exclusive (lb)
    FulfillmentRatesCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            fulfillment_rates:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentRateCreateResult'
    FulfillmentRatesCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/FulfillmentRateCreateData'
      xml:
        name: request
        wrapped: true
    FulfillmentRatesCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            fulfillment_rates:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentRateCreateResult'
    FulfillmentRatesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/FulfillmentRatesListFilter'
    FulfillmentRatesListFilter:
      allOf:
        - type: object
          description: Fulfillment rates filter
          properties:
            country:
              type: array
              items:
                type: string
              description: Select by destination country list
            locationId:
              type: array
              items:
                type: string
              description: Select by locationId list
            rateId:
              type: array
              items:
                type: string
              description: Select by rateId list
            service:
              type: array
              items:
                type: string
              description: Select by carrier service list
            source:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentRateSource'
              description: Select by rate source list
            status:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentRateStatus'
              description: Select by status list
        - $ref: '#/components/schemas/BaseFilter'
    FulfillmentRatesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/FulfillmentRatesListFilter'
            fulfillment_rates:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentRate'
            pagination:
              $ref: '#/components/schemas/Pagination'
    FulfillmentRatesLookupAlternative:
      type: object
      properties:
        cost:
          type: number
          format: float
          description: What the rejected packing would have cost
        deltaUsd:
          type: number
          format: float
          description: Cost difference vs the chosen packing (positive = dearer)
        k:
          type: integer
          description: Package count of the rejected packing
        strategy:
          type: string
          description: The rejected packing strategy
    FulfillmentRatesLookupAssumption:
      type: object
      properties:
        effect:
          type: string
          description: What the assumption does to the answer
        field:
          type: string
          description: The omitted request field
        policy:
          type: string
          description: The assumption policy applied
    FulfillmentRatesLookupCoverage:
      type: object
      properties:
        covered:
          type: integer
          description: Lines carried by the returned options
        lines:
          type: integer
          description: Total request lines
        uncovered:
          type: array
          items:
            type: integer
          description: Zero-based indexes of lines no returned option carries
    FulfillmentRatesLookupDestination:
      type: object
      required:
        - zipCodeOrPostalCode
      properties:
        zipCodeOrPostalCode:
          type: string
          description: Destination ZIP code
        country:
          type: string
          default: US
          description: Destination country (US only for now)
    FulfillmentRatesLookupError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            errors:
              type: array
              items:
                type: string
              description: Input contract violations
    FulfillmentRatesLookupLeg:
      type: object
      description: One location's part of a split option
      properties:
        cost:
          type: number
          format: float
          description: Leg total incl. this location's handling fees
        costP90:
          type: number
          format: float
          description: Pessimistic leg total
        coveredLines:
          type: array
          items:
            type: integer
          description: Zero-based indexes of request lines this leg carries
        locationId:
          type: string
          description: Shipping location
        packages:
          type: array
          items:
            $ref: '#/components/schemas/FulfillmentRatesLookupPackage'
          description: The suggested packing for this leg
        packing:
          $ref: '#/components/schemas/FulfillmentRatesLookupPacking'
        service:
          type: string
          description: Carrier service
        transit:
          $ref: '#/components/schemas/FulfillmentRatesLookupTransit'
    FulfillmentRatesLookupLineItem:
      type: object
      required:
        - sku
        - quantity
      description: |
        An order line. Each line must carry a weight or dimensions (or both) - weight enables pricing, dimensions enable the packing proof
      properties:
        quantity:
          type: integer
          minimum: 1
          description: Units of this SKU
        sku:
          type: string
          description: Product SKU (identifier only; never used for catalog lookups)
        dimensionsUnit:
          type: string
          description: Dimensions UOM
          enum:
            - cm
            - in
            - ft
        height:
          type: number
          format: float
          description: Unit height
        length:
          type: number
          format: float
          description: Unit length
        options:
          type: array
          items:
            type: string
          description: Product flags (e.g. `SIOC` - ships in own container)
        weight:
          type: number
          format: float
          description: Unit weight
        weightUnit:
          type: string
          description: Weight UOM
          enum:
            - lb
            - oz
            - kg
            - g
        width:
          type: number
          format: float
          description: Unit width
    FulfillmentRatesLookupOptimality:
      type: object
      properties:
        boundUsd:
          type: number
          format: float
          description: The proven lower bound the plan was checked against
        gapUsd:
          type: number
          format: float
          description: For `best_found` - the true optimum can be at most this much cheaper
        label:
          type: string
          description: |
            `certified` - provably the cheapest plan on this lane given stored data; `best_found` - honest answer with a proven gap
          enum:
            - certified
            - best_found
        note:
          type: string
          description: Why the label is not `certified`, when applicable
    FulfillmentRatesLookupOption:
      type: object
      properties:
        alternatives:
          type: array
          items:
            $ref: '#/components/schemas/FulfillmentRatesLookupAlternative'
          description: Packings considered and rejected, with cost deltas
        cost:
          type: number
          format: float
          description: Plan total - package rates plus handling fees
        costP90:
          type: number
          format: float
          description: Pessimistic plan total (`maxCost` gates on this)
        coveredLines:
          type: array
          items:
            type: integer
          description: Zero-based indexes of request lines this option carries
        flags:
          type: array
          items:
            type: string
          description: |
            Caveats on the option (e.g. `assumed_cube`, `oversize_fee_risk`, `no_box_catalog`)
        kind:
          type: string
          description: |
            `single` - one location and service; `split` - a cross-location composition (only when no single probed location covers the order)
          enum:
            - single
            - split
        legs:
          type: array
          items:
            $ref: '#/components/schemas/FulfillmentRatesLookupLeg'
          description: Per-location legs (split options)
        locationId:
          type: string
          description: Shipping location (single options)
        locations:
          type: array
          items:
            type: string
          description: Locations involved (split options)
        optimality:
          $ref: '#/components/schemas/FulfillmentRatesLookupOptimality'
        packages:
          type: array
          items:
            $ref: '#/components/schemas/FulfillmentRatesLookupPackage'
          description: The suggested packing, one entry per box
        packing:
          $ref: '#/components/schemas/FulfillmentRatesLookupPacking'
        service:
          type: string
          description: Carrier service (single options)
        transit:
          $ref: '#/components/schemas/FulfillmentRatesLookupTransit'
    FulfillmentRatesLookupPackage:
      type: object
      properties:
        billable:
          type: number
          format: float
          description: Billed weight (lb) - actual or dimensional, whichever the pricing rate bills
        boxId:
          type: string
          description: Box from the location's catalog (`SIOC` - the item's own container, `VIRT` - assumed box)
        height:
          type: number
          format: float
          description: Box height (in)
        items:
          type: array
          items:
            $ref: '#/components/schemas/FulfillmentRatesLookupPackageItem'
          description: What goes into this box
        length:
          type: number
          format: float
          description: Box length (in)
        observations:
          type: integer
          description: Observed fulfillments behind the pricing rate
        price:
          type: number
          format: float
          description: The package rate
        proof:
          type: string
          description: Packing proof level for this package
          enum:
            - proven
            - assumed
        rateId:
          type: string
          description: The stored fulfillment rate that priced this package
        source:
          $ref: '#/components/schemas/FulfillmentRateSource'
        weight:
          type: number
          format: float
          description: Actual weight incl. box tare (lb); null when a line carried no weight
        width:
          type: number
          format: float
          description: Box width (in)
    FulfillmentRatesLookupPackageItem:
      type: object
      properties:
        quantity:
          type: integer
          description: Units of this SKU in the box
        sku:
          type: string
          description: Product SKU
    FulfillmentRatesLookupPacking:
      type: object
      properties:
        k:
          type: integer
          description: Package count
        proof:
          type: string
          description: |
            `proven` - every item measured, packing verified against the location's real boxes; `assumed` - some dimensions were assumed, the quoted price is a ceiling
          enum:
            - proven
            - assumed
        strategy:
          type: string
          description: |
            How the packing was chosen. `fewest` - fewest boxes; `split2` - a two-parcel split that priced cheaper; `set-cover` - cross-location composition
    FulfillmentRatesLookupRefusal:
      type: object
      properties:
        detail:
          type: string
          description: Human-readable specifics, incl. the numbers behind the refusal
        locationId:
          type: string
          description: Location of the refused lane
        reason:
          type: string
          description: |
            Why the lane was set aside - one or more of `no_rate`, `cannot_pack`, `exceeds_dim_cap`, `weight_unknown`, `weight_basis_incompatible`, `misses_deadline`, `transit_unknown`, `over_max_cost`
        service:
          type: string
          description: Carrier service of the refused lane
    FulfillmentRatesLookupRequest:
      type: object
      required:
        - locationId
        - shippingAddress
        - lineItems
      properties:
        lineItems:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/FulfillmentRatesLookupLineItem'
          description: The order lines to be fulfilled
        locationId:
          type: array
          minItems: 1
          items:
            type: string
          description: |
            Locations to probe. The caller asserts every listed location can stock the whole order. Must not be empty
        shippingAddress:
          $ref: '#/components/schemas/FulfillmentRatesLookupDestination'
        deliverBy:
          type: string
          format: date-time
          description: |
            Optional hard deadline. Options whose pessimistic arrival date is later are refused with `misses_deadline`
        expectedSubmission:
          type: string
          format: date-time
          description: When the shipment is expected to be handed over; defaults to now
        limit:
          type: integer
          default: 5
          description: Maximum number of options to return
        maxCost:
          type: number
          format: float
          description: |
            Optional hard cost cap. Options whose pessimistic cost exceeds it are refused with `over_max_cost`
        maxTransitDays:
          type: integer
          description: Optional hard transit limit in business days (pessimistic)
        rankBy:
          type: string
          default: cost
          enum:
            - cost
            - speed
          description: |
            Primary ranking factor. The secondary factor re-orders options within ~5% of the primary
      xml:
        name: request
    FulfillmentRatesLookupResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            assumptions:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentRatesLookupAssumption'
              description: Every omission in the request, surfaced
            coverage:
              $ref: '#/components/schemas/FulfillmentRatesLookupCoverage'
            options:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentRatesLookupOption'
              description: Ranked fulfillment options
            probed:
              type: array
              items:
                type: string
              description: Locations that were examined
            refusals:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentRatesLookupRefusal'
              description: Lanes set aside, each with its reason
            status:
              type: string
              description: |
                `ok` - full coverage exists; `partial` - only some lines are shippable; `insufficient_data` - no option can be stood behind (see refusals for reasons)
              enum:
                - ok
                - partial
                - insufficient_data
            totals:
              type: object
              description: Per-request diagnostics; observability, not contract
    FulfillmentRatesLookupTransit:
      type: object
      properties:
        basis:
          type: string
          description: How the transit claim is grounded
          enum:
            - promise
            - observed
            - nominal
            - unknown
        edd:
          type: string
          format: date-time
          description: Estimated delivery date (ship date + median transit)
        latest:
          type: string
          format: date-time
          description: Pessimistic delivery date (deadline checks use this)
        missedCutoff:
          type: boolean
          description: Whether the submission missed the pickup cutoff for same-day hand-over
        p50Days:
          type: integer
          description: Median transit business days
        p90Days:
          type: integer
          description: Pessimistic transit business days
        shipDate:
          type: string
          format: date-time
          description: Computed hand-over date after pickup cutoff and calendar roll
    FulfillmentSyncRequest:
      type: object
      properties:
        syncAE:
          type: boolean
          description: Reset autoEngUpdateStatus
    FulfillmentType:
      type: string
      enum:
        - accepted
        - rejected
        - voided
    FulfillmentUpdateData:
      allOf:
        - type: object
          xml:
            name: fulfillment
          properties:
            autoEngUpdateStatus:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
            lineItems:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentItem'
        - $ref: '#/components/schemas/FulfillmentUpdateGroupProps'
        - $ref: '#/components/schemas/FulfillmentCreateBaseData'
    FulfillmentUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            fulfillment:
              $ref: '#/components/schemas/FulfillmentUpdateData'
    FulfillmentUpdateGroupProps:
      type: object
      properties:
        groupComplete:
          type: boolean
          nullable: true
        groupId:
          type: string
          nullable: true
        groupItem:
          type: number
          nullable: true
        groupLength:
          type: number
          nullable: true
    FulfillmentUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            fulfillment:
              $ref: '#/components/schemas/Fulfillment'
    FulfillmentsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            exception:
              $ref: '#/components/schemas/FulfillmentFailureException'
            fulfillments:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentCreateResult'
    FulfillmentsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/FulfillmentCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    FulfillmentsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            fulfillments:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentCreateResult'
    FulfillmentsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/FulfillmentsDeleteFilter'
    FulfillmentsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/FulfillmentsFilter'
        - type: object
          description: Delete Fulfillments Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Fulfillments assigned these orgModes
      description: Fulfillments Filter for Multiple Delete query
    FulfillmentsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted fulfillments
            filters:
              $ref: '#/components/schemas/FulfillmentsDeleteFilter'
            fulfillments:
              type: array
              items:
                $ref: '#/components/schemas/Fulfillment'
            pagination:
              $ref: '#/components/schemas/Pagination'
    FulfillmentsFilter:
      allOf:
        - type: object
          description: Fulfillments Filter
          properties:
            acknowledgedBy:
              type: array
              items:
                type: string
              description: Integrations acknowledged fulfillment
            autoEngUpdateStatus:
              type: array
              items:
                $ref: '#/components/schemas/AutoEngUpdateStatus'
            deleted:
              type: boolean
              description: Soft deleted fulfillments
            extFulfillmentId:
              type: array
              items:
                type: string
              description: Fulfillments by list of extFulfillmentId
            extOrderId:
              type: array
              items:
                type: string
              description: Fulfillments by list of extOrderId
            extShipmentId:
              type: array
              items:
                type: string
              description: Fulfillments by list of extShipmentId
            fulfillmentId:
              type: array
              items:
                type: string
              description: Fulfillments by list of fulfillmentId
            fulfillmentType:
              type: array
              items:
                $ref: '#/components/schemas/FulfillmentType'
              description: Fulfillments by list of fulfillment types
            groupId:
              type: array
              items:
                type: string
              description: Fulfillments by list of groupId
            integration:
              type: array
              items:
                type: string
              description: Fulfillments by list of integrationId
            locationId:
              type: array
              items:
                type: string
              description: Fulfillments by list of locationId
            orderId:
              type: array
              items:
                type: string
              description: Fulfillments by list of orderId
            orderIntegration:
              type: array
              items:
                type: string
              description: Fulfillments by list of order integrationId
            orderIntegrationAcknowledged:
              type: boolean
              description: Fulfillments by acknowledgement from order integrationId
            orderSource:
              type: array
              items:
                type: string
              description: Fulfillments by list of order sources
            priority:
              type: array
              items:
                $ref: '#/components/schemas/Priority'
            shipmentId:
              type: array
              items:
                type: string
              description: Fulfillments by list of shipmentId
            tags:
              $ref: '#/components/schemas/EntityTags'
        - $ref: '#/components/schemas/BaseFilter'
    FulfillmentsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/FulfillmentsListFilter'
    FulfillmentsListFilter:
      allOf:
        - $ref: '#/components/schemas/FulfillmentsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          properties:
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Fulfillments by list of categories of the fulfillment related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Fulfillments by list of types of the fulfillment related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            hasSourceDoc:
              type: boolean
              description: Fulfillments containing a source document
      description: Fulfillments Filter for List queries
    FulfillmentsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - fulfillments
          properties:
            fulfillments:
              type: array
              items:
                $ref: '#/components/schemas/Fulfillment'
            filters:
              $ref: '#/components/schemas/FulfillmentsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    Function:
      allOf:
        - type: object
          properties:
            functionId:
              type: string
              description: Function ID
        - $ref: '#/components/schemas/FunctionCreateData'
        - $ref: '#/components/schemas/CoreObject'
    FunctionCreateData:
      type: object
      required:
        - name
        - body
      properties:
        body:
          type: string
          description: Body of javascript function. The function signature - `function(input):any`. Body example - `"return input.toUpperCase()"`.
        name:
          type: string
          description: Name of the function
        isPublic:
          type: boolean
          description: Public access indicator (default - false)
    FunctionCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        function:
          $ref: '#/components/schemas/Function'
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    FunctionFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    FunctionFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            function:
              $ref: '#/components/schemas/Function'
    FunctionInvokeData:
      type: object
      properties:
        input:
          type: object
          description: The conversion input (- any value)
    FunctionInvokeError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            input:
              type: object
              description: The conversion input (- any value)
    FunctionInvokeRequest:
      allOf:
        - $ref: '#/components/schemas/FunctionInvokeData'
      xml:
        name: request
    FunctionInvokeResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            input:
              type: object
              description: The conversion input (- any value)
            value:
              type: object
              description: The conversion result (- any value)
    FunctionListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/FunctionListFilter'
    FunctionListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Functions Filter
          properties:
            body:
              type: string
              description: Select by `body` value or regexp of the `body` (regexp format - `"/.../"` or `"/.../i"`)
            functionId:
              type: array
              items:
                type: string
              description: Select by `functionId` list
            isPublic:
              type: boolean
              description: The `true` selects public functions only, `false` - non-public ones. By default, any of them.
            name:
              type: array
              items:
                type: string
              description: Select by `name` list
    FunctionListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/FunctionListFilter'
            functions:
              type: array
              items:
                $ref: '#/components/schemas/Function'
            pagination:
              $ref: '#/components/schemas/Pagination'
    FunctionUpdateData:
      type: object
      properties:
        body:
          type: string
          description: Body of javascript function. The function signature - `function(input):any`. Body example - `"return input.toUpperCase()"`.
        name:
          type: string
          description: Name of the function
    FunctionUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            function:
              $ref: '#/components/schemas/FunctionUpdateData'
    FunctionUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/FunctionUpdateData'
      xml:
        name: request
    FunctionUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            function:
              $ref: '#/components/schemas/Function'
    FunctionsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            functions:
              type: array
              items:
                $ref: '#/components/schemas/FunctionCreateResult'
    FunctionsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/FunctionCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 100
    FunctionsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            functions:
              type: array
              items:
                $ref: '#/components/schemas/FunctionCreateResult'
    GetRatesBody:
      type: object
      required:
        - userId
        - cartons
      properties:
        cartons:
          type: array
          description: |
            Package details. Each carton is rated independently and returns its own EasyPost shipment id and rate list. No extLabelId is required — nothing is purchased at this step.
          items:
            type: object
            properties:
              weight:
                type: object
                properties:
                  value:
                    type: number
                  unit:
                    type: string
                    enum:
                      - OUNCE
                      - POUND
                      - GRAM
                      - KILOGRAM
              dimensions:
                type: object
                properties:
                  length:
                    type: number
                  width:
                    type: number
                  height:
                    type: number
                  unit:
                    type: string
                    enum:
                      - INCH
                      - CENTIMETER
        userId:
          type: string
          description: Associate user ID requesting the rates
        carrierCode:
          type: string
          description: Optional carrier filter hint passed to the connector.
        connectorName:
          type: string
          description: |
            Connector name to use for rating. Default: connector-shipping-easypost.
        labelFormat:
          type: string
          enum:
            - PDF
            - ZPL
            - PNG
          default: PDF
          description: |
            Label format the shipment is created with. Set so a later buy of the quoted shipment produces a label in this format (ZPL must be fixed at rate time).
        labelIntegrationId:
          type: string
          description: |
            Integration ID of the label connector (e.g., EasyPost). If omitted, auto-discovers by connectorName for the org.
        serviceCode:
          type: string
          description: Optional service level filter hint passed to the connector.
    GetRatesResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            cartons:
              type: array
              description: One entry per requested carton, with its rate options.
              items:
                type: object
                properties:
                  cartonIndex:
                    type: integer
                  extShipmentId:
                    type: string
                    description: |
                      EasyPost shipment id (shp_...) to pass back to /request-labels with the chosen rateId.
                  rates:
                    type: array
                    description: |
                      Rate options for this carton. Fields mirror the connector's normalized rate (EasyPost rate object).
                    items:
                      type: object
                      properties:
                        rateId:
                          type: string
                          description: Pass back to /request-labels as the carton's rateId.
                        carrier:
                          type: string
                        service:
                          type: string
                        serviceLevel:
                          type: string
                          description: Alias of service, for display.
                        cost:
                          type: string
                          description: EasyPost rate the merchant would pay.
                        currency:
                          type: string
                        retailRate:
                          type: string
                        listRate:
                          type: string
                        deliveryDays:
                          type: integer
                        deliveryDate:
                          type: string
                        deliveryGuaranteed:
                          type: boolean
                        carrierAccountId:
                          type: string
    HoldNextStatus:
      type: string
      description: |
        Status a shipment moves to when a hold is released. Shipment holds are always
        timed, so this is the target status applied when `holdUntil` is reached.
      enum:
        - reviewRequired
        - readyForFulfillment
    HoldType:
      type: string
      description: |
        Type of hold applied to an order. `TIMED` releases when `holdUntil` is reached;
        `CONDITIONAL` releases early once the condition on the referenced automation rule
        (`holdConditionAutomationRuleId`) is met, or falls back to `holdNextStatus` at `holdUntil`.
      enum:
        - TIMED
        - CONDITIONAL
    HoldingLocations:
      type: object
      description: Temporal holding locations set during pick-pack by store associate
      nullable: true
      properties:
        shipments:
          type: object
          nullable: true
          description: |
            Map of shipmentId to holding location string.
            Additive on update: entries in the request are added or overwrite existing entries,
            entries already on the wave but not in the request are preserved.
            Cannot be cleared via this endpoint - omit the field to preserve.
            Passing null is rejected with a 400 (use omission to preserve existing entries).
            Only shipmentIds already assigned to the wave are accepted.
          additionalProperties:
            type: string
        wave:
          type: string
          nullable: true
          description: |
            Temporal holding location for the wave as a whole.
            Omit to preserve existing value; pass null to clear.
    HolidayOverride:
      type: object
      required:
        - type
        - action
      description: |
        Suspends scheduled wave releases for a single date or an inclusive date range. The `type` field selects one of:
          - specific_date: applies to one calendar day; requires `date`
          - date_range:    applies inclusively to a range; requires `startDate` and `endDate` with startDate <= endDate
      properties:
        action:
          type: string
          enum:
            - no_waves
          description: What to do on covered dates (currently only no_waves)
        type:
          type: string
          enum:
            - specific_date
            - date_range
          description: Override variant
        date:
          type: string
          format: date
          description: Calendar date (YYYY-MM-DD) in the store's local timezone. Applies to specific_date only
        endDate:
          type: string
          format: date
          description: Inclusive end date (YYYY-MM-DD); must be >= startDate. Applies to date_range only
        overrideId:
          type: string
          description: Server-assigned identifier
        startDate:
          type: string
          format: date
          description: Inclusive start date (YYYY-MM-DD). Applies to date_range only
    Identity:
      type: object
      properties:
        email:
          type: string
          description: Lowercase email address
          example: joe@pipe17.com
        identityId:
          type: string
          description: Unique identifier for the identity (16-char hex)
          example: af797d7084b92446
        subs:
          type: array
          description: Array of Auth0 sub claims linked to this identity
          items:
            type: string
          example:
            - auth0|af797d7084b92446
            - google-oauth2|108234567890123456789
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the identity was created
        ssoConnectionId:
          type: string
          nullable: true
          description: SSO connection ID (null for trusted identities, 16-char hex for SSO)
          example: 4b5c6d7e8f9a0b1c
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when the identity was last updated
      required:
        - identityId
        - subs
        - email
    IdentityCreateError:
      type: object
      properties:
        code:
          type: integer
        errors:
          type: array
          items:
            type: string
        message:
          type: string
        success:
          type: boolean
    IdentityCreateRequest:
      type: object
      properties:
        email:
          type: string
          description: Lowercase email address
        ssoConnectionId:
          type: string
          nullable: true
          description: SSO connection ID (null for trusted identities)
        subs:
          type: array
          description: Array of Auth0 sub claims (can be empty for pre-provisioned identities)
          items:
            type: string
      required:
        - email
    IdentityCreateResponse:
      type: object
      properties:
        code:
          type: integer
        identity:
          $ref: '#/components/schemas/Identity'
        message:
          type: string
        success:
          type: boolean
    IdentityDeleteError:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        success:
          type: boolean
    IdentityDeleteResponse:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        success:
          type: boolean
    IdentityListError:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        success:
          type: boolean
    IdentityListFilterIdentityId:
      type: array
      items:
        type: string
    IdentityListResponse:
      type: object
      properties:
        code:
          type: integer
        identities:
          type: array
          items:
            $ref: '#/components/schemas/Identity'
        pagination:
          $ref: '#/components/schemas/Pagination'
        success:
          type: boolean
    IdentityRetrieveError:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        success:
          type: boolean
    IdentityRetrieveResponse:
      type: object
      properties:
        code:
          type: integer
        identity:
          $ref: '#/components/schemas/Identity'
        success:
          type: boolean
    IdentityUpdateError:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        success:
          type: boolean
    IdentityUpdateRequest:
      type: object
      properties:
        email:
          type: string
        ssoConnectionId:
          type: string
          nullable: true
        subs:
          type: array
          items:
            type: string
    IdentityUpdateResponse:
      type: object
      properties:
        code:
          type: integer
        identity:
          $ref: '#/components/schemas/Identity'
        message:
          type: string
        success:
          type: boolean
    Integration:
      allOf:
        - type: object
          properties:
            actions:
              type: array
              items:
                $ref: '#/components/schemas/IntegrationActionSimple'
              description: List of integration actions
            apikey:
              type: string
              description: Integration api Key
            capability:
              type: array
              items:
                $ref: '#/components/schemas/IntegrationCapability'
            linkedConnectorId:
              type: string
            linkedConnectorName:
              type: string
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/IntegrationChangelogEntry'
        - $ref: '#/components/schemas/IntegrationBase'
    IntegrationAction:
      allOf:
        - type: object
          properties:
            actionId:
              type: string
              description: Integration action ID
            progress:
              type: number
              description: Percent action complete
            status:
              $ref: '#/components/schemas/IntegrationActionStatus'
        - $ref: '#/components/schemas/IntegrationActionCreateData'
        - $ref: '#/components/schemas/CoreObject'
    IntegrationActionCreateData:
      type: object
      properties:
        actionType:
          type: string
          description: Action Type (matches to what is included in connector manifest)
        integrationId:
          type: string
          description: Integration ID
        actionName:
          type: string
          description: Action Name - label for this action invocation
        actionParams:
          type: array
          items:
            $ref: '#/components/schemas/IntegrationActionParam'
          description: Action parameters (array of parameters, collected for this action from user)
        internal:
          $ref: '#/components/schemas/InternalInfo'
      required:
        - actionType
        - integrationId
    IntegrationActionCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    IntegrationActionCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            action:
              $ref: '#/components/schemas/IntegrationAction'
    IntegrationActionFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    IntegrationActionFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            action:
              $ref: '#/components/schemas/IntegrationAction'
    IntegrationActionParam:
      type: object
      properties:
        path:
          type: string
          description: Action param Name
        value:
          type: object
          description: Action param Value
    IntegrationActionSimple:
      type: object
      properties:
        actionName:
          type: string
          nullable: true
          description: Action label
        actionType:
          type: string
          description: Action type (connector specific)
    IntegrationActionStatus:
      type: string
      enum:
        - submitted
        - processing
        - completed
        - canceled
        - failed
      description: Integration action status
    IntegrationActionUpdateData:
      type: object
      properties:
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        progress:
          type: number
          description: Action progress (0-100)
        status:
          $ref: '#/components/schemas/IntegrationActionStatus'
    IntegrationActionUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            action:
              $ref: '#/components/schemas/IntegrationActionUpdateData'
    IntegrationActionUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/IntegrationActionUpdateData'
      xml:
        name: request
    IntegrationActionUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            action:
              $ref: '#/components/schemas/IntegrationAction'
    IntegrationActionsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/IntegrationActionsDeleteFilter'
    IntegrationActionsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/IntegrationActionsFilter'
    IntegrationActionsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            actions:
              type: array
              items:
                $ref: '#/components/schemas/IntegrationAction'
            deleted:
              type: integer
              description: Number of deleted actions
            filters:
              $ref: '#/components/schemas/IntegrationActionsDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    IntegrationActionsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: IntegrationActions Filter
          properties:
            actionId:
              type: array
              items:
                type: string
              description: Integration actions by list of actionId
            actionType:
              type: array
              items:
                type: string
              description: Integration actions by list of action types
            deleted:
              type: boolean
              description: Soft deleted actions
            integrationId:
              type: array
              items:
                type: string
              description: Integration actions by list of integrationId
            status:
              type: array
              items:
                type: string
              description: Integration actions by list of action statuses
    IntegrationActionsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/IntegrationActionsListFilter'
    IntegrationActionsListFilter:
      allOf:
        - $ref: '#/components/schemas/IntegrationActionsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List IntegrationActions Filter
    IntegrationActionsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            actions:
              type: array
              items:
                $ref: '#/components/schemas/IntegrationAction'
            filters:
              $ref: '#/components/schemas/IntegrationActionsListFilter'
    IntegrationBase:
      allOf:
        - type: object
          properties:
            capability:
              type: array
              items:
                $ref: '#/components/schemas/IntegrationCapability'
            errorText:
              type: string
              description: Error message
            extIntegrationId:
              type: string
              description: Unique integration identifier as defined by Connector logic
            integrationId:
              type: string
              description: Integration Id
            linkedConnectorId:
              type: string
            linkedConnectorName:
              type: string
            status:
              $ref: '#/components/schemas/IntegrationStatus'
            variables:
              type: object
              additionalProperties:
                $ref: '#/components/schemas/IntegrationVariable'
            version:
              type: string
              description: Integration version
        - $ref: '#/components/schemas/IntegrationCreateData'
        - $ref: '#/components/schemas/CoreObject'
    IntegrationCapability:
      type: string
      description: Integration capability
      enum:
        - arrivals:in
        - arrivals:out
        - customers:in
        - customers:out
        - contacts:in
        - contacts:out
        - fulfillments:in
        - fulfillments:out
        - inventory:in
        - inventory:out
        - labels:in
        - labels:out
        - locations:in
        - locations:out
        - orders:in
        - orders:out
        - products:in
        - products:out
        - purchases:in
        - purchases:out
        - receipts:in
        - receipts:out
        - refunds:in
        - refunds:out
        - returns:in
        - returns:out
        - shipments:in
        - shipments:out
        - suppliers:in
        - suppliers:out
        - transfers:in
        - transfers:out
        - shipping_methods
        - sku_mapping
        - shipments_cancel_in
        - shipments_cancel_out
        - events_outbound_replay
        - events_outbound_batch
        - inventory_requires_products
        - orders_cancel_in
        - orders_cancel_out
        - inventory_incremental
        - locations_multiple
        - orders_multiple_destinations
    IntegrationChangelogEntry:
      allOf:
        - type: object
          properties:
            connectorId:
              type: string
              description: ID of the changed integration's connector
            integration:
              type: string
              description: ID of the changed integration
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    IntegrationConnection:
      type: object
      description: 3rd party's credentials
      properties:
        fields:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/IntegrationConnectionField'
          description: correspond to ui fields
    IntegrationConnectionField:
      type: object
      properties:
        path:
          type: string
          description: Connection Option Name
        value:
          type: object
          nullable: true
          description: Connection Option Value
    IntegrationCreateData:
      type: object
      required:
        - integrationName
      properties:
        integrationName:
          type: string
          description: Integration Name
        connection:
          $ref: '#/components/schemas/IntegrationConnection'
        connectorId:
          type: string
          description: Connector ID (either Name or ID required)
        connectorName:
          type: string
          description: Connector Name (either Name or ID required)
        demoMode:
          type: boolean
          default: false
          description: Indicates whether the integration is in demo mode (! demo integrations should be allowed in the organization to set the true)
        entities:
          type: array
          items:
            $ref: '#/components/schemas/IntegrationEntity'
        environment:
          $ref: '#/components/schemas/Env'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        privacyPolicy:
          type: array
          items:
            $ref: '#/components/schemas/PrivacyPolicy'
        settings:
          $ref: '#/components/schemas/IntegrationSettings'
        skuMapping:
          type: boolean
          default: false
          description: |
            Default value of the `withSKUMapping` query parameter for requests made by this integration. Set it to translate between channel and canonical SKUs without passing the parameter on every call; an explicit `withSKUMapping` on a request still wins.
        tags:
          $ref: '#/components/schemas/EntityTags'
    IntegrationCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            integration:
              $ref: '#/components/schemas/IntegrationCreateData'
    IntegrationCreateRequest:
      allOf:
        - $ref: '#/components/schemas/IntegrationCreateData'
      xml:
        name: request
    IntegrationCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            integration:
              $ref: '#/components/schemas/Integration'
    IntegrationEntity:
      type: object
      description: Mapping or Routing Entity
      properties:
        direction:
          $ref: '#/components/schemas/Direction'
        mappingUuid:
          type: string
          description: Mapping Id
        name:
          $ref: '#/components/schemas/EntityName'
        restrictions:
          nullable: true
          $ref: '#/components/schemas/EntityRestrictionsValueList'
        routingUuid:
          description: Routing Id
          type: string
    IntegrationFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    IntegrationFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            integration:
              $ref: '#/components/schemas/Integration'
    IntegrationSettings:
      type: object
      description: Connector specific
      properties:
        fields:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/IntegrationSettingsField'
          description: correspond to ui fields
    IntegrationSettingsField:
      type: object
      properties:
        path:
          type: string
          description: Setting Option Name
        value:
          type: object
          nullable: true
          description: Setting Option Value
    IntegrationState:
      allOf:
        - type: object
          properties:
            integration:
              type: string
              description: Integration ID
        - $ref: '#/components/schemas/IntegrationStateCreateData'
        - $ref: '#/components/schemas/CoreObject'
    IntegrationStateCreateData:
      type: object
      properties:
        name:
          type: string
          description: State Name
        value:
          type: string
          description: State Value (if undefined and state exists already, then delete it)
      required:
        - name
    IntegrationStateCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            integrationState:
              $ref: '#/components/schemas/IntegrationStateCreateData'
    IntegrationStateCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            integrationState:
              $ref: '#/components/schemas/IntegrationState'
    IntegrationStateFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    IntegrationStateFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            integrationState:
              $ref: '#/components/schemas/IntegrationState'
    IntegrationStateFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Integration State Filter
    IntegrationStateListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/IntegrationStateListFilter'
    IntegrationStateListFilter:
      allOf:
        - $ref: '#/components/schemas/IntegrationStateFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Integration State Filter
    IntegrationStateListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/IntegrationStateListFilter'
            integrationStates:
              type: array
              items:
                $ref: '#/components/schemas/IntegrationState'
            pagination:
              $ref: '#/components/schemas/Pagination'
    IntegrationStatus:
      type: string
      description: Integration Status
      enum:
        - created
        - configured
        - initializing
        - connected
        - error
        - disabled
        - future
    IntegrationUpdateData:
      type: object
      properties:
        apikey:
          type: boolean
          description: Update integration api key
        connection:
          $ref: '#/components/schemas/IntegrationConnection'
        demoMode:
          type: boolean
          default: false
          nullable: true
          description: Indicates whether the integration is in demo mode (! demo integrations should be allowed in the organization to set the true)
        entities:
          type: array
          items:
            $ref: '#/components/schemas/IntegrationEntity'
        errorText:
          nullable: true
          type: string
          description: Error message
        extIntegrationId:
          type: string
          description: Unique integration identifier as defined by Connector logic
        integrationName:
          type: string
          description: Integration Name
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        privacyPolicy:
          type: array
          items:
            $ref: '#/components/schemas/PrivacyPolicy'
          nullable: true
        settings:
          $ref: '#/components/schemas/IntegrationSettings'
        skuMapping:
          type: boolean
          default: false
          nullable: true
          description: |
            Default value of the `withSKUMapping` query parameter for requests made by this integration. Set it to translate between channel and canonical SKUs without passing the parameter on every call; an explicit `withSKUMapping` on a request still wins.
        status:
          $ref: '#/components/schemas/IntegrationStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
        variables:
          type: object
          nullable: true
          additionalProperties:
            $ref: '#/components/schemas/IntegrationVariable'
    IntegrationUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            integration:
              $ref: '#/components/schemas/IntegrationUpdateData'
    IntegrationUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/IntegrationUpdateData'
      xml:
        name: request
    IntegrationUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            integration:
              $ref: '#/components/schemas/Integration'
    IntegrationUpdateVariablesRequest:
      type: object
      properties:
        variables:
          type: object
          nullable: true
          additionalProperties:
            $ref: '#/components/schemas/IntegrationVariable'
      xml:
        name: request
    IntegrationUpgradeRequest:
      type: object
      properties:
        version:
          type: string
          description: Connector version
      xml:
        name: request
    IntegrationVariable:
      type: object
      nullable: true
      properties:
        expiry:
          type: string
          nullable: true
          format: date-time
          description: Variable Expiry
        type:
          $ref: '#/components/schemas/SettingType'
        value:
          type: object
          nullable: true
          description: Variable Value
    IntegrationVariablesError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    IntegrationVariablesResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            variables:
              type: object
              nullable: true
              additionalProperties:
                $ref: '#/components/schemas/IntegrationVariable'
    IntegrationsDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    IntegrationsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    IntegrationsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Integrations Filter
          properties:
            capability:
              type: array
              items:
                $ref: '#/components/schemas/IntegrationCapability'
            connectorId:
              type: string
              description: Retrieve integrations by connector ID
            connectorName:
              type: array
              items:
                type: string
              description: Retrieve integrations by list of connector names
            extIntegrationId:
              type: array
              items:
                type: string
              description: Retrieve by list of extIntegrationId
            integrationId:
              type: array
              items:
                type: string
              description: Retrieve by list of integrationId
            integrationName:
              type: array
              items:
                type: string
              description: Retrieve by list of integrationName
            status:
              $ref: '#/components/schemas/IntegrationStatus'
            tags:
              $ref: '#/components/schemas/EntityTags'
    IntegrationsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/IntegrationsListFilter'
    IntegrationsListFilter:
      allOf:
        - $ref: '#/components/schemas/IntegrationsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Integrations Filter
    IntegrationsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/IntegrationsListFilter'
            integrations:
              type: array
              items:
                $ref: '#/components/schemas/IntegrationBase'
            pagination:
              $ref: '#/components/schemas/Pagination'
    InternalInfo:
      type: object
      description: Internal info
      additionalProperties:
        $ref: '#/components/schemas/Any'
    Inv:
      allOf:
        - type: object
          properties:
            entityId:
              type: string
              description: Related entity ID
            entityType:
              type: string
              description: Related entity ID's type
            event:
              $ref: '#/components/schemas/EventType'
              description: Event creating this item
            integration:
              type: string
              description: Reference to integration that created an item
            inventoryId:
              type: string
              description: Inv ID
            inventoryNotTracked:
              type: boolean
              description: Disables the inventory tracking
            label:
              type: string
            locationId:
              type: string
              description: Location of item
            lots:
              type: array
              items:
                $ref: '#/components/schemas/InvLot'
            orderId:
              type: string
              description: Pipe17 internal order id that initiated this inventory change
            orderType:
              type: string
              description: Type of order that initiated this inventory change
            originalSKU:
              type: string
              description: |
                Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
            sku:
              type: string
              description: Item SKU
            type:
              type: string
              enum:
                - virtual
                - physical
              description: Inv type (undefined value indicates a physical inventory)
            user:
              type: string
              description: Pipe17 internal id of the user who makes the inventory adjustment via the portal
            vendorSKU:
              type: string
              description: Item vendor SKU
        - $ref: '#/components/schemas/InvQuantity'
        - $ref: '#/components/schemas/CoreObject'
    InvBaseQuantity:
      type: object
      required:
        - onHand
        - committed
      properties:
        committed:
          type: integer
          format: int32
          description: Number of items committed
        onHand:
          type: integer
          format: int32
          description: Number of items on hand
        available:
          type: integer
          format: int32
          description: Number of items available
        commitShip:
          type: integer
          format: int32
          description: Number of items being shipped (included in committed)
        commitXfer:
          type: integer
          format: int32
          description: Number of items being transferred out (included in committed)
        committedFuture:
          type: integer
          format: int32
          description: Number of items committed for pre-order
        damaged:
          type: integer
          format: int32
        future:
          type: integer
          format: int32
          description: Number of items that can be sold for pre-order
        hold:
          type: integer
          format: int32
        incoming:
          type: integer
          format: int32
          description: Number of incoming items in transit (maybe included in available)
        unavailable:
          type: integer
          format: int32
          description: Number of unavailable items
    InvCreateData:
      allOf:
        - type: object
          required:
            - event
            - ptype
            - sku
            - locationId
          properties:
            event:
              type: string
              description: Event creating this item
              enum:
                - ingest
                - adjust
            locationId:
              type: string
              description: Location ID of item
            ptype:
              $ref: '#/components/schemas/EventSource'
              description: Type of system that created the event
            sku:
              type: string
              description: Item SKU
            inventoryNotTracked:
              type: boolean
              description: Disables the inventory tracking (default - false)
            lotId:
              type: string
              description: Lot ID
            originalSKU:
              type: string
              description: |
                Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
            type:
              type: string
              enum:
                - virtual
                - physical
              description: Inv type
            vendorSKU:
              type: string
              description: Item vendor SKU
        - $ref: '#/components/schemas/InvBaseQuantity'
    InvCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            inventory:
              type: array
              items:
                $ref: '#/components/schemas/InvCreateResult'
    InvCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/InvCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    InvCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventory:
              type: array
              items:
                $ref: '#/components/schemas/InvCreateResult'
    InvCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        inventory:
          $ref: '#/components/schemas/Inv'
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    InvDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InvDeleteFilter'
    InvDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/InvFilter'
        - type: object
          description: Delete Inv Items Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Inv Items assigned these orgModes
    InvDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted inventory items
            filters:
              $ref: '#/components/schemas/InvDeleteFilter'
            inventory:
              type: array
              items:
                $ref: '#/components/schemas/Inv'
            pagination:
              $ref: '#/components/schemas/Pagination'
    InvFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    InvFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventory:
              $ref: '#/components/schemas/Inv'
    InvFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Inv Items Filter
          properties:
            available:
              type: integer
              description: Fetch inventory if 'available' value is equal to specified one
            entityId:
              type: array
              items:
                type: string
              description: Return inventory items related to certain event record by record id
            inventoryId:
              type: array
              items:
                type: string
              description: Inv items by list of inventoryId
            locationId:
              type: array
              items:
                type: string
              description: Fetch inventory by its location Id
            sku:
              type: array
              items:
                type: string
              description: Fetch inventory by its SKU
            sku_gt:
              type: string
              description: Fetch inventory in which SKU is lexicographically greater than the specified value
            sku_lt:
              type: string
              description: Fetch inventory in which SKU is lexicographically less than the specified value
            vendorSKU:
              type: array
              items:
                type: string
              description: Fetch inventory by its vendor SKU
    InvListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InvListFilter'
    InvListFilter:
      allOf:
        - $ref: '#/components/schemas/InvFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Inv Items Filter
          properties:
            available_gt:
              type: integer
              description: Fetch inventory if 'available' value is greater than specified one
            available_lt:
              type: integer
              description: Fetch inventory if 'available' value is less than specified one
            event:
              type: array
              items:
                $ref: '#/components/schemas/EventType'
              description: Retrieve inventory by list of events  (- allowed only with 'ledger' flag)
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Retrieve inventory by list of categories of the inventory related exceptions  (- ignored in 'totals' queries)
            exceptionType:
              type: array
              items:
                type: string
              description: Retrieve inventory by list of types of the inventory related exceptions  (- ignored in 'totals' queries)
            integration:
              type: array
              items:
                type: string
              description: Fetch inventory by integrations id list  (- ignored in 'totals' queries)
            inventoryNotTracked:
              type: boolean
              description: Fetch inventory by the inventoryNotTracked value  (- ignored in 'totals' queries)
            ledger:
              type: boolean
              description: Return inventory ledger information
            onHand:
              type: integer
              description: Fetch inventory if 'onHand' value is equal to specified one
            onHand_gt:
              type: integer
              description: Fetch inventory if 'onHand' value is greater than specified one
            onHand_lt:
              type: integer
              description: Fetch inventory if 'onHand' value is less than specified one
            requestorId:
              type: string
              description: Id of the inventory totals requestor (- used to select available locations; forcibly replaced with integration ID if the request came from an integration)
            totals:
              type: boolean
              description: Return inventory totals across all locations
            type:
              type: string
              enum:
                - virtual
                - physical
              description: '''virtual'' - fetch virtual inventory status, ''physical'' - not virtual (it is unallowable parameter when used with ''ledger'' or ''totals'' flag)'
    InvListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InvListFilter'
            inventory:
              type: array
              items:
                $ref: '#/components/schemas/Inv'
            locationId:
              type: array
              items:
                type: string
              description: Array of location IDs (- returned only with inventory totals)
            pagination:
              $ref: '#/components/schemas/Pagination'
    InvLot:
      allOf:
        - type: object
          properties:
            lotId:
              type: string
              description: Lot ID
        - $ref: '#/components/schemas/InvQuantity'
    InvQuantity:
      allOf:
        - type: object
          properties:
            availableToPromise:
              type: integer
              format: int32
              description: Number of items available to promise
            quantity:
              type: integer
              format: int32
              description: Number of items affected
        - $ref: '#/components/schemas/InvBaseQuantity'
    InvUpdateData:
      type: object
      required:
        - event
        - locationId
        - ptype
        - sku
        - quantity
      properties:
        event:
          type: string
          description: Event updating inventory
          enum:
            - ship
            - fulfill
            - xferout
            - xferfulfill
            - xferin
            - receive
            - futureShip
            - release
            - shipCancel
            - shipCancelRestock
            - futureShipCancel
            - virtualCommit
            - touch
            - POSOrder
            - custom
            - revise
            - instantTransfer
            - cycleCount
        locationId:
          type: string
          description: Location Id of item
        ptype:
          $ref: '#/components/schemas/EventSource'
          description: Type of system that created the event
        quantity:
          type: integer
          format: int32
          description: Number of items affected
        sku:
          type: string
          description: Item SKU
        entityId:
          type: string
          description: Entity id of the record which is directly related to this inventory change
        entityType:
          type: string
          description: Type of the record which is directly related to this inventory change
          enum:
            - arrivals
            - fulfillments
            - inventory
            - receipts
            - shipments
            - orders
        infinite:
          type: boolean
          description: Set if item location has \"infinite\" availability
        inventoryNotTracked:
          type: boolean
          description: Disables the inventory tracking
          nullable: true
        label:
          type: string
        lotId:
          type: string
          description: Lot ID
        orderId:
          type: string
          description: Pipe17 internal order id that initiated this inventory change
        orderType:
          type: string
          description: Type of order that initiated this inventory change
          enum:
            - sales
            - transfer
            - purchase
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        type:
          type: string
          enum:
            - virtual
            - physical
          description: Inv type
        vendorSKU:
          type: string
          description: Item vendor SKU
    InvUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            inventory:
              $ref: '#/components/schemas/InvUpdateData'
    InvUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/InvUpdateData'
      xml:
        name: request
    InvUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventory:
              $ref: '#/components/schemas/Inv'
    Inventory:
      allOf:
        - type: object
          properties:
            available:
              type: integer
              format: int32
              description: Number of items available
            availableToPromise:
              type: integer
              format: int32
              description: Number of items available to promise
            commitShip:
              type: integer
              format: int32
              description: Number of items being shipped (included in committed)
            commitXfer:
              type: integer
              format: int32
              description: Number of items being transferred out (included in committed)
            committed:
              type: integer
              format: int32
              description: Number of items committed
            committedFuture:
              type: integer
              format: int32
              description: Number of items committed for pre-order
            customFields:
              type: array
              description: Custom Fields
              items:
                $ref: '#/components/schemas/NameValue'
            damaged:
              type: integer
              format: int32
            entityId:
              type: string
              description: Related entity ID
            entityType:
              type: string
              description: Related entity ID's type
            event:
              $ref: '#/components/schemas/EventType'
              description: Event creating this item
            future:
              type: integer
              format: int32
              description: Number of items that can be sold for pre-order
            groupId:
              type: string
              description: |
                Location Group ID for group-level inventory rows (set instead of `locationId`).
            hold:
              type: integer
              format: int32
            incoming:
              type: integer
              format: int32
              description: Number of incoming items in transit (maybe included in available)
            integration:
              type: string
              description: Reference to integration that created an item
            internal:
              $ref: '#/components/schemas/InternalInfo'
            inventoryId:
              type: string
              description: Inventory ID
            inventoryNotTracked:
              type: boolean
              description: Disables the inventory tracking
            label:
              type: string
            locationId:
              type: string
              description: Location of item
            onHand:
              type: integer
              format: int32
              description: Number of items on hand
            orderId:
              type: string
              description: Pipe17 internal order id that initiated this inventory change
            orderType:
              type: string
              description: Type of order that initiated this inventory change
            originalSKU:
              type: string
              description: |
                Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
            quantity:
              type: integer
              format: int32
              description: Number of items affected
            sku:
              type: string
              description: Item SKU
            tags:
              $ref: '#/components/schemas/EntityTags'
            type:
              type: string
              enum:
                - virtual
                - physical
              description: Inventory type (undefined value indicates a physical inventory)
            unavailable:
              type: integer
              format: int32
              description: Number of unavailable items
            user:
              type: string
              description: Pipe17 internal id of the user who makes the inventory adjustment via the portal
            vendorSKU:
              type: string
              description: Item vendor SKU
        - $ref: '#/components/schemas/CoreObject'
    InventoryCreateData:
      type: object
      xml:
        name: inventory
      required:
        - event
        - ptype
        - sku
        - locationId
        - onHand
        - committed
      properties:
        committed:
          type: integer
          format: int32
          description: |
            Number of items committed. Required for `ingest` and `adjust`. Optional for `assign`; when omitted it keeps its current value. `assign` never derives `committed` from the other quantities, so a supply-only sync cannot disturb demand. Must not be negative.
        event:
          type: string
          description: |
            Event creating this item. `ingest` and `adjust` submit a complete inventory level and require both `onHand` and `committed`. `assign` submits a partial level: any quantity field may be omitted, and each omitted field keeps its current value.
          enum:
            - ingest
            - adjust
            - assign
        locationId:
          type: string
          description: |
            Location ID of item. Either `locationId` or `groupId` is required (provide exactly one). A `locationId` submission is the normal, ledgered, queued inventory flow. Supply `groupId` instead to record a group-level inventory level.
        onHand:
          type: integer
          format: int32
          description: |
            Number of items on hand. Required for `ingest` and `adjust`. Optional for `assign`; when omitted it is resolved from the current inventory level, or derived so that `onHand = committed + available + unavailable`. Must not be negative.
        ptype:
          $ref: '#/components/schemas/EventSource'
          description: Type of system that created the event
        sku:
          type: string
          description: Item SKU
        available:
          type: integer
          format: int32
          description: |
            Number of items available. For `assign`, this is the field normally derived as `onHand - committed - unavailable`; supply it explicitly to pin it and have another quantity absorb the difference instead. It is the only quantity permitted to be negative.
        commitShip:
          type: integer
          format: int32
          description: Number of items being shipped (included in committed)
        commitXfer:
          type: integer
          format: int32
          description: Number of items being transferred out (included in committed)
        committedFuture:
          type: integer
          format: int32
          description: Number of items committed for pre-order
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        damaged:
          type: integer
          format: int32
        future:
          type: integer
          format: int32
          description: Number of items that can be sold for pre-order
        groupId:
          type: string
          description: |
            Location Group ID. Provide exactly one of `locationId` or `groupId`. A `groupId` submission stores an absolute group-level inventory level synchronously, with no ledger, no queue, and is excluded from totals unless explicitly requested.
        hold:
          type: integer
          format: int32
        incoming:
          type: integer
          format: int32
          description: Number of incoming items in transit (maybe included in available)
        internal:
          $ref: '#/components/schemas/InternalInfo'
        inventoryNotTracked:
          type: boolean
          description: Disables the inventory tracking (default - false)
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        tags:
          $ref: '#/components/schemas/EntityTags'
        type:
          type: string
          enum:
            - virtual
            - physical
          description: Inventory type
        unavailable:
          type: integer
          format: int32
          description: |
            Number of unavailable items. Under `assign` this is the quantity of last resort: when both `onHand` and `available` are supplied, it absorbs the difference between them. Must not be negative.
        vendorSKU:
          type: string
          description: Item vendor SKU
    InventoryCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            inventory:
              type: array
              items:
                $ref: '#/components/schemas/InventoryCreateResult'
    InventoryCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/InventoryCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    InventoryCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventory:
              type: array
              items:
                $ref: '#/components/schemas/InventoryCreateResult'
    InventoryCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        inventory:
          $ref: '#/components/schemas/InventoryWithDeltas'
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    InventoryDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InventoryDeleteFilter'
    InventoryDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/InventoryFilter'
        - type: object
          description: Delete Inventory Items Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Inventory Items assigned these orgModes
    InventoryDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted inventory items
            filters:
              $ref: '#/components/schemas/InventoryDeleteFilter'
            inventory:
              type: array
              items:
                $ref: '#/components/schemas/Inventory'
            pagination:
              $ref: '#/components/schemas/Pagination'
    InventoryDeltas:
      type: object
      properties:
        available:
          type: integer
          format: int32
          description: Number of items available
        committed:
          type: integer
          format: int32
          description: Number of items committed
        onHand:
          type: integer
          format: int32
          description: Number of items on hand
        unavailable:
          type: integer
          format: int32
          description: Number of unavailable items
      description: |
        Inventory state change relative to the previous inventory level, with a missing value on either side counted as 0. Returned only for the `ingest`, `adjust` and `assign` events.
    InventoryFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    InventoryFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventory:
              $ref: '#/components/schemas/Inventory'
    InventoryFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Inventory Items Filter
          properties:
            available:
              type: integer
              description: Fetch inventory if 'available' value is equal to specified one
            entityId:
              type: array
              items:
                type: string
              description: Return inventory items related to certain event record by record id
            inventoryId:
              type: array
              items:
                type: string
              description: Inventory items by list of inventoryId
            locationId:
              type: array
              items:
                type: string
              description: Fetch inventory by its location Id
            sku:
              type: array
              items:
                type: string
              description: Fetch inventory by its SKU
            sku_gt:
              type: string
              description: Fetch inventory in which SKU is lexicographically greater than the specified value
            sku_lt:
              type: string
              description: Fetch inventory in which SKU is lexicographically less than the specified value
            vendorSKU:
              type: array
              items:
                type: string
              description: Fetch inventory by its vendor SKU
    InventoryGroup:
      allOf:
        - type: object
          properties:
            groupId:
              type: string
              description: Inventory Group ID
              readOnly: true
        - $ref: '#/components/schemas/InventoryGroupCreateData'
        - $ref: '#/components/schemas/CoreObject'
    InventoryGroupCreateData:
      type: object
      required:
        - locationId
        - sourceSKU
        - destinationSKU
        - policy
      properties:
        destinationSKU:
          type: array
          items:
            type: string
          minItems: 1
        locationId:
          type: string
        policy:
          $ref: '#/components/schemas/InventoryGroupPolicy'
        sourceSKU:
          type: array
          items:
            type: string
          minItems: 1
        destinationPercentage:
          type: array
          items:
            type: number
          minItems: 1
        sourcePercentage:
          type: array
          items:
            type: number
          minItems: 1
    InventoryGroupCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        inventory_group:
          $ref: '#/components/schemas/InventoryGroup'
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    InventoryGroupFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    InventoryGroupFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventory_group:
              $ref: '#/components/schemas/InventoryGroup'
    InventoryGroupListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InventoryGroupListFilter'
    InventoryGroupListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Inventory Groups Filter
          properties:
            destinationSKU:
              type: array
              items:
                type: string
            groupId:
              type: array
              items:
                type: string
            locationId:
              type: array
              items:
                type: string
            sourceSKU:
              type: array
              items:
                type: string
    InventoryGroupListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InventoryGroupListFilter'
            inventory_groups:
              type: array
              items:
                $ref: '#/components/schemas/InventoryGroup'
            pagination:
              $ref: '#/components/schemas/Pagination'
    InventoryGroupPolicy:
      type: string
      enum:
        - sum
        - max
        - min
        - equal
        - first
        - custom
    InventoryGroupUpdateData:
      type: object
      properties:
        destinationPercentage:
          type: array
          items:
            type: number
          minItems: 1
        destinationSKU:
          type: array
          items:
            type: string
          minItems: 1
        locationId:
          type: string
        policy:
          $ref: '#/components/schemas/InventoryGroupPolicy'
        sourcePercentage:
          type: array
          items:
            type: number
          minItems: 1
        sourceSKU:
          type: array
          items:
            type: string
          minItems: 1
    InventoryGroupUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            inventory_group:
              $ref: '#/components/schemas/InventoryGroupUpdateData'
    InventoryGroupUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/InventoryGroupUpdateData'
      xml:
        name: request
    InventoryGroupUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventory_group:
              $ref: '#/components/schemas/InventoryGroup'
    InventoryGroupsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            inventory_groups:
              type: array
              items:
                $ref: '#/components/schemas/InventoryGroupCreateResult'
    InventoryGroupsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/InventoryGroupCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    InventoryGroupsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventory_groups:
              type: array
              items:
                $ref: '#/components/schemas/InventoryGroupCreateResult'
    InventoryListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InventoryListFilter'
    InventoryListFilter:
      allOf:
        - $ref: '#/components/schemas/InventoryFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Inventory Items Filter
          properties:
            available_gt:
              type: integer
              description: Fetch inventory if 'available' value is greater than specified one
            available_lt:
              type: integer
              description: Fetch inventory if 'available' value is less than specified one
            event:
              type: array
              items:
                $ref: '#/components/schemas/EventType'
              description: Retrieve inventory by list of events  (- allowed only with 'ledger' flag)
            groupId:
              type: array
              items:
                type: string
              description: |
                Select group-level inventory rows by Location Group ID list (mirrors 'locationId'). Use `*` to select all groups. When supplied with 'totals', returns the rollup across the requested groups (or all groups for `*`). Default totals are location-only and never include group-level rows.
            integration:
              type: array
              items:
                type: string
              description: Fetch inventory by integrations id list  (- ignored in 'totals' queries)
            inventoryNotTracked:
              type: boolean
              description: Fetch inventory by the inventoryNotTracked value  (- ignored in 'totals' queries)
            ledger:
              type: boolean
              description: Return inventory ledger information
            onHand:
              type: integer
              description: Fetch inventory if 'onHand' value is equal to specified one
            onHand_gt:
              type: integer
              description: Fetch inventory if 'onHand' value is greater than specified one
            onHand_lt:
              type: integer
              description: Fetch inventory if 'onHand' value is less than specified one
            requestorId:
              type: string
              description: Id of the inventory totals requestor (- used to select available locations; forcibly replaced with integration ID if the request came from an integration)
            tags:
              $ref: '#/components/schemas/EntityTags'
              description: Fetch inventory by tags (- disallowed with 'ledger' or 'totals' flag)
            totals:
              type: boolean
              description: Return inventory totals across all locations
            type:
              type: string
              enum:
                - virtual
                - physical
              description: '''virtual'' - fetch virtual inventory status, ''physical'' - not virtual (it is unallowable parameter when used with ''ledger'' or ''totals'' flag)'
    InventoryListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InventoryListFilter'
            inventory:
              type: array
              items:
                $ref: '#/components/schemas/Inventory'
            locationId:
              type: array
              items:
                type: string
              description: Array of location IDs (- returned only with inventory totals)
            pagination:
              $ref: '#/components/schemas/Pagination'
    InventoryRule:
      allOf:
        - type: object
          properties:
            ruleId:
              type: string
              description: Rule ID
            status:
              type: string
              description: Rule status
        - $ref: '#/components/schemas/InventoryRuleCreateData'
        - $ref: '#/components/schemas/CoreObject'
    InventoryRuleCreateData:
      type: object
      required:
        - event
        - rule
      properties:
        event:
          $ref: '#/components/schemas/EventType'
          description: Event trigerring this rule
        rule:
          type: string
          description: Rule's definition as javascript function
        description:
          type: string
          description: Description of the rule
        integration:
          type: string
          description: Event source integration id
        internal:
          $ref: '#/components/schemas/InternalInfo'
        partner:
          type: string
          description: Event source partner name
        ptype:
          $ref: '#/components/schemas/EventSource'
          description: Event source partner type
    InventoryRuleCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            inventoryrule:
              $ref: '#/components/schemas/InventoryRuleCreateData'
    InventoryRuleCreateRequest:
      allOf:
        - $ref: '#/components/schemas/InventoryRuleCreateData'
      xml:
        name: request
    InventoryRuleCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventoryrule:
              $ref: '#/components/schemas/InventoryRule'
    InventoryRuleFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    InventoryRuleFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventoryrule:
              $ref: '#/components/schemas/InventoryRule'
    InventoryRuleUpdateData:
      type: object
      required:
        - rule
      properties:
        rule:
          type: string
          description: Rule's definition as javascript function
        description:
          type: string
          description: Description of the rule
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
    InventoryRuleUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            inventoryrule:
              $ref: '#/components/schemas/InventoryRuleUpdateData'
    InventoryRuleUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/InventoryRuleUpdateData'
      xml:
        name: request
    InventoryRuleUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventoryrule:
              $ref: '#/components/schemas/InventoryRule'
    InventoryRulesDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InventoryRulesDeleteFilter'
    InventoryRulesDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/InventoryRulesFilter'
        - type: object
          description: Delete Rules Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Rules assigned these orgModes
    InventoryRulesDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted rules
            filters:
              $ref: '#/components/schemas/InventoryRulesDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            rules:
              type: array
              items:
                $ref: '#/components/schemas/InventoryRule'
    InventoryRulesFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Rules Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted rules
            integration:
              type: array
              items:
                type: string
              description: Rules by list of integration ids
            ruleId:
              type: array
              items:
                type: string
              description: Rules by list of ruleId
    InventoryRulesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InventoryRulesListFilter'
    InventoryRulesListFilter:
      allOf:
        - $ref: '#/components/schemas/InventoryRulesFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Rules Filter
          properties:
            event:
              type: array
              items:
                $ref: '#/components/schemas/EventType'
              description: Event types triggering this rule
            ptype:
              type: array
              items:
                $ref: '#/components/schemas/EventSource'
              description: Event source partner types
            partner:
              type: array
              items:
                type: string
              description: Event source partner names
    InventoryRulesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InventoryRulesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            rules:
              type: array
              items:
                $ref: '#/components/schemas/InventoryRule'
    InventoryUpdateData:
      type: object
      required:
        - event
        - locationId
        - ptype
        - sku
        - quantity
      properties:
        event:
          type: string
          description: Event updating inventory
          enum:
            - ship
            - fulfill
            - xferout
            - xferfulfill
            - xferin
            - receive
            - futureShip
            - release
            - shipCancel
            - shipCancelRestock
            - futureShipCancel
            - virtualCommit
            - touch
            - POSOrder
            - custom
            - revise
            - instantTransfer
            - cycleCount
        locationId:
          type: string
          description: Location Id of item
        ptype:
          $ref: '#/components/schemas/EventSource'
          description: Type of system that created the event
        quantity:
          type: integer
          format: int32
          description: |
            Number of items affected. Interpreted per `event`: for every event except `cycleCount` it is a relative movement, and the event decides which quantities it shifts. For `cycleCount` it is instead the absolute **counted on-hand** — `onHand` is set to it and `available` absorbs the difference — and the stored ledger entry carries the resulting adjustment rather than the submitted count.
        sku:
          type: string
          description: Item SKU
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
          nullable: true
        entityId:
          type: string
          description: Entity id of the record which is directly related to this inventory change
        entityType:
          type: string
          description: Type of the record which is directly related to this inventory change
          enum:
            - arrivals
            - fulfillments
            - inventory
            - receipts
            - shipments
            - orders
        infinite:
          type: boolean
          description: Set if item location has \"infinite\" availability
        internal:
          $ref: '#/components/schemas/InternalInfo'
        inventoryNotTracked:
          type: boolean
          description: Disables the inventory tracking
          nullable: true
        label:
          type: string
        orderId:
          type: string
          description: Pipe17 internal order id that initiated this inventory change
        orderType:
          type: string
          description: Type of order that initiated this inventory change
          enum:
            - sales
            - transfer
            - purchase
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        tags:
          $ref: '#/components/schemas/EntityTags'
        type:
          type: string
          enum:
            - virtual
            - physical
          description: Inventory type
        vendorSKU:
          type: string
          description: Item vendor SKU
    InventoryUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            inventory:
              $ref: '#/components/schemas/InventoryUpdateData'
    InventoryUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/InventoryUpdateData'
      xml:
        name: request
    InventoryUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            inventory:
              $ref: '#/components/schemas/Inventory'
    InventoryWithDeltas:
      allOf:
        - $ref: '#/components/schemas/Inventory'
        - type: object
          properties:
            deltas:
              $ref: '#/components/schemas/InventoryDeltas'
    Invoice:
      allOf:
        - type: object
          properties:
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the invoice
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the invoice
            integration:
              type: string
              description: Reference to integration that created the invoice
            invoiceId:
              type: string
              description: Auto Generated
            orderIntegrations:
              type: array
              items:
                type: string
              description: Integrations that created orders related to the invoice
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/InvoiceChangelogEntry'
        - $ref: '#/components/schemas/InvoiceCreateData'
        - $ref: '#/components/schemas/CoreObject'
    InvoiceAdditionalCharge:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/InvoiceAdditionalChargeType'
          description: Additional charge type
        value:
          type: number
          description: absolute value of additional charge
        createdAt:
          type: string
          format: date-time
          description: Invoice charge created at
        label:
          type: string
          description: optional additional charge
        lineItemId:
          type: string
          description: optional reference to lineItems[].uniqueId for lineItem additional charge
        reference:
          type: string
          description: optional id/name for additional charge
    InvoiceAdditionalChargeType:
      type: string
      description: Additional charge type
      enum:
        - handling
        - wrapping
        - shipping
        - other
    InvoiceChangelogEntry:
      allOf:
        - type: object
          properties:
            extInvoiceId:
              type: string
              description: External Invoice Id
            invoiceId:
              type: string
              description: Invoice Id
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    InvoiceCreateData:
      type: object
      xml:
        name: invoice
      required:
        - extInvoiceId
      properties:
        extInvoiceId:
          type: string
          description: External Invoice ID
        additionalCharges:
          type: array
          description: Additional charges
          items:
            $ref: '#/components/schemas/InvoiceAdditionalCharge'
        billingAddress:
          $ref: '#/components/schemas/Address'
          description: Purchaser Address
        currency:
          type: string
          description: Invoice currency code
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        customer:
          $ref: '#/components/schemas/InvoiceCustomer'
        discounts:
          type: array
          description: Discounts
          items:
            $ref: '#/components/schemas/InvoiceDiscount'
        dueAt:
          type: string
          format: date-time
          description: Invoice due date
        extInvoiceApiId:
          type: string
          description: External System Invoice API ID
        extInvoiceCreatedAt:
          type: string
          format: date-time
          description: When the invoice was created at source
        extInvoiceUpdatedAt:
          type: string
          format: date-time
          description: When the invoice was updated at source
        extInvoiceUrl:
          type: string
          description: Invoice Url in External System
        extOrderId:
          type: string
          description: Reference to order
        extReferenceId:
          type: string
          description: Reference ID
        internal:
          $ref: '#/components/schemas/InternalInfo'
        invoiceDiscount:
          type: number
          format: float
          description: Invoice Discount
        invoiceNote:
          type: string
          description: Invoice Notes
        invoiceTax:
          type: number
          format: float
          description: Invoice Tax
        invoiceType:
          $ref: '#/components/schemas/InvoiceType'
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceLineItem'
        orderId:
          type: string
          description: Reference to order
        paidAt:
          type: string
          format: date-time
          description: Invoice paid date
        paymentStatus:
          type: string
          description: status of the payment
        payments:
          type: array
          description: Payments
          items:
            $ref: '#/components/schemas/InvoicePayment'
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/InvoiceStatus'
        subTotalPrice:
          type: number
          format: float
          description: Sub Total Price
        tags:
          $ref: '#/components/schemas/EntityTags'
        term:
          type: string
          description: Payment terms of the invoice as provided by the source system (e.g. "Net 30", "Due on receipt"); typically determines dueAt
        totalPrice:
          type: number
          format: float
          description: Total Price
    InvoiceCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        invoice:
          $ref: '#/components/schemas/Invoice'
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    InvoiceCustomer:
      type: object
      properties:
        company:
          type: string
        customerId:
          type: string
        extCustomerId:
          type: string
        firstName:
          type: string
        lastName:
          type: string
    InvoiceDiscount:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/InvoiceDiscountType'
          description: Discount type
        value:
          type: number
          description: absolute value of discount
        createdAt:
          type: string
          format: date-time
          description: Invoice discount created at
        label:
          type: string
          description: optional discount label
        lineItemId:
          type: string
          description: optional reference to lineItems[].uniqueId for lineItem discount
        reference:
          type: string
          description: optional id/name of discount source, e.g. coupon code
    InvoiceDiscountType:
      type: string
      description: Discount Type
      enum:
        - coupon
        - manual
        - other
    InvoiceFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    InvoiceFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            invoice:
              $ref: '#/components/schemas/Invoice'
    InvoiceLineItem:
      type: object
      required:
        - uniqueId
        - sku
        - quantity
      properties:
        quantity:
          type: number
          format: float
          description: Item Quantity
        sku:
          type: string
          description: Item SKU
        uniqueId:
          type: string
          description: Item unique Id (within an invoice)
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extOrderId:
          type: string
        itemDiscount:
          type: number
          format: float
          description: Line discount (item discount * quantity)
        itemPrice:
          type: number
          format: float
          description: Item price w/o taxes and discounts (line amount / quantity)
        itemTax:
          type: number
          format: float
          description: Line tax ((itemPrice * quantity - itemDiscount) * tax ratio)
        locationId:
          type: string
        name:
          type: string
          description: Item Name or Description
        orderId:
          type: string
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        requiresShipping:
          type: boolean
        requiresShippingSource:
          $ref: '#/components/schemas/InvoiceRequiresShippingSource'
        routed:
          type: boolean
        taxable:
          type: boolean
        trackedAtSourceChannel:
          type: boolean
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    InvoicePayment:
      type: object
      required:
        - amount
        - currency
        - status
        - method
      properties:
        amount:
          type: number
        currency:
          type: string
        method:
          type: string
          description: payment method name
          enum:
            - cash
            - giftCard
            - creditCard
            - storeCredit
            - paypal
            - other
            - custom
        status:
          type: string
          enum:
            - succeeded
            - failed
        conversion:
          type: number
        customMethod:
          type: string
          description: custom payment method name
        kind:
          type: string
          enum:
            - visa
            - mastercard
            - amex
            - discover
        processedAt:
          type: string
          format: date-time
          description: Payment processing time
        reference:
          type: string
          description: payment reference id
    InvoiceRequiresShippingSource:
      type: string
      enum:
        - source
        - integration
        - automation
        - manual
        - unknown
    InvoiceStatus:
      type: string
      description: Invoice Status
      enum:
        - draft
        - new
        - reviewRequired
        - posted
        - partialPaid
        - paid
        - canceled
        - closed
    InvoiceType:
      type: string
      description: Invoice Type
      enum:
        - bill
        - invoice
        - debitMemo
        - creditMemo
        - cashSale
        - cashReturn
    InvoiceUpdateData:
      type: object
      properties:
        additionalCharges:
          type: array
          description: Additional charges
          items:
            $ref: '#/components/schemas/InvoiceAdditionalCharge'
          nullable: true
        billingAddress:
          $ref: '#/components/schemas/Address'
          description: Billing Address
        currency:
          type: string
          description: Invoice currency code
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        customer:
          $ref: '#/components/schemas/InvoiceCustomer'
        discounts:
          type: array
          description: Discounts
          items:
            $ref: '#/components/schemas/InvoiceDiscount'
          nullable: true
        dueAt:
          type: string
          format: date-time
          description: Invoice due date
        extInvoiceApiId:
          type: string
          description: External System Invoice API ID
        extInvoiceUpdatedAt:
          type: string
          format: date-time
          description: When the invoice was updated at source
        extInvoiceUrl:
          type: string
          description: Invoice Url in External System
        extReferenceId:
          type: string
          description: Reference ID
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        invoiceDiscount:
          type: number
          format: float
          description: Invoice Discount
          nullable: true
        invoiceNote:
          type: string
          description: Invoice Notes
          nullable: true
        invoiceTax:
          type: number
          format: float
          description: Invoice Tax
          nullable: true
        invoiceType:
          $ref: '#/components/schemas/InvoiceType'
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceUpdateLineItem'
        paidAt:
          type: string
          format: date-time
          description: Invoice paid date
        paymentStatus:
          type: string
          description: status of the payment
          nullable: true
        payments:
          type: array
          description: Payments
          items:
            $ref: '#/components/schemas/InvoicePayment'
          nullable: true
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
          nullable: true
        status:
          $ref: '#/components/schemas/InvoiceStatus'
        subTotalPrice:
          type: number
          format: float
          description: Sub Total Price
          nullable: true
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
        term:
          type: string
          description: Payment terms of the invoice as provided by the source system (e.g. "Net 30", "Due on receipt"); typically determines dueAt
        totalPrice:
          type: number
          format: float
          description: Total Price
          nullable: true
    InvoiceUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            invoice:
              $ref: '#/components/schemas/InvoiceUpdateData'
    InvoiceUpdateLineItem:
      type: object
      properties:
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extOrderId:
          type: string
        itemDiscount:
          type: number
          format: float
          description: Item Price
        itemPrice:
          type: number
          format: float
          description: Item Price
        itemTax:
          type: number
          format: float
        locationId:
          type: string
        name:
          type: string
          description: Item Name or Description
        orderId:
          type: string
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantity:
          type: number
          format: float
          description: Item Quantity
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        requiresShipping:
          type: boolean
        requiresShippingSource:
          $ref: '#/components/schemas/InvoiceRequiresShippingSource'
        routed:
          type: boolean
        sku:
          type: string
          description: Item SKU
        taxable:
          type: boolean
        trackedAtSourceChannel:
          type: boolean
        uniqueId:
          type: string
          description: Item unique Id (within an invoice)
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    InvoiceUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/InvoiceUpdateData'
      xml:
        name: request
    InvoiceUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            invoice:
              $ref: '#/components/schemas/Invoice'
    InvoicesCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            invoices:
              type: array
              items:
                $ref: '#/components/schemas/InvoiceCreateResult'
    InvoicesCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/InvoiceCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    InvoicesCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            invoices:
              type: array
              items:
                $ref: '#/components/schemas/InvoiceCreateResult'
    InvoicesDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InvoicesDeleteFilter'
    InvoicesDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/InvoicesFilter'
        - type: object
          description: Delete Invoices Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Select invoices assigned these orgModes
    InvoicesDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted invoices
            filters:
              $ref: '#/components/schemas/InvoicesDeleteFilter'
            invoices:
              type: array
              items:
                $ref: '#/components/schemas/Invoice'
            pagination:
              $ref: '#/components/schemas/Pagination'
    InvoicesFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Invoices Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted invoices
            extInvoiceApiId:
              type: array
              items:
                type: string
              description: Select by `extInvoiceApiId` list
            extInvoiceId:
              type: array
              items:
                type: string
              description: Select by `extInvoiceId` list
            extOrderId:
              type: array
              items:
                type: string
              description: Select by `extOrderId` list
            extReferenceId:
              type: array
              items:
                type: string
              description: Select by `extReferenceId` list
            integration:
              type: array
              items:
                type: string
              description: Select invoices of these integrations
            invoiceId:
              type: array
              items:
                type: string
              description: Select by `invoiceId` list
            orderId:
              type: array
              items:
                type: string
              description: Select by `orderId` list
            status:
              type: array
              items:
                $ref: '#/components/schemas/InvoiceStatus'
              description: Select by list of statuses
            tags:
              $ref: '#/components/schemas/EntityTags'
    InvoicesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/InvoicesListFilter'
    InvoicesListFilter:
      allOf:
        - $ref: '#/components/schemas/InvoicesFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Invoices Filter
          properties:
            emailAddr:
              type: array
              items:
                type: string
              description: Select invoices by `billingAddress.email` list
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Select by list of categories of the invoice related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Select by list of types of the invoice related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            hasSourceDoc:
              type: boolean
              description: Select invoices containing a source document
    InvoicesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - invoices
          properties:
            invoices:
              type: array
              items:
                $ref: '#/components/schemas/Invoice'
            filters:
              $ref: '#/components/schemas/InvoicesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ItemQuantityUnit:
      type: string
      description: Units of measurement of item quantity
      enum:
        - each
        - can
        - bottle
        - basket
        - kg
        - litre
    Job:
      allOf:
        - type: object
          properties:
            createdBy:
              type: string
              description: Job requester ID
            jobId:
              type: string
              description: Job ID
            progress:
              $ref: '#/components/schemas/JobProgress'
            status:
              $ref: '#/components/schemas/JobStatus'
        - $ref: '#/components/schemas/JobCreateData'
        - $ref: '#/components/schemas/CoreObject'
    JobCreateData:
      type: object
      properties:
        subType:
          $ref: '#/components/schemas/JobSubType'
        type:
          $ref: '#/components/schemas/JobType'
        contentType:
          type: string
          description: Job result content type
        internal:
          $ref: '#/components/schemas/InternalInfo'
        params:
          type: object
          description: Job type specific parameters
        state:
          $ref: '#/components/schemas/JobState'
        tags:
          $ref: '#/components/schemas/EntityTags'
        timeout:
          type: number
          format: int32
          description: Job timeout (in milliseconds)
      required:
        - type
        - subType
    JobCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    JobCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            job:
              $ref: '#/components/schemas/Job'
    JobFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    JobFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            job:
              $ref: '#/components/schemas/Job'
    JobFetchResultError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    JobProgress:
      type: integer
      minimum: 0
      maximum: 100
      description: Job progress (0-100)
    JobState:
      type: object
      description: This is a free form object that can be used to store any state related to the job.
    JobStatus:
      type: string
      description: Job status
      enum:
        - submitted
        - processing
        - completed
        - canceled
        - failed
    JobSubType:
      type: string
      description: Job sub-type
      enum:
        - inventory
        - replenishment
        - oos_sku_on_order
        - open_orders
        - purchases
        - transfers
        - arrivals
        - receipts
        - products
        - organizations
        - orders
        - shipments
        - fulfillments
        - locations
        - shipping_methods
        - returns
        - exceptions
        - lookup_objects
        - statements
        - users
        - store_assignments
    JobType:
      type: string
      description: Job type
      enum:
        - report
        - import
        - prepare
        - update
        - delete
        - export
        - automation
        - sync
    JobUpdateData:
      type: object
      properties:
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        progress:
          $ref: '#/components/schemas/JobProgress'
        resultURL:
          type: string
          description: Job result URL
          format: uri
        state:
          $ref: '#/components/schemas/JobState'
        status:
          $ref: '#/components/schemas/JobStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
    JobUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            job:
              $ref: '#/components/schemas/JobUpdateData'
    JobUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/JobUpdateData'
      xml:
        name: request
    JobUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            job:
              $ref: '#/components/schemas/Job'
    JobsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/JobsDeleteFilter'
    JobsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/JobsFilter'
        - type: object
          description: Delete Jobs Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Jobs assigned these orgModes
    JobsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted jobs
            filters:
              $ref: '#/components/schemas/JobsDeleteFilter'
            jobs:
              type: array
              items:
                $ref: '#/components/schemas/Job'
            pagination:
              $ref: '#/components/schemas/Pagination'
    JobsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Jobs Filter
          properties:
            createdBy:
              type: array
              items:
                type: string
              description: Jobs by list of job requester IDs
            jobId:
              type: array
              items:
                type: string
              description: Jobs by list of jobId
            status:
              type: array
              items:
                $ref: '#/components/schemas/JobStatus'
              description: Jobs with given status
            subType:
              type: array
              items:
                $ref: '#/components/schemas/JobSubType'
              description: Jobs with given sub-type
            tags:
              $ref: '#/components/schemas/EntityTags'
            type:
              type: array
              items:
                $ref: '#/components/schemas/JobType'
              description: Jobs with given type
    JobsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/JobsListFilter'
    JobsListFilter:
      allOf:
        - $ref: '#/components/schemas/JobsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Jobs Filter
    JobsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/JobsListFilter'
            jobs:
              type: array
              items:
                $ref: '#/components/schemas/Job'
            pagination:
              $ref: '#/components/schemas/Pagination'
    Label:
      allOf:
        - type: object
          properties:
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the label
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the label
            integration:
              type: string
              description: Reference to integration that created the label
            labelId:
              type: string
              description: Label ID
            refundStatus:
              type: string
              enum:
                - pending
                - accepted
                - rejected
              description: |
                Carrier refund state for a cancelled label. Independent of `status`: a successfully refunded label is `status: ready, refundStatus: accepted`. When a refund is rejected, the carrier reason is recorded as an Exception linked to this label (entityType=labels), not on the entity.
            status:
              type: string
              enum:
                - pending
                - new
                - ready
                - failed
              description: |
                Label status. 'pending' = stub created by API, awaiting connector to attach vendor metadata. 'new' = legacy path (direct POST /labels without going through request-labels). 'ready' = upload complete. 'failed' = stub abandoned after connector failure.
        - $ref: '#/components/schemas/LabelCreateData'
        - $ref: '#/components/schemas/CoreObject'
    LabelCreateData:
      type: object
      properties:
        contentType:
          type: string
        fileName:
          type: string
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extLabelId:
          type: string
          description: |
            Client-supplied external identifier, unique per organization. Required when creating labels via /shipping_requests/{id}/request-labels; optional for direct POST /labels. Duplicate within org returns 409 Conflict.
        integration:
          type: string
          description: |
            Reference to the integration that created the label. Set by /shipping_requests/{id}/request-labels when creating a pending stub so the label is linked to the resolving connector; optional for direct POST /labels.
        internal:
          $ref: '#/components/schemas/InternalInfo'
        labelType:
          $ref: '#/components/schemas/LabelType'
        shippingMethod:
          type: string
        status:
          type: string
          enum:
            - pending
            - new
            - ready
          description: Initial label status (defaults to 'new').
        tags:
          $ref: '#/components/schemas/EntityTags'
        trackingNumber:
          type: string
      required:
        - fileName
        - contentType
    LabelCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    LabelCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            label:
              $ref: '#/components/schemas/Label'
    LabelFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    LabelFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            label:
              $ref: '#/components/schemas/Label'
    LabelType:
      type: string
      description: Label type
      enum:
        - bol
        - containerLabel
        - giftNote
        - invoice
        - packingInstruction
        - packingSlip
        - palletLabel
        - productLabel
        - shippingLabel
        - other
    LabelUpdateData:
      type: object
      description: |
        Mutable label fields. Fields omitted from the body are left unchanged. Immutable fields (labelId, orgKey, integration, createdAt, documentType, apiVersion) are silently dropped if provided.
      properties:
        contentType:
          type: string
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        fileName:
          type: string
        internal:
          $ref: '#/components/schemas/InternalInfo'
        labelType:
          $ref: '#/components/schemas/LabelType'
        refundStatus:
          type: string
          enum:
            - pending
            - accepted
            - rejected
          description: Carrier refund state for a cancelled label.
        shippingMethod:
          type: string
        tags:
          $ref: '#/components/schemas/EntityTags'
        trackingNumber:
          type: string
    LabelUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    LabelUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/LabelUpdateData'
      xml:
        name: request
    LabelUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            label:
              $ref: '#/components/schemas/Label'
    LabelsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LabelsDeleteFilter'
    LabelsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/LabelsFilter'
        - type: object
          description: Delete Labels Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Labels assigned these orgModes
    LabelsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted labels
            filters:
              $ref: '#/components/schemas/LabelsDeleteFilter'
            labels:
              type: array
              items:
                $ref: '#/components/schemas/Label'
            pagination:
              $ref: '#/components/schemas/Pagination'
    LabelsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Labels Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted labels
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Labels by list of categories of the label related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Labels by list of types of the label related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            extLabelId:
              type: array
              items:
                type: string
              description: Labels by list of extLabelId (client-supplied external IDs)
            labelId:
              type: array
              items:
                type: string
              description: Labels by list of labelId
            tags:
              $ref: '#/components/schemas/EntityTags'
    LabelsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LabelsListFilter'
    LabelsListFilter:
      allOf:
        - $ref: '#/components/schemas/LabelsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Labels Filter
    LabelsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LabelsListFilter'
            labels:
              type: array
              items:
                $ref: '#/components/schemas/Label'
    LastRerunRoutingTrigger:
      type: string
      enum:
        - manual
        - auto
      description: Indicates if the order was rerun manually by a user action or automatically.
    LineDisposition:
      type: object
      properties:
        extOrderId:
          type: string
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantity:
          type: number
          format: float
        sku:
          type: string
        type:
          $ref: '#/components/schemas/LineDispositionType'
        uniqueId:
          type: string
    LineDispositionListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LineDispositionListFilter'
    LineDispositionListFilter:
      type: object
      properties:
        count:
          type: integer
          format: int32
          description: Return at most this many lines
        pagination:
          type: string
          enum:
            - disabled
          description: Exclude pagination info from the response
        skip:
          type: integer
          format: int32
          description: Skip this many lines
        status:
          type: array
          items:
            $ref: '#/components/schemas/OrderStatus'
          description: Select orders by order status list
        type:
          type: array
          items:
            $ref: '#/components/schemas/LineDispositionType'
          description: Select dispositions by disposition type list
        updatedSince:
          type: string
          format: date-time
          description: Select orders updated after this date-time
        updatedUntil:
          type: string
          format: date-time
          description: Select orders updated before this date-time
    LineDispositionListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - dispositions
          properties:
            dispositions:
              type: array
              items:
                $ref: '#/components/schemas/LineDisposition'
            filters:
              $ref: '#/components/schemas/LineDispositionListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    LineDispositionType:
      type: string
      enum:
        - routed
        - sent
        - failed
        - rejected
        - fulfilled
        - canceled
        - unrouted
        - unsent
        - unfulfilled
      description: Line disposition type
    ListDeleteAction:
      type: string
      description: Action for list delete operation
      enum:
        - list
        - soft
      default: list
    ListResultOrderKeys:
      type: object
      properties:
        keys:
          type: string
          description: Fields to return
        order:
          type: string
          description: Sort order
    Location:
      allOf:
        - type: object
          properties:
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the location
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the location
            integration:
              type: string
              description: Reference to integration that created an item
            locationId:
              type: string
              description: Location ID
            mergedWithLocationId:
              type: string
              description: For merged locations, indicates which locationId current location is merged with
        - $ref: '#/components/schemas/LocationCreateData'
        - $ref: '#/components/schemas/CoreObject'
    LocationAddress:
      type: object
      required:
        - address1
        - country
      properties:
        address1:
          description: Address
          type: string
        country:
          description: Country
          type: string
        address2:
          description: Address Line 2
          type: string
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        email:
          description: email
          type: string
        phone:
          description: Phone
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    LocationCarrierServiceConfig:
      type: object
      description: |
        Per-carrier configuration for this location, optionally narrowed to a
        specific service level. Two granularities are supported:
          - Carrier-wide entry: omit `serviceLevelCode`. Applies as the default
            for every service level offered by this carrier at this location.
          - Service-level entry: provide `serviceLevelCode`. Applies only to
            that specific (carrierCode, serviceLevelCode) combination.
        A carrier may have at most one carrier-wide entry plus zero or more
        service-level entries. Uniqueness is enforced server-side: at most one
        entry per `carrierCode` with omitted/null `serviceLevelCode`, and at
        most one per `(carrierCode, serviceLevelCode)` pair.
      required:
        - carrierCode
        - isEnabled
      properties:
        carrierCode:
          type: string
          description: |
            Carrier identifier (e.g., "ups", "fedex", "usps"). Matches the
            `Shipment.carrier` convention.
        isEnabled:
          type: boolean
          description: |
            Whether this carrier (or carrier+service-level) is enabled at this
            location. Disabled entries persist for configuration history but
            are skipped at routing time.
        carrierPickupCutoffScheduleId:
          type: string
          description: |
            The referenced schedule's `windows` are interpreted as "carrier
            pickup is being accepted" intervals: `start = day 00:00`,
            `end = day cutoffTime`. Days with no window mean no carrier
            pickup that day. Omit/null = no override at this granularity
            (fall back to a more general config). Must have at most one
            window per day (enforced at assignment).
        serviceLevelCode:
          type: string
          description: |
            Optional service-level identifier (e.g., "GROUND", "2DAY"). Omit
            (or send null) to make this entry the carrier-wide default —
            covers every service level for the named carrier. Provide a value
            to scope this entry to a single service level. The combination
            `(carrierCode, serviceLevelCode)` is unique within the array; the
            carrier-wide form (`serviceLevelCode` omitted) is also unique per
            `carrierCode` and does not conflict with service-level entries.
    LocationCreateData:
      type: object
      required:
        - name
        - address
      properties:
        address:
          $ref: '#/components/schemas/LocationAddress'
        name:
          type: string
          description: Location Name
        capacityLimits:
          $ref: '#/components/schemas/CapacityLimits'
        carrierPickupCutoffScheduleId:
          type: string
          description: |
            The location's default carrier pickup cutoff schedule. The
            referenced schedule's `windows` are interpreted as "carrier
            pickup is being accepted" intervals: `start = day 00:00`,
            `end = day cutoffTime`. Days with no window mean no carrier
            pickup that day. Omit/null for no default cutoff. Must have at
            most one window per day (enforced at assignment).
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        excludeFromTotals:
          type: boolean
          description: Set to exclude location from calculating inventory totals
        excludeFromTotalsFor:
          type: array
          items:
            type: string
          description: Requestors of inventory totals for whom the location should be excluded from calculating totals
        excludeInventoryEvents:
          type: array
          description: Set of events to be excluded from automated processing for this location
          items:
            type: string
        externalSystem:
          type: array
          items:
            $ref: '#/components/schemas/LocationExternalSystem'
        fulfillmentHoursScheduleId:
          type: string
          description: |
            Reference to the Schedule whose `windows` define the hours during
            which this location can be expected to be actively fulfilling
            orders (start = fulfillment begins, end = fulfillment ends,
            half-open). Multiple windows per day are valid (e.g., 9-12 +
            13-17 with a midday break). This is deliberately *fulfillment*
            hours, not "operating hours": operating hours typically describe
            when a building is publicly/physically open, whereas a location
            may be closed to the public and still be actively fulfilling — and
            it is that fulfillment window we generally care about (e.g. for
            routing and EDD). Omit or set null for "no fulfillment hours
            configured."
        fulfillmentIntegrationId:
          type: string
          description: Set if this is a fulfillment location
        internal:
          $ref: '#/components/schemas/InternalInfo'
        inventoryIntegrationId:
          type: string
          description: Set if inventory source for this location is different from fulfillmentIntegrationId
        inventoryNotTracked:
          type: boolean
          description: Do not track inventory flag
        locationCarrierServiceConfigs:
          type: array
          description: |
            Per-carrier (and optionally per-service-level) configuration
            overrides for this location. See LocationCarrierServiceConfig
            for entry semantics. A carrier may have one carrier-wide entry
            (omitted `serviceLevelCode`) plus zero or more service-level
            entries.
          items:
            $ref: '#/components/schemas/LocationCarrierServiceConfig'
        preserveBundles:
          type: boolean
          description: Set if shipments to this location should have lineItems referring to bundles kept intact
        routingPaused:
          type: boolean
          description: Indicates the location is paused from routing
        routingPausedRanges:
          type: array
          items:
            $ref: '#/components/schemas/TimeRange'
          description: Time intervals during which routing is paused
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/LocationStatus'
        storeId:
          type: string
          description: Reference to the store this location belongs to
        tags:
          $ref: '#/components/schemas/EntityTags'
        virtualCommit:
          type: boolean
        virtualCommitSources:
          type: array
          items:
            type: string
    LocationCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            location:
              $ref: '#/components/schemas/LocationCreateData'
    LocationCreateRequest:
      allOf:
        - $ref: '#/components/schemas/LocationCreateData'
      xml:
        name: request
    LocationCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            location:
              $ref: '#/components/schemas/Location'
    LocationExternalSystem:
      type: object
      description: External System
      properties:
        integrationId:
          type: string
          description: External System Integration Id
        locationValue:
          type: string
          description: External System Location Value
    LocationFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    LocationFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            location:
              $ref: '#/components/schemas/Location'
    LocationGroup:
      allOf:
        - type: object
          properties:
            groupId:
              type: string
              description: Location Group ID
              readOnly: true
            status:
              type: string
              enum:
                - active
                - deleted
              readOnly: true
        - $ref: '#/components/schemas/LocationGroupCreateData'
        - $ref: '#/components/schemas/CoreObject'
    LocationGroupCreateData:
      type: object
      required:
        - groupName
        - locationIds
      properties:
        groupName:
          type: string
          description: Group name
        locationIds:
          type: array
          items:
            type: string
          description: Non-empty ordered list of locationIds
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        tags:
          $ref: '#/components/schemas/EntityTags'
    LocationGroupCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        location_group:
          $ref: '#/components/schemas/LocationGroup'
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    LocationGroupFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    LocationGroupFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            location_group:
              $ref: '#/components/schemas/LocationGroup'
    LocationGroupListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LocationGroupListFilter'
    LocationGroupListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Location Groups Filter
          properties:
            groupId:
              type: array
              items:
                type: string
              description: Select by 'groupId' list
            groupName:
              type: array
              items:
                type: string
              description: Select by 'groupName' list (regexp format - `"/.../"` or `"/.../i"`)
            locationId:
              type: array
              items:
                type: string
              description: Select by 'locationId' list
            tags:
              $ref: '#/components/schemas/EntityTags'
    LocationGroupListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LocationGroupListFilter'
            location_groups:
              type: array
              items:
                $ref: '#/components/schemas/LocationGroup'
            pagination:
              $ref: '#/components/schemas/Pagination'
    LocationGroupUpdateData:
      type: object
      properties:
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        groupName:
          type: string
          description: Group name
        internal:
          $ref: '#/components/schemas/InternalInfo'
        locationIds:
          type: array
          items:
            type: string
          description: Non-empty ordered list of locationIds
        tags:
          $ref: '#/components/schemas/EntityTags'
    LocationGroupUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            location_group:
              $ref: '#/components/schemas/LocationGroupUpdateData'
    LocationGroupUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/LocationGroupUpdateData'
      xml:
        name: request
    LocationGroupUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            location_group:
              $ref: '#/components/schemas/LocationGroup'
    LocationGroupsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            location_groups:
              type: array
              items:
                $ref: '#/components/schemas/LocationGroupCreateResult'
    LocationGroupsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/LocationGroupCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    LocationGroupsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            location_groups:
              type: array
              items:
                $ref: '#/components/schemas/LocationGroupCreateResult'
    LocationListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LocationListFilter'
    LocationListFilter:
      type: object
      properties:
        count:
          type: integer
          format: int32
          description: Return at most this many list items
        groups:
          type: array
          items:
            type: string
          description: groupId list
        keys:
          type: string
          description: Fields of locations to return
          default: inventoryNotTracked,locationId,status,name,address,excludeFromTotals,createdAt,updatedAt,orgKey
        pagination:
          type: string
          enum:
            - disabled
          description: Exclude pagination info from the response
        skip:
          type: integer
          format: int32
          description: Skip this many list items
    LocationListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - dispositions
          properties:
            filters:
              $ref: '#/components/schemas/LocationListFilter'
            locations:
              type: array
              items:
                $ref: '#/components/schemas/Location'
            pagination:
              $ref: '#/components/schemas/Pagination'
    LocationStatus:
      type: string
      description: Location status
      enum:
        - active
        - inactive
        - pending
        - merged
        - deleted
    LocationUpdateAddress:
      type: object
      properties:
        address1:
          description: Address
          type: string
        address2:
          description: Address Line 2
          type: string
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        country:
          description: Country
          type: string
        email:
          description: email
          type: string
        phone:
          description: Phone
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    LocationUpdateData:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/LocationUpdateAddress'
        capacityLimits:
          $ref: '#/components/schemas/CapacityLimits'
        carrierPickupCutoffScheduleId:
          type: string
          nullable: true
          description: |
            The location's default carrier pickup cutoff schedule. Send
            null to clear; omit to leave unchanged. Must have at most one
            window per day (enforced at assignment).
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        excludeFromTotals:
          type: boolean
          description: Set to exclude location from calculating inventory totals
        excludeFromTotalsFor:
          type: array
          items:
            type: string
          description: Requestors of inventory totals for whom the location should be excluded from calculating totals
          nullable: true
        excludeInventoryEvents:
          type: array
          description: Set of events to be excluded from automated processing for this location
          items:
            type: string
        externalSystem:
          type: array
          items:
            $ref: '#/components/schemas/LocationExternalSystem'
        fulfillmentHoursScheduleId:
          type: string
          nullable: true
          description: |
            Send null to clear the reference; omit to leave unchanged. See
            LocationCreateData for the field's full semantics.
        fulfillmentIntegrationId:
          type: string
          nullable: true
          description: Set if this is a fulfillment location
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        inventoryIntegrationId:
          type: string
          nullable: true
          description: Set if inventory source for this location is different from fulfillmentIntegrationId
        inventoryNotTracked:
          type: boolean
          nullable: true
          description: Do not track inventory flag
        locationCarrierServiceConfigs:
          type: array
          nullable: true
          description: |
            Per-carrier (and optionally per-service-level) configuration
            overrides. Sending an array fully replaces the existing list;
            send null to clear; omit to leave unchanged.
          items:
            $ref: '#/components/schemas/LocationCarrierServiceConfig'
        mergedWithLocationId:
          type: string
          description: For merged locations, indicates which locationId current location is merged with
        name:
          type: string
          description: Location Name
        preserveBundles:
          type: boolean
          description: Set if shipments to this location should have lineItems referring to bundles kept intact
        routingPaused:
          type: boolean
          description: Indicates the location is paused from routing
          nullable: true
        routingPausedRanges:
          type: array
          items:
            $ref: '#/components/schemas/TimeRange'
          description: Time intervals during which routing is paused
          nullable: true
        sourceDoc:
          nullable: true
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/LocationStatus'
        storeId:
          type: string
          description: Reference to the store this location belongs to
        tags:
          $ref: '#/components/schemas/EntityTags'
        virtualCommit:
          type: boolean
          nullable: true
        virtualCommitSources:
          type: array
          items:
            type: string
          nullable: true
    LocationUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            location:
              $ref: '#/components/schemas/LocationUpdateData'
    LocationUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/LocationUpdateData'
      xml:
        name: request
    LocationUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            location:
              $ref: '#/components/schemas/Location'
    LocationsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LocationsDeleteFilter'
    LocationsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/LocationsFilter'
        - type: object
          description: Delete Locations Filter
          properties:
            integration:
              type: array
              items:
                type: string
              description: Locations of these integrations
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Locations assigned these orgModes
    LocationsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted locations
            filters:
              $ref: '#/components/schemas/LocationsDeleteFilter'
            locations:
              type: array
              items:
                $ref: '#/components/schemas/Location'
            pagination:
              $ref: '#/components/schemas/Pagination'
    LocationsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Locations Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted locations
            excludeFromTotals:
              type: boolean
              description: Locations excluded from calculating inventory totals
            locationId:
              type: array
              items:
                type: string
              description: Locations by list of locationId
            status:
              type: array
              items:
                $ref: '#/components/schemas/LocationStatus'
            tags:
              $ref: '#/components/schemas/EntityTags'
    LocationsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LocationsListFilter'
    LocationsListFilter:
      allOf:
        - $ref: '#/components/schemas/LocationsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Locations Filter
          properties:
            email:
              type: string
              description: Retrieve locations by email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Retrieve locations by list of categories of the location related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Retrieve locations by list of types of the location related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            extIntegrationId:
              type: array
              items:
                type: string
              description: Retrieve locations by list of external integration ids
            extLocationId:
              type: array
              items:
                type: string
              description: Retrieve locations by list of external location ids
            hasSourceDoc:
              type: boolean
              description: Retrieve locations containing a source document
            integration:
              type: array
              items:
                type: string
              description: Retrieve locations by list of integrations that created these locations
            inventoryNotTracked:
              type: boolean
              description: Retrieve locations by inventoryNotTracked value (default - any)
            mergedWithLocationId:
              type: array
              items:
                type: string
              description: Retrieve locations by list of mergedWithLocationId
            name:
              type: string
              description: Retrieve locations by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            phone:
              type: string
              description: Retrieve locations by phone (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            storeId:
              type: string
              description: Retrieve locations belonging to a specific store
    LocationsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LocationsListFilter'
            locations:
              type: array
              items:
                $ref: '#/components/schemas/Location'
            pagination:
              $ref: '#/components/schemas/Pagination'
    LookupError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    LookupObject:
      allOf:
        - type: object
          properties:
            lookupId:
              type: string
              description: Lookup Object ID
        - $ref: '#/components/schemas/LookupObjectCreateData'
        - $ref: '#/components/schemas/CoreObject'
    LookupObjectCounter:
      type: object
      properties:
        lookupType:
          type: string
          description: Type of the lookup objects
        objectCount:
          type: integer
          description: Number of objects of the `lookupType` type
        publicObjectCount:
          type: integer
          description: Number of public objects of the `lookupType` type
    LookupObjectCreateData:
      type: object
      required:
        - lookupType
        - expression
        - expressionType
      properties:
        expression:
          type: string
          description: |
            Expression representing the lookup keys (`lookupKey`) that the object matches to. 
            The format and meaning depend on the `expressionType` value.
        expressionType:
          $ref: '#/components/schemas/LookupObjectExpressionType'
        lookupType:
          type: string
          description: Type of the lookup object
        hidden:
          type: boolean
          description: |
            Set the true to exclude the object from the responses to the "List Lookup Objects" queries 
            (- the true value can only be applied to public objects).
        isPublic:
          type: boolean
          description: Public object indicator (default - false)
        value:
          type: object
          description: |
            Lookup object value (- any type). 
            It should be undefined in requests if `expressionType` is equal to `"function"`. 
            In the `lookup` query response, if a functional lookup-object is found as matching, 
            the value returned by the conversion function will be set in the `value` field.
    LookupObjectCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        lookupObject:
          $ref: '#/components/schemas/LookupObject'
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    LookupObjectExpressionType:
      type: string
      enum:
        - literal
        - regexp
        - function
      description: |
        Type of the lookup keys expression (- `expression`):
        - `"literal"` - indicates the expression is exact value of matching key
        - `"regexp"` - indicates the expression is a regexp of matching keys (regexp string format: `"/.../"` or `"/.../i"`)
        - `"function"` - indicates the expression is identifier of "conversion function" that returns some specific value (- not undefined & not null) when applied to the matching keys (identifier format: `"{functionId}"` or `"name:{name}"`, see "Conversion Functions / Invoke Function")
    LookupObjectFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    LookupObjectFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            lookupObject:
              $ref: '#/components/schemas/LookupObject'
    LookupObjectListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LookupObjectListFilter'
    LookupObjectListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Lookup Objects Filter
          properties:
            expression:
              type: array
              items:
                type: string
              description: Select by `expression` list
            expressionType:
              type: array
              items:
                type: string
              description: Select by `expressionType` list
            isPublic:
              type: boolean
              description: The `true` selects public objects only, `false` - non-public ones. By default, any of them.
            lookupId:
              type: array
              items:
                type: string
              description: Select by `lookupId` list
            lookupType:
              type: array
              items:
                type: string
              description: Select by `lookupType` list
            types:
              type: boolean
              description: Set the true to return only `lookupTypes` array (default or false -- return `lookupObjects` array and optionally `pagination`)
    LookupObjectListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/LookupObjectListFilter'
            lookupObjects:
              type: array
              items:
                $ref: '#/components/schemas/LookupObject'
              description: It is returned only if the `types` parameter has the value `false' or is not defined
            lookupTypes:
              type: array
              items:
                $ref: '#/components/schemas/LookupObjectCounter'
              description: It is returned only if the `types` parameter has the value `true'
            pagination:
              $ref: '#/components/schemas/Pagination'
    LookupObjectUpdateData:
      type: object
      properties:
        expression:
          type: string
          description: |
            Expression representing the lookup keys (`lookupKey`) that the object matches to. 
            The format and meaning depend on the `expressionType` value.
        expressionType:
          $ref: '#/components/schemas/LookupObjectExpressionType'
        hidden:
          type: boolean
          description: |
            Set the true to exclude the object from the responses to the "List Lookup Objects" queries 
            (- the true value can only be applied to public objects).
        lookupType:
          type: string
          description: Type of the lookup object
        value:
          type: object
          description: |
            Lookup object value (- any type). 
            Setting this field is not supported if the resulting `expressionType` is `"function"`.
          nullable: true
    LookupObjectUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            lookupObject:
              $ref: '#/components/schemas/LookupObjectUpdateData'
    LookupObjectUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/LookupObjectUpdateData'
      xml:
        name: request
    LookupObjectUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            lookupObject:
              $ref: '#/components/schemas/LookupObject'
    LookupObjectsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            lookupObjects:
              type: array
              items:
                $ref: '#/components/schemas/LookupObjectCreateResult'
    LookupObjectsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/LookupObjectCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 100
    LookupObjectsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            lookupObjects:
              type: array
              items:
                $ref: '#/components/schemas/LookupObjectCreateResult'
    LookupResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            lookupKey:
              type: string
              description: Copy of the input lookup key
            lookupObject:
              $ref: '#/components/schemas/LookupObject'
    Mapping:
      allOf:
        - type: object
          properties:
            apikeyId:
              type: string
              description: Id of apikey modified mapping
            connectorId:
              type: string
              description: Connector that uses this mapping
            mappingId:
              type: string
              description: Mapping ID
            scope:
              type: array
              items:
                type: string
              readOnly: true
              description: Audience restriction inherited from the connector (honored only when isPublic is true). See Connector.scope.
            userId:
              type: string
              description: Id of user modified mapping
            version:
              type: number
              description: Mapping version
            visibility:
              allOf:
                - $ref: '#/components/schemas/ConnectorVisibility'
              readOnly: true
        - $ref: '#/components/schemas/MappingCreateData'
        - $ref: '#/components/schemas/CoreObject'
    MappingCreateData:
      type: object
      required:
        - isPublic
        - description
      properties:
        description:
          type: string
          description: Description
        isPublic:
          type: boolean
          description: Public mapping indicator
        documentationURLs:
          type: array
          items:
            type: string
        internal:
          $ref: '#/components/schemas/InternalInfo'
        mappings:
          type: array
          items:
            $ref: '#/components/schemas/MappingRule'
        originId:
          type: string
        readme:
          type: string
        tags:
          $ref: '#/components/schemas/EntityTags'
        uuid:
          type: string
          description: UUID (generated if not provided)
    MappingCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            mapping:
              $ref: '#/components/schemas/MappingCreateData'
    MappingCreateRequest:
      allOf:
        - $ref: '#/components/schemas/MappingCreateData'
      xml:
        name: request
    MappingCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            mapping:
              $ref: '#/components/schemas/Mapping'
    MappingFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    MappingFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            mapping:
              $ref: '#/components/schemas/Mapping'
    MappingRule:
      type: object
      description: Mapping Rule
      required:
        - name
        - enabled
        - source
        - target
      properties:
        enabled:
          type: boolean
          description: Is Mapping Rule Enabled
        name:
          type: string
          description: Mapping Rule Name
        source:
          type: string
          description: Mapping Rule Source
        target:
          type: string
          description: Mapping Rule Target
        default:
          type: object
          description: Mapping Rule Source Default Value if Source is Missing
        desc:
          type: string
          description: Explanation of the mapping rule
        lookup:
          $ref: '#/components/schemas/MappingRuleLookup'
        missing:
          type: object
          description: Mapping Rule Source Value if Source is Missing
        options:
          type: string
          description: Mapping rule config options (default - normal)
          enum:
            - normal
            - hidden
            - readonly
            - restricted
            - sensitive
        readme:
          type: string
          description: Warning about mapping rule changes
        require:
          type: boolean
          description: Is Mapping Rule Source Required
        type:
          type: string
          description: Mapping Rule Target Value Type
          enum:
            - string
            - number
            - boolean
            - date
    MappingRuleLookup:
      type: object
      description: Mapping rule lookup definition
    MappingUpdateData:
      type: object
      properties:
        description:
          type: string
          description: Description
        documentationURLs:
          type: array
          items:
            type: string
          nullable: true
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isPublic:
          type: boolean
          description: Public mapping indicator
        mappings:
          type: array
          items:
            $ref: '#/components/schemas/MappingUpdateRule'
        originId:
          type: string
        readme:
          type: string
          nullable: true
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
    MappingUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            mapping:
              $ref: '#/components/schemas/MappingUpdateData'
    MappingUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/MappingUpdateData'
      xml:
        name: request
    MappingUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            mapping:
              $ref: '#/components/schemas/Mapping'
    MappingUpdateRule:
      type: object
      description: Mapping Rule
      properties:
        default:
          type: object
          description: Mapping Rule Source Default Value if Source is Missing
        desc:
          type: string
          description: Explanation of the mapping rule
        enabled:
          type: boolean
          description: Is Mapping Rule Enabled
        lookup:
          $ref: '#/components/schemas/MappingRuleLookup'
        missing:
          type: object
          description: Mapping Rule Source Value if Source is Missing
        name:
          type: string
          description: Mapping Rule Name
        options:
          type: string
          description: Mapping rule config options (default - normal)
          enum:
            - normal
            - hidden
            - readonly
            - restricted
            - sensitive
        readme:
          type: string
          description: Warning about mapping rule changes
        require:
          type: boolean
          description: Is Mapping Rule Source Required
        source:
          type: string
          description: Mapping Rule Source
        target:
          type: string
          description: Mapping Rule Target
        type:
          type: string
          description: Mapping Rule Target Value Type
          enum:
            - string
            - number
            - boolean
            - date
    MappingsDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    MappingsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    MappingsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Mappings Filter
          properties:
            connectorId:
              type: array
              items:
                type: string
              description: Mappings by list of connectorId
            desc:
              type: string
              description: Fetch mappings by description (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            mappingId:
              type: array
              items:
                type: string
              description: Mappings by list of mappingId
            mappingsTarget:
              type: array
              items:
                type: string
              description: Mappings by list of mappings[].target
            originId:
              type: array
              items:
                type: string
              description: Mappings by list of originId
            tags:
              $ref: '#/components/schemas/EntityTags'
            uuid:
              type: array
              items:
                type: string
              description: Mappings by list of UUIDs
            visibility:
              type: array
              items:
                $ref: '#/components/schemas/ConnectorVisibility'
              description: Retrieve mappings by computed visibility
    MappingsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/MappingsListFilter'
    MappingsListFilter:
      allOf:
        - $ref: '#/components/schemas/MappingsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Mappings Filter
    MappingsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/MappingsListFilter'
            mappings:
              type: array
              items:
                $ref: '#/components/schemas/Mapping'
            pagination:
              $ref: '#/components/schemas/Pagination'
    MappingsMergeMode:
      type: string
      enum:
        - origin
        - none
    Methods:
      type: object
      description: Access Methods Allowed
      properties:
        account_payment:
          $ref: '#/components/schemas/Permissions'
        accounts:
          $ref: '#/components/schemas/Permissions'
        apikey:
          $ref: '#/components/schemas/Permissions'
        arrivals:
          $ref: '#/components/schemas/Permissions'
        automation_rules:
          $ref: '#/components/schemas/Permissions'
        automation_runs:
          $ref: '#/components/schemas/Permissions'
        automations:
          $ref: '#/components/schemas/Permissions'
        catalog_products:
          $ref: '#/components/schemas/Permissions'
        catalogs:
          $ref: '#/components/schemas/Permissions'
        changelog:
          $ref: '#/components/schemas/Permissions'
        connectors:
          $ref: '#/components/schemas/Permissions'
        contacts:
          $ref: '#/components/schemas/Permissions'
        convert:
          type: string
          enum:
            - c
        custom_objects:
          $ref: '#/components/schemas/Permissions'
        customers:
          $ref: '#/components/schemas/Permissions'
        cycle_count_entries:
          $ref: '#/components/schemas/Permissions'
        cycle_counts:
          $ref: '#/components/schemas/Permissions'
        delivery_promises:
          $ref: '#/components/schemas/Permissions'
        entity_filters:
          $ref: '#/components/schemas/Permissions'
        entity_schemas:
          $ref: '#/components/schemas/Permissions'
        events:
          $ref: '#/components/schemas/Permissions'
        exception_categories:
          $ref: '#/components/schemas/Permissions'
        exception_filters:
          $ref: '#/components/schemas/Permissions'
        exceptions:
          $ref: '#/components/schemas/Permissions'
        fulfillment_rates:
          $ref: '#/components/schemas/Permissions'
        fulfillments:
          $ref: '#/components/schemas/Permissions'
        functions:
          $ref: '#/components/schemas/Permissions'
        integration_actions:
          $ref: '#/components/schemas/Permissions'
        integration_state:
          $ref: '#/components/schemas/Permissions'
        integrations:
          $ref: '#/components/schemas/Permissions'
        inventory:
          $ref: '#/components/schemas/Permissions'
        inventory_groups:
          $ref: '#/components/schemas/Permissions'
        inventoryrules:
          $ref: '#/components/schemas/Permissions'
        invoices:
          $ref: '#/components/schemas/Permissions'
        jobs:
          $ref: '#/components/schemas/Permissions'
        labels:
          $ref: '#/components/schemas/Permissions'
        location_groups:
          $ref: '#/components/schemas/Permissions'
        locations:
          $ref: '#/components/schemas/Permissions'
        lookup_objects:
          $ref: '#/components/schemas/Permissions'
        mappings:
          $ref: '#/components/schemas/Permissions'
        metrics:
          $ref: '#/components/schemas/Permissions'
        notes:
          $ref: '#/components/schemas/Permissions'
        order_routing_runs:
          $ref: '#/components/schemas/Permissions'
        order_routings:
          $ref: '#/components/schemas/Permissions'
        orders:
          $ref: '#/components/schemas/Permissions'
        organizations:
          $ref: '#/components/schemas/Permissions'
        payments:
          $ref: '#/components/schemas/Permissions'
        pricing:
          $ref: '#/components/schemas/Permissions'
        privacy:
          $ref: '#/components/schemas/Permissions'
        products:
          $ref: '#/components/schemas/Permissions'
        purchases:
          $ref: '#/components/schemas/Permissions'
        receipts:
          $ref: '#/components/schemas/Permissions'
        references:
          $ref: '#/components/schemas/PermissionsReadOnly'
        refunds:
          $ref: '#/components/schemas/Permissions'
        returns:
          $ref: '#/components/schemas/Permissions'
        roles:
          $ref: '#/components/schemas/Permissions'
        routings:
          $ref: '#/components/schemas/Permissions'
        schedules:
          $ref: '#/components/schemas/Permissions'
        shipment_boxes:
          $ref: '#/components/schemas/Permissions'
        shipments:
          $ref: '#/components/schemas/Permissions'
        shipping_methods:
          $ref: '#/components/schemas/Permissions'
        statement_transactions:
          $ref: '#/components/schemas/Permissions'
        statements:
          $ref: '#/components/schemas/Permissions'
        suppliers:
          $ref: '#/components/schemas/Permissions'
        trackings:
          $ref: '#/components/schemas/Permissions'
        transfers:
          $ref: '#/components/schemas/Permissions'
        usagedata:
          $ref: '#/components/schemas/Permissions'
        usageplans:
          $ref: '#/components/schemas/Permissions'
        users:
          $ref: '#/components/schemas/Permissions'
        vendor_schemas:
          $ref: '#/components/schemas/Permissions'
        webhooks:
          $ref: '#/components/schemas/Permissions'
    MethodsUpdateData:
      type: object
      description: Access Methods Allowed
      properties:
        account_payment:
          $ref: '#/components/schemas/PermissionsNullable'
        accounts:
          $ref: '#/components/schemas/PermissionsNullable'
        apikey:
          $ref: '#/components/schemas/PermissionsNullable'
        arrivals:
          $ref: '#/components/schemas/PermissionsNullable'
        automation_rules:
          $ref: '#/components/schemas/PermissionsNullable'
        automation_runs:
          $ref: '#/components/schemas/PermissionsNullable'
        automations:
          $ref: '#/components/schemas/PermissionsNullable'
        catalog_products:
          $ref: '#/components/schemas/PermissionsNullable'
        catalogs:
          $ref: '#/components/schemas/PermissionsNullable'
        changelog:
          $ref: '#/components/schemas/PermissionsNullable'
        connectors:
          $ref: '#/components/schemas/PermissionsNullable'
        contacts:
          $ref: '#/components/schemas/PermissionsNullable'
        convert:
          type: string
          nullable: true
          enum:
            - c
        custom_objects:
          $ref: '#/components/schemas/PermissionsNullable'
        customers:
          $ref: '#/components/schemas/PermissionsNullable'
        cycle_count_entries:
          $ref: '#/components/schemas/PermissionsNullable'
        cycle_counts:
          $ref: '#/components/schemas/PermissionsNullable'
        delivery_promises:
          $ref: '#/components/schemas/PermissionsNullable'
        entity_filters:
          $ref: '#/components/schemas/PermissionsNullable'
        entity_schemas:
          $ref: '#/components/schemas/PermissionsNullable'
        events:
          $ref: '#/components/schemas/PermissionsNullable'
        exception_categories:
          $ref: '#/components/schemas/PermissionsNullable'
        exception_filters:
          $ref: '#/components/schemas/PermissionsNullable'
        exceptions:
          $ref: '#/components/schemas/PermissionsNullable'
        fulfillment_rates:
          $ref: '#/components/schemas/PermissionsNullable'
        fulfillments:
          $ref: '#/components/schemas/PermissionsNullable'
        functions:
          $ref: '#/components/schemas/PermissionsNullable'
        integration_actions:
          $ref: '#/components/schemas/PermissionsNullable'
        integration_state:
          $ref: '#/components/schemas/PermissionsNullable'
        integrations:
          $ref: '#/components/schemas/PermissionsNullable'
        inventory:
          $ref: '#/components/schemas/PermissionsNullable'
        inventory_groups:
          $ref: '#/components/schemas/PermissionsNullable'
        inventoryrules:
          $ref: '#/components/schemas/PermissionsNullable'
        invoices:
          $ref: '#/components/schemas/PermissionsNullable'
        jobs:
          $ref: '#/components/schemas/PermissionsNullable'
        labels:
          $ref: '#/components/schemas/PermissionsNullable'
        location_groups:
          $ref: '#/components/schemas/PermissionsNullable'
        locations:
          $ref: '#/components/schemas/PermissionsNullable'
        lookup_objects:
          $ref: '#/components/schemas/PermissionsNullable'
        mappings:
          $ref: '#/components/schemas/PermissionsNullable'
        metrics:
          $ref: '#/components/schemas/PermissionsNullable'
        notes:
          $ref: '#/components/schemas/PermissionsNullable'
        order_routing_runs:
          $ref: '#/components/schemas/PermissionsNullable'
        order_routings:
          $ref: '#/components/schemas/PermissionsNullable'
        orders:
          $ref: '#/components/schemas/PermissionsNullable'
        organizations:
          $ref: '#/components/schemas/PermissionsNullable'
        payments:
          $ref: '#/components/schemas/PermissionsNullable'
        pricing:
          $ref: '#/components/schemas/PermissionsNullable'
        privacy:
          $ref: '#/components/schemas/PermissionsNullable'
        products:
          $ref: '#/components/schemas/PermissionsNullable'
        purchases:
          $ref: '#/components/schemas/PermissionsNullable'
        receipts:
          $ref: '#/components/schemas/PermissionsNullable'
        references:
          $ref: '#/components/schemas/PermissionsReadOnlyNullable'
        refunds:
          $ref: '#/components/schemas/PermissionsNullable'
        returns:
          $ref: '#/components/schemas/PermissionsNullable'
        roles:
          $ref: '#/components/schemas/PermissionsNullable'
        routings:
          $ref: '#/components/schemas/PermissionsNullable'
        schedules:
          $ref: '#/components/schemas/PermissionsNullable'
        shipment_boxes:
          $ref: '#/components/schemas/PermissionsNullable'
        shipments:
          $ref: '#/components/schemas/PermissionsNullable'
        shipping_methods:
          $ref: '#/components/schemas/PermissionsNullable'
        statement_transactions:
          $ref: '#/components/schemas/PermissionsNullable'
        statements:
          $ref: '#/components/schemas/PermissionsNullable'
        suppliers:
          $ref: '#/components/schemas/PermissionsNullable'
        trackings:
          $ref: '#/components/schemas/PermissionsNullable'
        transfers:
          $ref: '#/components/schemas/PermissionsNullable'
        usagedata:
          $ref: '#/components/schemas/PermissionsNullable'
        usageplans:
          $ref: '#/components/schemas/PermissionsNullable'
        users:
          $ref: '#/components/schemas/PermissionsNullable'
        vendor_schemas:
          $ref: '#/components/schemas/PermissionsNullable'
        webhooks:
          $ref: '#/components/schemas/PermissionsNullable'
    MetricDataPoint:
      allOf:
        - type: object
          properties:
            pointId:
              type: string
              description: Auto Generated
        - $ref: '#/components/schemas/MetricDataPointCreateData'
        - $ref: '#/components/schemas/CoreObject'
    MetricDataPointCreateData:
      type: object
      xml:
        name: dataPoint
      required:
        - date
        - name
        - value
      properties:
        date:
          type: string
          format: date
          description: Date stamp (- day of year)
        name:
          type: string
          description: |
            Name of metric. Format - '{metric_type}[@{entity_filter}]':
            - {metric_type} identifies a numerical characteristic of an entity collection
            - {entity_filter} identifies a sub-collection of entities that is characterized by the metric (- optional part)
        value:
          type: number
          description: Metric value
    MetricDataPointCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        dataPoint:
          $ref: '#/components/schemas/MetricDataPoint'
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
    MetricDataPointFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    MetricDataPointFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            dataPoint:
              $ref: '#/components/schemas/MetricDataPoint'
    MetricDataPointsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            dataPoints:
              type: array
              items:
                $ref: '#/components/schemas/MetricDataPointCreateResult'
    MetricDataPointsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/MetricDataPointCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 100
    MetricDataPointsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            dataPoints:
              type: array
              items:
                $ref: '#/components/schemas/MetricDataPointCreateResult'
    MetricDataPointsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/MetricDataPointsListFilter'
    MetricDataPointsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Metrics Filter
          properties:
            after:
              type: string
              format: date
              description: Select data points after this date
            agg:
              type: string
              enum:
                - avg
                - count
                - max
                - min
                - sum
              description: |
                Return aggregations for specified groups of selected points. 
                The grouping type is specified by 'aggBy'. The 'agg' specifies aggregation 
                method. With specified 'aggBy', the default 'agg' is `count`.
            aggBy:
              type: string
              enum:
                - name
                - type
              description: |
                Return aggregations for specified groups of selected points. 
                The aggregation method is specified by 'agg'. The 'aggBy' specifies 
                grouping method, - either by metric name (-`name`) or metric type (`type`). 
                With specified 'agg', the default 'aggBy' is `name`. 
            before:
              type: string
              format: date
              description: Select data points before this date
            date:
              type: array
              items:
                type: string
                format: date
              description: Select data points by `date` list
            name:
              type: array
              items:
                type: string
              description: Select data points by `name` list
            pointId:
              type: array
              items:
                type: string
              description: Select data points by `pointId` list
    MetricDataPointsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - dataPoints
          properties:
            dataPoints:
              type: array
              items:
                $ref: '#/components/schemas/MetricDataPoint'
            filters:
              $ref: '#/components/schemas/MetricDataPointsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    NameValue:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
    Note:
      allOf:
        - type: object
          properties:
            hasPostValue:
              type: boolean
              description: Indicates the postValue is defined
            hasPreValue:
              type: boolean
              description: Indicates the preValue is defined
            noteId:
              type: string
              description: Note Id
            userId:
              type: string
              description: Author
        - $ref: '#/components/schemas/NoteCreateData'
        - $ref: '#/components/schemas/CoreObject'
    NoteAction:
      type: string
      description: Action enum
      enum:
        - create
        - update
        - delete
    NoteChangeSource:
      type: string
      description: Change source
      enum:
        - ui
        - api
        - other
    NoteChangeType:
      type: string
      description: Change type
      enum:
        - config
        - comment
        - other
    NoteCreateData:
      type: object
      required:
        - entityId
        - entityType
        - changeSource
        - changeType
      properties:
        changeSource:
          $ref: '#/components/schemas/NoteChangeSource'
        changeType:
          $ref: '#/components/schemas/NoteChangeType'
        entityId:
          type: string
          description: Target entity ID
        entityType:
          type: string
          description: Target entity type
        action:
          $ref: '#/components/schemas/NoteAction'
        eventId:
          type: string
          description: Event ID associated with note
        extEntityId:
          type: string
          description: Target entity external ID
        generatedText:
          type: string
          description: Generated summary of changes
        internal:
          $ref: '#/components/schemas/InternalInfo'
        isPublic:
          type: boolean
          description: Public note indicator (default - true)
        postValue:
          type: object
          description: Value of target entity after change
        preValue:
          type: object
          description: Value of target entity before change
        reference:
          type: string
          description: External (human-readable) reference of the target entity, e.g. the order's extOrderId; complements entityId/entityType
        relatedEntityId:
          type: string
          description: Related entity ID
        relatedEntityType:
          type: string
          description: Related entity type
        relatedReference:
          type: string
          description: External (human-readable) reference of the related entity, e.g. a shipment's extShipmentId; complements relatedEntityId/relatedEntityType
        severity:
          $ref: '#/components/schemas/NoteSeverity'
        status:
          $ref: '#/components/schemas/NoteStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        text:
          type: string
          description: Note content
        userId:
          type: string
          description: Author user ID (defaults to the authenticated user)
          x-p17Private: true
    NoteCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            note:
              $ref: '#/components/schemas/NoteCreateData'
    NoteCreateRequest:
      allOf:
        - $ref: '#/components/schemas/NoteCreateData'
      xml:
        name: request
    NoteCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            note:
              $ref: '#/components/schemas/Note'
    NoteFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    NoteFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            note:
              $ref: '#/components/schemas/Note'
    NoteSeverity:
      type: string
      description: Note severity
      enum:
        - normal
        - low
        - high
    NoteStatus:
      type: string
      description: Note status
      enum:
        - valid
    NoteUpdateData:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/NoteAction'
        generatedText:
          type: string
          description: Generated summary of changes
          nullable: true
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isPublic:
          type: boolean
          description: Public note indicator
        postValue:
          type: object
          description: Value of target entity after change
          nullable: true
        preValue:
          type: object
          description: Value of target entity before change
          nullable: true
        reference:
          type: string
          description: External (human-readable) reference of the target entity, e.g. the order's extOrderId; complements entityId/entityType
        relatedEntityId:
          type: string
          description: Related entity ID
        relatedEntityType:
          type: string
          description: Related entity type
        relatedReference:
          type: string
          description: External (human-readable) reference of the related entity, e.g. a shipment's extShipmentId; complements relatedEntityId/relatedEntityType
        severity:
          $ref: '#/components/schemas/NoteSeverity'
        status:
          $ref: '#/components/schemas/NoteStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
        text:
          type: string
          description: Note content
    NoteUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            note:
              $ref: '#/components/schemas/NoteUpdateData'
    NoteUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/NoteUpdateData'
      xml:
        name: request
    NoteUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            note:
              $ref: '#/components/schemas/Note'
    NotesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/NotesListFilter'
    NotesListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Notes Filter
          properties:
            entityId:
              type: array
              items:
                type: string
              description: Notes by entityId list
            entityType:
              type: array
              items:
                type: string
              description: Notes by entityType list
            eventId:
              type: array
              items:
                type: string
              description: Notes by eventId list
            noteId:
              type: array
              items:
                type: string
              description: Notes by noteId list
            severity:
              type: array
              items:
                $ref: '#/components/schemas/NoteSeverity'
              description: Notes by severity list
            status:
              type: array
              items:
                $ref: '#/components/schemas/NoteStatus'
              description: Notes by status list
            tags:
              $ref: '#/components/schemas/EntityTags'
    NotesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/NotesListFilter'
            notes:
              type: array
              items:
                $ref: '#/components/schemas/Note'
            pagination:
              $ref: '#/components/schemas/Pagination'
    NotificationSettings:
      type: object
      properties:
        alertRecipients:
          type: array
          items:
            type: string
            format: email
          description: Email addresses for alert recipients
        emailAlerts:
          type: boolean
          description: Send email alerts
        smsAlerts:
          type: boolean
          description: Send SMS alerts
    OperationalSettings:
      type: object
      properties:
        autoAcceptOrders:
          type: boolean
          description: Automatically accept orders
        bopisEnabled:
          type: boolean
          description: Buy Online Pickup In Store enabled
        curbsideEnabled:
          type: boolean
          description: Curbside pickup enabled
        labelIntegrationId:
          type: string
          nullable: true
          description: Integration ID of the shipping label provider for this store. Overrides the org-level default when set. Set to null to clear and fall back to the org-level default.
        maxConcurrentOrders:
          type: integer
          minimum: 0
          description: Maximum concurrent orders being processed
        partialFulfillmentMode:
          $ref: '#/components/schemas/PartialFulfillmentMode'
        partialFulfillmentModeByType:
          $ref: '#/components/schemas/PartialFulfillmentModeByType'
        shipFromStoreEnabled:
          type: boolean
          description: Ship from store enabled
        waveManagementConfig:
          $ref: '#/components/schemas/WaveManagementConfig'
    Order:
      allOf:
        - $ref: '#/components/schemas/OrderCreateData'
        - type: object
          properties:
            acknowledgement:
              type: array
              description: Acknowledgements from integrations
              items:
                $ref: '#/components/schemas/OrderAcknowledgment'
            autoEngUpdateStatus:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
            autoEngUpdateStatusUpdatedAt:
              $ref: '#/components/schemas/AutoEngUpdateStatusUpdatedAt'
            disposition:
              type: array
              items:
                $ref: '#/components/schemas/OrderDispositionType'
              description: Order disposition
            dispositions:
              type: array
              items:
                $ref: '#/components/schemas/OrderLineDisposition'
              description: Disposition of line items
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the order
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the order
            fulfilledAt:
              type: string
              format: date-time
              description: Fulfillment timestamp
            integration:
              type: string
              description: Reference to integration that created an item
            isMultiDestination:
              type: boolean
              description: Multi-destination order indicator
            lineItemsEdits:
              type: array
              items:
                $ref: '#/components/schemas/OrderLineItemBasic'
            orderId:
              type: string
              description: Auto Generated
            shipByStatus:
              $ref: '#/components/schemas/OrderShipByStatus'
            shipmentLocationIds:
              type: array
              items:
                type: string
              description: Fulfillment location IDs of the order's shipments (system-maintained)
            status:
              $ref: '#/components/schemas/OrderStatus'
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/OrderChangelogEntry'
        - $ref: '#/components/schemas/CoreObject'
    OrderAcknowledgeData:
      type: object
      properties:
        integration:
          type: string
          description: The ID of acknowledging integration
    OrderAcknowledgeError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            options:
              $ref: '#/components/schemas/OrderAcknowledgeData'
    OrderAcknowledgeRequest:
      allOf:
        - $ref: '#/components/schemas/OrderAcknowledgeData'
      xml:
        name: request
    OrderAcknowledgeResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
    OrderAcknowledgment:
      type: object
      properties:
        acknowledgedAt:
          type: string
          format: date-time
        integration:
          type: string
    OrderChangelogEntry:
      allOf:
        - type: object
          properties:
            extOrderId:
              type: string
              description: External Order Id
            orderId:
              type: string
              description: Order Id
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    OrderCreateData:
      type: object
      xml:
        name: order
      required:
        - extOrderId
      properties:
        extOrderId:
          type: string
          description: External Order ID
        additionalCharges:
          type: array
          description: Additional charges
          items:
            $ref: '#/components/schemas/AdditionalCharge'
        autoEngUpdateStatus:
          $ref: '#/components/schemas/AutoEngUpdateStatus'
        billingAddress:
          $ref: '#/components/schemas/Address'
          description: Purchaser Address
        currency:
          type: string
          description: Order currency code
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        customer:
          $ref: '#/components/schemas/OrderCustomer'
        customerPONumber:
          type: string
          nullable: true
        deliveryProfiles:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryProfile'
        disableShipmentsReuse:
          type: boolean
          description: Hint to whether shipmentId should be re-used, or not
        discounts:
          type: array
          description: Discounts
          items:
            $ref: '#/components/schemas/Discount'
        dynamicLocationGroup:
          type: array
          description: Named location groups defined inline on the order
          items:
            type: object
            required:
              - name
              - locationIds
            properties:
              name:
                type: string
                description: Identifier used to reference this group from dynamicRoutingRules
              locationIds:
                type: array
                description: Location IDs in this group
                items:
                  type: string
        expectedDeliveryDate:
          type: string
          format: date-time
          description: First Priority to be respected
        extOrderApiId:
          type: string
          description: External System Order API ID
        extOrderCreatedAt:
          type: string
          format: date-time
          description: When the order was created at source
        extOrderUpdatedAt:
          type: string
          format: date-time
          description: When the order was updated at source
        extOrderUrl:
          type: string
          description: Order Url in External System
        fulfillmentStatus:
          type: string
          description: status of the fulfillment
        giftNote:
          type: string
          description: Order Gift note
        holdOptions:
          $ref: '#/components/schemas/OrderHoldOptions'
          nullable: true
        holdUntil:
          type: string
          format: date-time
        incoterms:
          type: string
          description: International Commercial Terms
        internal:
          $ref: '#/components/schemas/InternalInfo'
        isMultiAddress:
          type: boolean
          description: Indicates the order is a multi address destination order (default - false)
        lastRerunRoutingTrigger:
          $ref: '#/components/schemas/LastRerunRoutingTrigger'
        lastRoutedAt:
          type: string
          format: date-time
          description: When the order was last routed.
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/OrderLineItem'
        locationId:
          type: string
          description: Id of location defined in organization. Used as item origin for shipment.
        orderDiscount:
          type: number
          format: float
          description: Order Discount
        orderNote:
          type: string
          description: Order Notes
        orderSource:
          type: string
          description: The original order platform, walmart, etsy, etc
        orderSourceType:
          $ref: '#/components/schemas/OrderType'
        orderTax:
          type: number
          format: float
          description: Order Tax
        originalOrderId:
          type: string
          description: Internal orderId of the original order that this order replaces. Set on the replacement, not the original; one original may have many replacements. An empty string is rejected; omit the key when there is no original.
        paymentStatus:
          type: string
          description: status of the payment
        paymentTerms:
          description: Payments terms
          $ref: '#/components/schemas/OrderPaymentTerms'
        payments:
          type: array
          description: Payments
          items:
            $ref: '#/components/schemas/Payment'
        preferredLocationGroupId:
          type: array
          items:
            type: string
          description: List of location-group IDs
        priority:
          $ref: '#/components/schemas/Priority'
        privacyPolicy:
          type: array
          items:
            $ref: '#/components/schemas/PrivacyPolicy'
        refunds:
          type: array
          description: Additional charges
          items:
            $ref: '#/components/schemas/OrderRefund'
        replacementReason:
          $ref: '#/components/schemas/OrderReplacementReason'
        requireShippingLabels:
          type: boolean
          description: Indicates if fetching of shipping labels is required
        respectLocationId:
          type: boolean
          description: Use locationId if defined on order level or lineItems level as valid item origin for shipment (pre-route).
        routingStatus:
          $ref: '#/components/schemas/RoutingStatus'
          description: order routing status
        shipAfterDate:
          type: string
          format: date-time
          description: Ship After Date
        shipByDate:
          type: string
          format: date-time
          description: 'Date-time by which the order is expected to ship (SLA target, typically set by the selling channel). Not a hard deadline: when the date passes an unfulfilled order keeps processing normally — no error is returned and fulfillment is not blocked — but the system marks its shipByStatus as breached (or complied when fulfilled on time). Example: an order with shipByDate 2026-07-03 still unfulfilled on 2026-07-04 can still be fulfilled; its shipByStatus becomes breached'
        shipCancelByDate:
          type: string
          format: date-time
          description: Latest date-time the selling channel allows the order to ship; after this date the channel expects the order to be cancelled rather than shipped. Informational — Pipe17 does not cancel the order automatically when the date passes
        shippingAddress:
          $ref: '#/components/schemas/Address'
          description: Recipient Address
        shippingCarrier:
          type: string
          description: Required with ShippingClass, 2nd Priority
        shippingClass:
          type: string
          description: Required with ShippingCarrier, 2nd Priority
        shippingCode:
          type: string
          description: 1st Priority
        shippingDestinations:
          type: array
          items:
            $ref: '#/components/schemas/Destination'
        shippingNote:
          type: string
          description: Shipping Notes
        shippingPrice:
          type: number
          format: float
          description: Shipping price
        skuRules:
          type: object
          description: |
            SKU-level fulfillment rules, keyed by the **original line item SKU**. Defines alternate ways
            to fulfill a line when the ordered SKU cannot ship as-is (out of stock, must be split into
            components, or has special shipping constraints).

            Each rule's `swaps` field is a 3-level nested array — `[swapOption][andGroup][candidate]`:
              - **swapOption** (outer, priority-ordered): alternative fulfillment strategies. The router tries them top-down and picks the first that resolves fully.
              - **andGroup** (middle): items that must ALL resolve together within the chosen swap option (use this for "A + B + C together").
              - **candidate** (inner, priority-ordered): substitute SKUs within an AND group. Pick the first one with available inventory.

            **Example scenario** — a customer orders one `12-PACK`, with pack-type fallbacks if it's out of stock:

            ```json
            "skuRules": {
              "12-PACK": {
                "swaps": [
                  [ [{ "sku": "12-PACK", "qty": "1"  }] ],
                  [ [{ "sku": "6-PACK",  "qty": "2"  }] ],
                  [ [{ "sku": "3-PACK",  "qty": "4"  }] ],
                  [ [{ "sku": "SINGLE",  "qty": "12" }] ]
                ]
              }
            }
            ```

            Router behavior: try the original `12-PACK` first; if out of stock, fulfill with two `6-PACK`s; else four `3-PACK`s; else twelve `SINGLE`s. A richer "dynamic bundle" case uses multiple AND groups per swap option — e.g., a gift basket composed of a fragrance + a lotion + a toothbrush, each with ranked substitutes.
          additionalProperties:
            $ref: '#/components/schemas/OrderSkuRule'
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/OrderStatus'
        subTotalPrice:
          type: number
          format: float
          description: 'Order subtotal: the sum of line item prices (unit price times quantity), typically before order-level adjustments — excludes orderDiscount, orderTax, and shipping charges. Provided by the order source; Pipe17 stores it as-is and does not recalculate it'
        tags:
          $ref: '#/components/schemas/EntityTags'
        taxes:
          type: array
          items:
            $ref: '#/components/schemas/OrderTax'
        timestamp:
          type: string
          format: date-time
          description: General Purpose Time Stamp
        totalPrice:
          type: number
          format: float
          description: Total Price
    OrderCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        order:
          $ref: '#/components/schemas/Order'
        status:
          type: string
          enum:
            - submitted
            - failed
    OrderCustomer:
      type: object
      properties:
        company:
          type: string
        customerId:
          type: string
        extCompanyCustomerId:
          type: string
        extCustomerId:
          type: string
        extLocationCustomerId:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        type:
          $ref: '#/components/schemas/OrderCustomerType'
    OrderCustomerType:
      type: string
      description: Order customer type
      enum:
        - individual
        - company
    OrderDispositionType:
      type: string
      enum:
        - partiallyRouted
        - routed
        - partiallySent
        - sent
        - partiallyFulfilled
        - fulfilled
        - partiallyCanceled
        - canceled
        - partiallyFailed
        - failed
        - partiallyRejected
        - rejected
        - partiallyUnrouted
        - unrouted
        - partiallyUnsent
        - unsent
        - partiallyUnfulfilled
        - unfulfilled
      description: Order disposition type
    OrderFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    OrderFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            order:
              $ref: '#/components/schemas/Order'
    OrderHoldNextStatus:
      type: string
      description: |
        Status an order moves to when a hold is released. For a timed hold it is the
        target status applied when `holdUntil` is reached; for a conditional hold it is
        the fallback applied at `holdUntil` when the condition was never met.

        `canceled` cancels the order in Pipe17 only; the cancellation is not pushed to
        the order's source channel.
      enum:
        - reviewRequired
        - readyForFulfillment
        - canceled
    OrderHoldOptions:
      type: object
      description: |
        Hold state for an order, present while the order is `onHold` and cleared to
        `null` on release.
      properties:
        holdConditionAutomationRuleId:
          type: string
          nullable: true
          description: |
            For a `CONDITIONAL` hold, the automation rule whose condition is evaluated to
            release the order early. The condition is read from the rule at evaluation
            time; if the rule no longer exists the order falls back to `holdNextStatus`
            once `holdUntil` is reached.
        holdNextStatus:
          $ref: '#/components/schemas/OrderHoldNextStatus'
          nullable: true
        holdType:
          $ref: '#/components/schemas/HoldType'
          nullable: true
        holdUntil:
          type: string
          format: date-time
          nullable: true
          description: When a timed hold releases, or the fallback deadline for a conditional hold.
    OrderLineDisposition:
      type: object
      properties:
        uniqueId:
          type: string
          description: Line uniqueId
        values:
          type: array
          items:
            type: object
            properties:
              type:
                $ref: '#/components/schemas/LineDispositionType'
              quantity:
                type: number
                format: float
                description: Item quantity
    OrderLineItem:
      allOf:
        - $ref: '#/components/schemas/OrderLineItemBasic'
        - type: object
          properties:
            canceled:
              type: number
              format: float
              description: quantity canceled as reported by source
            fulfillable:
              type: number
              format: float
              description: quantity fulfillable as reported by source
            fulfilled:
              type: number
              format: float
              description: quantity fulfilled as reported by source
            ordered:
              type: number
              format: float
              description: original quantity as reported by source
            preferredLocationGroupId:
              type: array
              items:
                type: string
              description: List of location-group IDs
            refunded:
              type: number
              format: float
              description: quantity refunded as reported by source
            reported:
              type: number
              format: float
            returned:
              type: number
              format: float
              description: quantity returned as reported by source
    OrderLineItemBasic:
      type: object
      required:
        - uniqueId
        - sku
        - quantity
        - requiresShipping
      properties:
        quantity:
          type: number
          format: float
          description: Item Quantity
        requiresShipping:
          type: boolean
        sku:
          type: string
          description: Item SKU
        uniqueId:
          type: string
          description: Item unique Id (within an order)
        components:
          type: array
          items:
            $ref: '#/components/schemas/OrderLineItemComponent'
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        deliveryMethod:
          description: Delivery method/type for this lineItem
          $ref: '#/components/schemas/DeliveryMethod'
        deliveryProfileId:
          type: string
          description: Delivery profile Id for this lineItem
        itemDiscount:
          type: number
          format: float
          description: Line discount (item discount * quantity)
        itemPrice:
          type: number
          format: float
          description: Item price w/o taxes and discounts (line amount / quantity)
        itemTax:
          type: number
          format: float
          description: Line tax ((itemPrice * quantity - itemDiscount) * tax ratio)
        locationId:
          type: string
        name:
          type: string
          description: Item Name or Description
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        requiresShippingSource:
          $ref: '#/components/schemas/RequiresShippingSource'
        routed:
          type: boolean
        shippingGroup:
          type: integer
          minimum: 1
          description: Item Shipping Group. Line items with the same shipping group will be shipped together after all shipping options for each line item are met.
        shippingOptions:
          type: array
          items:
            $ref: '#/components/schemas/OrderLineItemShippingOption'
        taxable:
          type: boolean
        trackedAtSourceChannel:
          type: boolean
        upc:
          type: string
          description: Item UPC
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    OrderLineItemComponent:
      type: object
      required:
        - sku
        - quantity
      properties:
        quantity:
          type: number
          format: float
        sku:
          type: string
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    OrderLineItemShippingOption:
      type: string
      enum:
        - SIOC
        - polyBagging
        - bubbleWrapping
        - taping
        - singleLocationShipping
        - allOrNoneShipping
    OrderPaymentTerm:
      type: string
      description: order payment term
      enum:
        - net
        - fixed
        - fulfillment
        - receipt
        - unknown
        - other
    OrderPaymentTerms:
      required:
        - term
      type: object
      description: order payment terms
      properties:
        term:
          $ref: '#/components/schemas/OrderPaymentTerm'
        depositPercentage:
          type: number
        dueDate:
          type: string
          format: date-time
        dueInDays:
          type: number
        note:
          type: string
    OrderRefund:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/OrderRefundType'
          description: Refund type
        value:
          type: number
          description: absolute value of refund
        label:
          type: string
          description: optional refund label
        lineItemId:
          type: string
          description: optional reference to lineItems[].uniqueId for lineItem refund
        lineItemQuantity:
          type: number
          description: optional quantity for lineItem refund
        lineItemRestock:
          type: boolean
          description: optional restock attribute for lineItem refund
        processedAt:
          type: string
          format: date-time
          description: Refund processing time
        reference:
          type: string
          description: optional id/name for refund
    OrderRefundType:
      type: string
      description: Order refund type
      enum:
        - lineItem
        - lineItemTax
        - lineItemDiscount
        - shipping
        - shippingTax
        - shippingDiscount
        - other
        - otherTax
        - otherDiscount
    OrderReplacementReason:
      type: string
      enum:
        - damaged
        - lostInTransit
        - wrongItem
        - other
    OrderRouting:
      allOf:
        - type: object
          properties:
            routingId:
              type: string
              description: Routing ID
        - $ref: '#/components/schemas/OrderRoutingCreateData'
        - $ref: '#/components/schemas/CoreObject'
    OrderRoutingCreateData:
      type: object
      properties:
        compositeScoring:
          $ref: '#/components/schemas/CompositeScoringConfig'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        routingStrategy:
          $ref: '#/components/schemas/OrderRoutingStrategy'
        rules:
          $ref: '#/components/schemas/OrderRoutingRules'
    OrderRoutingCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            routing:
              $ref: '#/components/schemas/OrderRouting'
    OrderRoutingCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            routing:
              $ref: '#/components/schemas/OrderRouting'
    OrderRoutingFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    OrderRoutingFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            routing:
              $ref: '#/components/schemas/OrderRouting'
    OrderRoutingListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/OrderRoutingsListFilter'
    OrderRoutingListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/OrderRoutingsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            routings:
              type: array
              items:
                $ref: '#/components/schemas/OrderRouting'
    OrderRoutingRule:
      type: object
      description: Routing rule definition
    OrderRoutingRules:
      type: array
      items:
        $ref: '#/components/schemas/OrderRoutingRule'
      description: Routing rules definition
    OrderRoutingRun:
      allOf:
        - type: object
          required:
            - orderRoutingRunId
            - status
            - orderId
            - extOrderId
          properties:
            orderRoutingRunId:
              type: string
              description: The unique identifier of the order routing run.
        - $ref: '#/components/schemas/OrderRoutingRunCreateData'
        - $ref: '#/components/schemas/CoreObject'
    OrderRoutingRunCreateData:
      type: object
      required:
        - orderId
        - extOrderId
        - status
        - outcome
      properties:
        extOrderId:
          type: string
          description: The external id of the order that was processed.
        orderId:
          type: string
          description: The id of the order that was processed.
        outcome:
          $ref: '#/components/schemas/OrderRoutingRunOutcome'
        status:
          $ref: '#/components/schemas/OrderRoutingRunStatus'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        messages:
          $ref: '#/components/schemas/OrderRoutingRunMessages'
        orderProcessedAt:
          type: string
          format: date-time
          description: The date and time that the order was processed by Order Routing. In this context, processing means that the order was evaluated against the routing rules. This does not necessarily mean that the order was routed.
        snapshotS3Path:
          type: string
          readOnly: true
          description: Server-generated S3 key for the run snapshot payload (order state, inventory levels, routing rules evaluated, shipping requests, filters, and locations). Read-only, set by the server.
        snapshots:
          $ref: '#/components/schemas/OrderRoutingRunSnapshots'
    OrderRoutingRunCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            orderRoutingRun:
              $ref: '#/components/schemas/OrderRoutingRunCreateData'
    OrderRoutingRunCreateRequest:
      allOf:
        - $ref: '#/components/schemas/OrderRoutingRunCreateData'
      xml:
        name: request
    OrderRoutingRunCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            orderRoutingRun:
              $ref: '#/components/schemas/OrderRoutingRun'
            snapshotS3UploadUrl:
              type: string
              readOnly: true
              description: Presigned S3 upload URL for uploading the run snapshot payload. Only present in the create response. Expires after 15 minutes.
    OrderRoutingRunFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    OrderRoutingRunFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            orderRoutingRun:
              $ref: '#/components/schemas/OrderRoutingRun'
            snapshotS3DownloadUrl:
              type: string
              readOnly: true
              description: Presigned S3 download URL for the run snapshot payload. Only present on retrieve. Expires after 1 hour.
    OrderRoutingRunMessage:
      type: object
      required:
        - message
        - stage
      properties:
        message:
          type: string
          description: The message that was generated during the order routing run.
        stage:
          type: string
          description: The stage of the order routing run that the message was generated in.
          enum:
            - PRE_ROUTING
            - ROUTING
            - FINAL_SUMMARY
            - SYSTEM_FAILURE
        filterId:
          type: string
          description: The filter that the message is associated with.
        integrationId:
          type: string
          description: The integration that the message is associated with.
        inventoryId:
          type: string
          description: The inventory that the message is associated with.
        locationId:
          type: string
          description: The location that the message is associated with.
        orderId:
          type: string
          description: The order that the message is associated with.
        orderLineItemUniqueIds:
          type: array
          items:
            type: string
          description: The order line items that the message is associated with.
        routingId:
          type: string
          description: The order routing configuration that the message is associated with.
        ruleIndex:
          type: integer
          description: The index of the routing rule that the message is associated with.
        shipmentId:
          type: string
          description: The shipment that the message is associated with.
    OrderRoutingRunMessages:
      type: array
      items:
        $ref: '#/components/schemas/OrderRoutingRunMessage'
      description: Messages that are generated during the order routing run.
    OrderRoutingRunOutcome:
      type: object
      properties:
        arrivalIds:
          type: array
          items:
            type: string
          description: The arrivals that were created during the order routing run as the inbound leg of the purchase orders.
        exceptionIds:
          type: array
          items:
            type: string
          description: The exceptions that were created during the order routing run.
        purchaseIds:
          type: array
          items:
            type: string
          description: The purchase orders that were raised against a supplier during the order routing run.
        shipmentIds:
          type: array
          items:
            type: string
          description: The shipments that were created during the order routing run.
        transferIds:
          type: array
          items:
            type: string
          description: The transfer orders that were created during the order routing run to replenish a fulfillment location.
    OrderRoutingRunSnapshots:
      type: object
      properties:
        arrivals:
          type: array
          items:
            type: object
            additionalProperties: true
          description: The arrivals that were created during routing, as they were at the time of the run.
        exceptions:
          type: array
          items:
            type: object
            additionalProperties: true
          description: The exceptions that were created during routing.
        filters:
          type: array
          items:
            type: object
            additionalProperties: true
          description: The filters that were used for routing.
        integration:
          type: object
          additionalProperties: true
          description: The integration that was used for routing.
        inventory:
          type: array
          items:
            type: object
            additionalProperties: true
          description: The inventory that was used for routing.
        locations:
          type: array
          items:
            type: object
            additionalProperties: true
          description: The locations that were used for routing.
        order:
          $ref: '#/components/schemas/Order'
          description: The order that was processed.
        orderRouting:
          type: object
          additionalProperties: true
          description: The order routing configuration used for routing.
        purchases:
          type: array
          items:
            type: object
            additionalProperties: true
          description: The purchase orders that were created during routing, as they were at the time of the run.
        shipments:
          type: array
          items:
            type: object
            additionalProperties: true
          description: The shipments that were created or evaluated during routing.
        transfers:
          type: array
          items:
            type: object
            additionalProperties: true
          description: The transfer orders that were created during routing, as they were at the time of the run.
    OrderRoutingRunStatus:
      type: string
      enum:
        - FULLY_ROUTED
        - PARTIALLY_ROUTED
        - NOT_APPLICABLE
        - ERROR
      description: |
        The status of the order routing run:
        * `FULLY_ROUTED` - All line items in the order have been routed successfully
        * `PARTIALLY_ROUTED` - Some line items in the order have been routed successfully. Remaining line items could not be routed in this run.
        * `NOT_APPLICABLE` - The order is not in a state that can be routed.
        * `ERROR` - An error occurred while routing the order
    OrderRoutingRunUploadUrlResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            expiresIn:
              type: integer
              readOnly: true
              description: Number of seconds until the upload URL expires.
            snapshotS3UploadUrl:
              type: string
              readOnly: true
              description: Presigned S3 upload URL for uploading the run snapshot payload. Expires after 15 minutes.
    OrderRoutingRunsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/OrderRoutingRunsListFilter'
    OrderRoutingRunsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: Order routing runs list filter
          properties:
            extOrderId:
              $ref: '#/components/schemas/OrderRoutingRunsListFilterExtOrderId'
            orderId:
              $ref: '#/components/schemas/OrderRoutingRunsListFilterOrderId'
            orderRoutingRunId:
              $ref: '#/components/schemas/OrderRoutingRunsListFilterOrderRoutingRunId'
            status:
              $ref: '#/components/schemas/OrderRoutingRunsListFilterStatus'
    OrderRoutingRunsListFilterExtOrderId:
      description: Filter by matching extOrderId
      type: array
      items:
        type: string
    OrderRoutingRunsListFilterOrderId:
      description: Filter by matching orderId
      type: array
      items:
        type: string
    OrderRoutingRunsListFilterOrderRoutingRunId:
      type: array
      items:
        type: string
      description: Filter by matching orderRoutingRunId
    OrderRoutingRunsListFilterStatus:
      description: Filter by matching status
      type: array
      items:
        $ref: '#/components/schemas/OrderRoutingRunStatus'
    OrderRoutingRunsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/OrderRoutingRunsListFilter'
            orderRoutingRuns:
              type: array
              items:
                $ref: '#/components/schemas/OrderRoutingRun'
            pagination:
              $ref: '#/components/schemas/Pagination'
    OrderRoutingStrategy:
      type: string
      enum:
        - RULES
        - COMPOSITE_SCORING
      description: |
        Which routing engine evaluates this configuration. When absent the
        routing behaves as `RULES`, so existing configurations are unaffected.
        `COMPOSITE_SCORING` selects the deterministic composite scorer and
        requires `compositeScoring` to be populated.
    OrderRoutingUpdateData:
      type: object
      properties:
        compositeScoring:
          $ref: '#/components/schemas/CompositeScoringConfig'
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        routingStrategy:
          $ref: '#/components/schemas/OrderRoutingStrategy'
        rules:
          $ref: '#/components/schemas/OrderRoutingRules'
    OrderRoutingUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    OrderRoutingUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/OrderRoutingUpdateData'
      xml:
        name: request
    OrderRoutingUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            routing:
              $ref: '#/components/schemas/OrderRouting'
    OrderRoutingsDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    OrderRoutingsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    OrderRoutingsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Order Routings Filter
      properties:
        routingId:
          type: array
          items:
            type: string
          description: Fetch routings by list of routingId
    OrderRoutingsListFilter:
      allOf:
        - $ref: '#/components/schemas/OrderRoutingsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Order Routings Filter
    OrderShipByStatus:
      type: string
      description: 'Ship-by-date SLA state of an unfulfilled order: onTrack (safe margin), atRisk (approaching shipByDate), critical (about to breach), breached (not fulfilled by shipByDate), complied (fulfilled before shipByDate). Maintained by the system for orders that have a shipByDate'
      enum:
        - onTrack
        - atRisk
        - critical
        - breached
        - complied
    OrderSkuCandidate:
      type: object
      description: A candidate SKU with quantity
      required:
        - sku
        - qty
      properties:
        qty:
          type: string
          description: Required quantity for this candidate
        sku:
          type: string
          description: Candidate SKU identifier
    OrderSkuRule:
      type: object
      description: Fulfillment rules for a specific SKU
      properties:
        shippingOptions:
          type: array
          description: Shipping constraint strings for this SKU
          items:
            $ref: '#/components/schemas/OrderLineItemShippingOption'
        swaps:
          type: array
          description: Priority-ordered swap options. Each swap option is tried in order until one resolves fully.
          items:
            type: array
            description: A swap option consisting of AND groups. All AND groups must be resolved.
            items:
              type: array
              description: Priority-ordered candidate SKUs within an AND group. Pick the first with available inventory.
              items:
                $ref: '#/components/schemas/OrderSkuCandidate'
    OrderStatus:
      type: string
      description: Order Status
      enum:
        - draft
        - new
        - onHold
        - toBeValidated
        - reviewRequired
        - readyForFulfillment
        - sentToFulfillment
        - partialFulfillment
        - fulfilled
        - inTransit
        - partialReceived
        - received
        - canceled
        - returned
        - refunded
        - archived
        - closed
    OrderSyncRequest:
      type: object
      properties:
        syncAE:
          type: boolean
          description: Reset autoEngUpdateStatus
    OrderTax:
      type: object
      properties:
        channelLiable:
          type: boolean
        code:
          type: string
        currency:
          type: string
        label:
          type: string
        lineItemId:
          type: string
        rate:
          type: number
        reference:
          type: string
        type:
          type: string
          enum:
            - order
            - shipping
            - lineItem
            - other
        value:
          type: number
    OrderType:
      type: string
      description: Order Type (online, pos, etc)
      enum:
        - online
        - pos
        - wholesale
        - edi
        - other
        - b2b
        - aggregation
        - bopis
        - curbside
        - ship_from_store
    OrderUpdateData:
      type: object
      properties:
        additionalCharges:
          nullable: true
          type: array
          description: Additional charges
          items:
            $ref: '#/components/schemas/AdditionalCharge'
        autoEngUpdateStatus:
          $ref: '#/components/schemas/AutoEngUpdateStatus'
        billingAddress:
          $ref: '#/components/schemas/AddressUpdateData'
          description: Purchaser Address
        currency:
          type: string
          description: Order currency code
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
          nullable: true
        customer:
          allOf:
            - $ref: '#/components/schemas/OrderCustomer'
          nullable: true
        customerPONumber:
          type: string
          nullable: true
        deliveryProfiles:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryProfile'
        disableShipmentsReuse:
          type: boolean
          description: Hint to whether shipmentId should be re-used, or not
          nullable: true
        discounts:
          nullable: true
          type: array
          description: Discounts
          items:
            $ref: '#/components/schemas/Discount'
        dynamicLocationGroup:
          type: array
          description: Named location groups defined inline on the order
          nullable: true
          items:
            type: object
            required:
              - name
              - locationIds
            properties:
              name:
                type: string
                description: Identifier used to reference this group from dynamicRoutingRules
              locationIds:
                type: array
                description: Location IDs in this group
                items:
                  type: string
        expectedDeliveryDate:
          type: string
          nullable: true
          format: date-time
          description: First Priority to be respected
        extOrderApiId:
          type: string
          nullable: true
          description: External System Order API ID
        extOrderCreatedAt:
          type: string
          nullable: true
          format: date-time
          description: When the order was created at source
        extOrderId:
          type: string
          description: External Order ID
        extOrderUpdatedAt:
          type: string
          nullable: true
          format: date-time
          description: When the order was updated at source
        extOrderUrl:
          type: string
          description: Order Url in External System
        fulfillmentStatus:
          type: string
          nullable: true
          description: status of the fulfillment
        giftNote:
          type: string
          nullable: true
          description: Order Gift note
        holdOptions:
          $ref: '#/components/schemas/OrderHoldOptions'
          nullable: true
        holdUntil:
          type: string
          format: date-time
          nullable: true
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isMultiAddress:
          type: boolean
          description: Indicates the order is a multi address destination order (default - false)
          nullable: true
        lastRerunRoutingTrigger:
          $ref: '#/components/schemas/LastRerunRoutingTrigger'
        lastRoutedAt:
          type: string
          format: date-time
          description: When the order was last routed.
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/OrderLineItem'
        lineItemsEdits:
          type: array
          items:
            $ref: '#/components/schemas/OrderLineItemBasic'
          nullable: true
        locationId:
          type: string
          nullable: true
          description: Id of location defined in organization. Used as item origin for shipment.
        orderDiscount:
          type: number
          nullable: true
          format: float
          description: Order Discount
        orderNote:
          type: string
          nullable: true
          description: Order Notes
        orderSource:
          type: string
          nullable: true
          description: The original order platform, walmart, etsy, etc
        orderSourceType:
          $ref: '#/components/schemas/OrderType'
        orderTax:
          type: number
          nullable: true
          format: float
          description: Order Tax
        originalOrderId:
          type: string
          nullable: true
          description: Internal orderId of the original order that this order replaces. Set on the replacement, not the original; one original may have many replacements. Pass null to remove the link, or omit the key to leave it unchanged; an empty string is rejected.
        paymentStatus:
          type: string
          nullable: true
          description: status of the payment
        paymentTerms:
          nullable: true
          description: Payments terms
          $ref: '#/components/schemas/OrderPaymentTerms'
        payments:
          nullable: true
          type: array
          description: Payments
          items:
            $ref: '#/components/schemas/Payment'
        preferredLocationGroupId:
          type: array
          items:
            type: string
          description: List of location-group IDs
          nullable: true
        priority:
          $ref: '#/components/schemas/Priority'
        privacyPolicy:
          type: array
          items:
            $ref: '#/components/schemas/PrivacyPolicy'
          nullable: true
        refunds:
          nullable: true
          type: array
          description: Order refunds
          items:
            $ref: '#/components/schemas/OrderRefund'
        replacementReason:
          $ref: '#/components/schemas/OrderReplacementReason'
          nullable: true
        requireShippingLabels:
          type: boolean
          nullable: true
          description: Indicates if fetching of shipping labels is required
        respectLocationId:
          type: boolean
          nullable: true
          description: Use locationId if defined on order level or lineItems level as valid item origin for shipment (pre-route).
        routingStatus:
          $ref: '#/components/schemas/RoutingStatus'
          description: order routing status
        shipAfterDate:
          type: string
          format: date-time
          nullable: true
          description: Ship After Date
        shipByDate:
          type: string
          nullable: true
          format: date-time
          description: 'Date-time by which the order is expected to ship (SLA target, typically set by the selling channel). Not a hard deadline: when the date passes an unfulfilled order keeps processing normally — no error is returned and fulfillment is not blocked — but the system marks its shipByStatus as breached (or complied when fulfilled on time). Example: an order with shipByDate 2026-07-03 still unfulfilled on 2026-07-04 can still be fulfilled; its shipByStatus becomes breached'
        shipByStatus:
          $ref: '#/components/schemas/OrderShipByStatus'
        shipCancelByDate:
          type: string
          format: date-time
          nullable: true
          description: Latest date-time the selling channel allows the order to ship; after this date the channel expects the order to be cancelled rather than shipped. Informational — Pipe17 does not cancel the order automatically when the date passes
        shippingAddress:
          $ref: '#/components/schemas/AddressUpdateData'
          description: Recipient Address
        shippingCarrier:
          type: string
          nullable: true
          description: Required with ShippingClass, 2nd Priority
        shippingClass:
          type: string
          nullable: true
          description: Required with ShippingCarrier, 2nd Priority
        shippingCode:
          type: string
          nullable: true
          description: 1st Priority
        shippingDestinations:
          type: array
          items:
            $ref: '#/components/schemas/Destination'
        shippingNote:
          type: string
          nullable: true
          description: Shipping Notes
        shippingPrice:
          type: number
          nullable: true
          format: float
        skuRules:
          type: object
          description: |
            SKU-level fulfillment rules, keyed by the **original line item SKU**. Defines alternate ways
            to fulfill a line when the ordered SKU cannot ship as-is (out of stock, must be split into
            components, or has special shipping constraints).

            Each rule's `swaps` field is a 3-level nested array — `[swapOption][andGroup][candidate]`:
              - **swapOption** (outer, priority-ordered): alternative fulfillment strategies. The router tries them top-down and picks the first that resolves fully.
              - **andGroup** (middle): items that must ALL resolve together within the chosen swap option (use this for "A + B + C together").
              - **candidate** (inner, priority-ordered): substitute SKUs within an AND group. Pick the first one with available inventory.

            **Example scenario** — a customer orders one `12-PACK`, with pack-type fallbacks if it's out of stock:

            ```json
            "skuRules": {
              "12-PACK": {
                "swaps": [
                  [ [{ "sku": "12-PACK", "qty": "1"  }] ],
                  [ [{ "sku": "6-PACK",  "qty": "2"  }] ],
                  [ [{ "sku": "3-PACK",  "qty": "4"  }] ],
                  [ [{ "sku": "SINGLE",  "qty": "12" }] ]
                ]
              }
            }
            ```

            Router behavior: try the original `12-PACK` first; if out of stock, fulfill with two `6-PACK`s; else four `3-PACK`s; else twelve `SINGLE`s. A richer "dynamic bundle" case uses multiple AND groups per swap option — e.g., a gift basket composed of a fragrance + a lotion + a toothbrush, each with ranked substitutes.
          additionalProperties:
            $ref: '#/components/schemas/OrderSkuRule'
          nullable: true
        sourceDoc:
          nullable: true
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/OrderStatus'
        subTotalPrice:
          type: number
          nullable: true
          format: float
          description: 'Order subtotal: the sum of line item prices (unit price times quantity), typically before order-level adjustments — excludes orderDiscount, orderTax, and shipping charges. Provided by the order source; Pipe17 stores it as-is and does not recalculate it'
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
        taxes:
          type: array
          items:
            $ref: '#/components/schemas/OrderTax'
          nullable: true
        timestamp:
          type: string
          nullable: true
          format: date-time
          description: General Purpose Time Stamp
        totalPrice:
          type: number
          nullable: true
          format: float
          description: Total Price
    OrderUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            order:
              $ref: '#/components/schemas/OrderUpdateData'
    OrderUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/OrderUpdateData'
      xml:
        name: request
    OrderUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            order:
              $ref: '#/components/schemas/Order'
    OrderUpdateTagsRequest:
      type: object
      required:
        - tags
      properties:
        tags:
          type: array
          items:
            type: string
          minItems: 1
    OrderUpdateTagsResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            modifiedCount:
              type: number
              description: Number of modified orders
    OrdersCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            orders:
              type: array
              items:
                $ref: '#/components/schemas/OrderCreateResult'
    OrdersCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/OrderCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    OrdersCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            orders:
              type: array
              items:
                $ref: '#/components/schemas/OrderCreateResult'
    OrdersDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/OrdersDeleteFilter'
    OrdersDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/OrdersFilter'
        - type: object
          description: Delete Orders Filter
          properties:
            integration:
              type: array
              items:
                type: string
              description: Orders of these integrations
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Orders assigned these orgModes
    OrdersDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted orders
            filters:
              $ref: '#/components/schemas/OrdersDeleteFilter'
            orders:
              type: array
              items:
                $ref: '#/components/schemas/Order'
            pagination:
              $ref: '#/components/schemas/Pagination'
    OrdersFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Orders Filter
          properties:
            acknowledgedBy:
              type: array
              items:
                type: string
              description: Orders by list of acknowledging integrations
            deleted:
              type: boolean
              description: Soft deleted orders
            extOrderId:
              type: array
              items:
                type: string
              description: Orders by list of extOrderId
            locationId:
              type: array
              items:
                type: string
              description: Orders by list of locationId
            orderId:
              type: array
              items:
                type: string
              description: Orders by list of orderId
            orderSource:
              type: array
              items:
                type: string
              description: Orders by list of order sources
            orderSourceType:
              type: array
              items:
                $ref: '#/components/schemas/OrderType'
              description: Orders by list of types
            priority:
              type: array
              items:
                $ref: '#/components/schemas/Priority'
            routingStatus:
              type: array
              items:
                $ref: '#/components/schemas/RoutingStatus'
              description: Orders by list of routing statuses
            shipmentLocationIds:
              type: array
              items:
                type: string
              description: Orders by list of shipment fulfillment location IDs
            status:
              type: array
              items:
                $ref: '#/components/schemas/OrderStatus'
              description: Orders by list of statuses
            tags:
              $ref: '#/components/schemas/EntityTags'
    OrdersListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/OrdersListFilter'
    OrdersListFilter:
      allOf:
        - $ref: '#/components/schemas/OrdersFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Orders Filter
          properties:
            disposition:
              type: array
              items:
                $ref: '#/components/schemas/OrderDispositionType'
              description: Fetch orders by list of order disposition types
            email:
              type: string
              description: Orders by recipient email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            emailAddr:
              type: array
              items:
                type: string
              description: Orders by list of billing/shippingAddress.email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Orders by list of categories of the order related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Orders by list of types of the order related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            fulfilledAtSince:
              type: string
              format: date-time
              description: Fetch all orders with fulfilledAt after or at this date-time
            fulfilledAtUntil:
              type: string
              format: date-time
              description: Fetch all orders with fulfilledAt before or at this date-time
            hasSourceDoc:
              type: boolean
              description: Orders containing a source document
            holdUntilSince:
              type: string
              format: date-time
              description: Fetch all orders with holdUntil after or at this date-time. Rounded down to the nearest minute
            holdUntilUntil:
              type: string
              format: date-time
              description: Fetch all orders with holdUntil before or at this date-time. Rounded down to the nearest minute
            lineItemSku:
              type: array
              items:
                type: string
              description: Orders containing line items with these SKUs
            requireShippingLabels:
              type: boolean
              description: Orders by shipping labels requirement
            shipByDateSince:
              type: string
              format: date-time
              description: Fetch all orders with shipByDate after or at this date-time
            shipByDateUntil:
              type: string
              format: date-time
              description: Fetch all orders with shipByDate before or at this date-time
            shipByStatus:
              type: array
              items:
                $ref: '#/components/schemas/OrderShipByStatus'
              description: Orders by list of ship-by SLA states
            timestamp:
              type: boolean
              description: if set to true use timestamp instead of create time
    OrdersListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - orders
          properties:
            orders:
              type: array
              items:
                $ref: '#/components/schemas/Order'
            filters:
              $ref: '#/components/schemas/OrdersListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    Organization:
      allOf:
        - type: object
          properties:
            accountId:
              type: string
              description: Parent account Id
            billingAccounts:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationBillingAccountView'
              description: Alternate billing accounts
            branding:
              description: Custom branding options. Can only be defined for accounts having isRebrandingAllowed:true
              $ref: '#/components/schemas/Branding'
            consent:
              $ref: '#/components/schemas/OrganizationOutputConsent'
            demoConfiguration:
              $ref: '#/components/schemas/OrganizationDemoConfiguration'
            isExternalIntegrationAccessAllowed:
              type: boolean
              description: |
                Toggle that gates the external integration access feature on this org and its secondaries. When true, consuming apps may auto-provision delegated API keys, bounded by the caller's permissions, and issue one-time, time-limited connection URLs that let an external person without a Pipe17 account connect a store (via credentials or OAuth) to the org. Settable only on the primary org.
            isHoldingOrg:
              type: boolean
              description: Marks organization as holding, i.e. parent org with no access to business objects.
            status:
              $ref: '#/components/schemas/OrganizationStatus'
        - $ref: '#/components/schemas/OrganizationBase'
        - $ref: '#/components/schemas/CoreObject'
    OrganizationAddress:
      type: object
      required:
        - firstName
        - lastName
        - address1
        - city
        - zipCodeOrPostalCode
        - country
      properties:
        address1:
          description: Address
          type: string
        city:
          description: City
          type: string
        country:
          description: Country
          type: string
        firstName:
          description: First Name
          type: string
        lastName:
          description: Last Name
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
        address2:
          description: Address Line 2
          type: string
        company:
          description: Company
          type: string
        stateOrProvince:
          description: State or Province
          type: string
    OrganizationBase:
      type: object
      required:
        - name
        - tier
        - email
        - phone
        - timeZone
        - address
      properties:
        address:
          $ref: '#/components/schemas/OrganizationAddress'
        email:
          type: string
          description: Organization Contact email
        name:
          type: string
          description: Organization Name
        phone:
          type: string
          description: Organization Contact Phone
        tier:
          $ref: '#/components/schemas/OrganizationServiceTier'
        timeZone:
          $ref: '#/components/schemas/Timezone'
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationContact'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        logoUrl:
          type: string
          description: Logo URL
        monitoringEnabled:
          type: boolean
          description: Allows the internal pipe 17 folks to enable/disable monitoring on the internal app (default - false)
        orgMode:
          $ref: '#/components/schemas/OrganizationMode'
        settings:
          type: array
          description: Organization level settings
          items:
            $ref: '#/components/schemas/OrganizationSetting'
    OrganizationBillingAccount:
      type: object
      properties:
        accountId:
          type: string
          description: Pipe17 org key of the billing org. Takes precedence over 'customerId' when both present. At least one of 'accountId' or 'customerId' must be provided per entry.
        billingRuleRef:
          type: string
          description: Reference to an external rule ID defining metering criteria. If absent, report all orders (same as primary account behavior).
        customerId:
          type: string
          description: External billing system ID (e.g., TABS customer ID). Used when 'accountId' is absent or resolves to an invalid/non-billable org. At least one of 'accountId' or 'customerId' must be provided per entry.
        enabled:
          type: boolean
          description: Disabling preserves historical cross-billing data when a contract changes.
        endDate:
          type: string
          format: date-time
          description: If absent, meter indefinitely while org is active.
        startDate:
          type: string
          format: date-time
          description: If absent, start metering immediately on save.
      description: Alternate billing account
    OrganizationBillingAccountView:
      allOf:
        - $ref: '#/components/schemas/OrganizationBillingAccount'
        - type: object
          properties:
            createdAt:
              type: string
              format: date-time
            updatedAt:
              type: string
              format: date-time
      description: Alternate billing account
    OrganizationCleanupRequest:
      type: object
      required:
        - orgModes
      properties:
        orgModes:
          type: array
          description: Only cleanup entities assigned this orgModes
          items:
            $ref: '#/components/schemas/OrganizationMode'
        entityTypes:
          type: array
          description: Only cleanup entities of these types
          items:
            $ref: '#/components/schemas/EntityName'
        hardDelete:
          type: boolean
          description: Use hard delete for data cleanup
      xml:
        name: request
    OrganizationConsentLevel:
      type: string
      enum:
        - disabled
        - read
        - enhanced
        - full
        - inherit
    OrganizationContact:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
          enum:
            - Emergency
            - Operations
            - Logistics
        additionalEmails:
          type: array
          items:
            type: string
        email:
          type: string
          description: Required field if phone is not defined
        integrationId:
          type: string
        phone:
          type: string
          description: Required field if email is not defined
        phone2:
          type: string
      required:
        - type
        - name
    OrganizationCreateData:
      allOf:
        - $ref: '#/components/schemas/OrganizationBase'
        - type: object
          properties:
            consent:
              $ref: '#/components/schemas/OrganizationInputConsent'
    OrganizationCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            organization:
              $ref: '#/components/schemas/OrganizationCreateData'
    OrganizationCreateRequest:
      allOf:
        - $ref: '#/components/schemas/OrganizationCreateData'
      xml:
        name: request
    OrganizationCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            organization:
              $ref: '#/components/schemas/Organization'
    OrganizationDemoConfiguration:
      type: object
      nullable: true
      required:
        - isAllowed
      properties:
        isAllowed:
          type: boolean
          default: false
          description: Indicates whether the demo integrations are allowed  (! orgMode has to be 'demo' or 'internal' to set true)
        bootstrapLocationsCount:
          type: integer
          default: 1
          description: Indicate how many locations to create for the integration
        bootstrapOrdersCount:
          type: integer
          default: 10
          description: Indicate how many sales orders to create for each integration added with product pull enabled
        bootstrapProductsCount:
          type: integer
          default: 100
          description: Indicates how large a catalog to create for each integration added with product pull enabled
        expirationDate:
          type: string
          format: date
          description: Date when demo mode functionality is paused (createdAt + 1 month, by default; is only relevant if demo integrations are allowed )
        liveEndAt:
          type: string
          format: date-time
          description: Date-time after with job/lambda should revert back to running every 24 hours (- is only relevant if demo integrations are allowed)
        liveStartAt:
          type: string
          format: date-time
          description: Date-time when job/lambda should run every 5 min (- is only relevant if demo integrations are allowed)
        maxIntegrations:
          type: integer
          default: 5
          description: Max number of demo integrations one can add (- is only relevant if demo integrations are allowed)
        productThemes:
          type: string
          description: Comma separated string values of product themes we support to influence the type of products created in the catalog
    OrganizationDetachRequest:
      type: object
    OrganizationFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    OrganizationFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            organization:
              $ref: '#/components/schemas/Organization'
    OrganizationInputConsent:
      type: object
      properties:
        level:
          $ref: '#/components/schemas/OrganizationConsentLevel'
    OrganizationMode:
      type: string
      description: Organization Mode
      enum:
        - sandbox
        - production
        - internal
        - demo
    OrganizationMoveRequest:
      type: object
      required:
        - accountId
      properties:
        accountId:
          type: string
          description: Target account ID
      xml:
        name: request
    OrganizationOutputConsent:
      type: object
      properties:
        level:
          $ref: '#/components/schemas/OrganizationConsentLevel'
        updatedAt:
          type: string
          format: date-time
          description: Last time the level was updated
        updatedBy:
          type: string
          description: Who initiated update (- userId || apikeyId)
    OrganizationServiceTier:
      type: string
      description: Organization Service Tier
      enum:
        - free
        - basic
        - enterprise
    OrganizationSetting:
      type: object
      required:
        - path
        - type
        - value
      properties:
        path:
          type: string
          description: Setting Name
        type:
          type: string
          description: Setting Type
          enum:
            - string
            - number
            - boolean
            - date
            - array
            - object
            - json
        value:
          type: object
          description: Setting Value
    OrganizationStatus:
      type: string
      description: Organization Account Status
      enum:
        - pending
        - active
        - disabled
    OrganizationSwitchRequest:
      type: object
      required:
        - orgMode
      properties:
        orgMode:
          description: Assign organization this new orgMode
          $ref: '#/components/schemas/OrganizationMode'
      xml:
        name: request
    OrganizationUpdateAddress:
      type: object
      properties:
        address1:
          description: Address
          type: string
        address2:
          description: Address Line 2
          type: string
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        country:
          description: Country
          type: string
        firstName:
          description: First Name
          type: string
        lastName:
          description: Last Name
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    OrganizationUpdateData:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/OrganizationUpdateAddress'
        branding:
          description: Custom branding options. Can only be defined for accounts having isRebrandingAllowed:true
          $ref: '#/components/schemas/Branding'
        consent:
          $ref: '#/components/schemas/OrganizationInputConsent'
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationContact'
          nullable: true
        demoConfiguration:
          $ref: '#/components/schemas/OrganizationDemoConfiguration'
        email:
          type: string
          description: Organization Contact email
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isExternalIntegrationAccessAllowed:
          type: boolean
          description: |
            Toggle that gates the external integration access feature on this org and its secondaries. When true, consuming apps may auto-provision delegated API keys, bounded by the caller's permissions, and issue one-time, time-limited connection URLs that let an external person without a Pipe17 account connect a store (via credentials or OAuth) to the org. Settable only on the primary org.
        isHoldingOrg:
          type: boolean
          description: Marks organization as holding, i.e. parent org with no access to business objects.
        logoUrl:
          type: string
          description: Logo URL
        monitoringEnabled:
          type: boolean
          description: Allows the internal pipe 17 folks to enable/disable monitoring on the internal app
          nullable: true
        name:
          type: string
          description: Organization Name
        phone:
          type: string
          description: Organization Contact Phone
        settings:
          type: array
          description: Organization level settings
          items:
            $ref: '#/components/schemas/OrganizationSetting'
        status:
          $ref: '#/components/schemas/OrganizationStatus'
        tier:
          $ref: '#/components/schemas/OrganizationServiceTier'
        timeZone:
          $ref: '#/components/schemas/Timezone'
    OrganizationUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            organization:
              $ref: '#/components/schemas/OrganizationUpdateData'
    OrganizationUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/OrganizationUpdateData'
      xml:
        name: request
    OrganizationUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            organization:
              $ref: '#/components/schemas/Organization'
    OrganizationsDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    OrganizationsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    OrganizationsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Organizations Filter
          properties:
            accountId:
              type: array
              items:
                type: string
              description: Organizations by list of account Ids
            deleted:
              type: boolean
              description: Fetch only soft-deleted organizations (ignore status)
            email:
              type: string
              description: Organizations by email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            monitoringEnabled:
              type: boolean
              description: Organizations by monitoringEnabled value
            name:
              type: string
              description: Organizations by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            orgKey:
              type: array
              items:
                type: string
              description: Organizations by list of orgKey
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Organizations by list of modes
            phone:
              type: string
              description: Organizations by phone (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            status:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationStatus'
              description: Organizations by list of statuses
    OrganizationsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/OrganizationsListFilter'
    OrganizationsListFilter:
      allOf:
        - $ref: '#/components/schemas/OrganizationsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Organizations Filter
    OrganizationsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/OrganizationsListFilter'
            organizations:
              type: array
              items:
                $ref: '#/components/schemas/Organization'
            pagination:
              $ref: '#/components/schemas/Pagination'
    OverfulfillPolicy:
      type: string
      description: Overfulfill policy
      enum:
        - strict
        - report
        - approved
    PSLChangeError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    PSLChangeRequest:
      type: array
      items:
        type: string
    PSLChangeResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            subjects:
              type: array
              items:
                type: object
                required:
                  - subject
                  - status
                properties:
                  status:
                    type: string
                    enum:
                      - added
                      - removed
                      - erasing
                      - skipped
                      - rejected
                    description: |
                      - `added` - the subject has been added to the PSL, the erasure of existing sensitive info started in background, the storing of sensitive info in new data stopped
                      - `removed` - the subject has been removed from the PSL, the storing of sensitive info in new data resumed
                      - `erasing` - one time erasure started (it is the same as  `added`, but the subject will be removed from the PSL automatically, just after the erasue is completed)
                      - `skipped` - the subject has already been added/removed to/from the PSL
                      - `rejected` - the operation failed
                  reason:
                    type: string
                    description: The reason for the refusal
                  subject:
                    type: object
                    properties:
                      orgKey:
                        type: string
                      email:
                        type: string
    PSLRevealError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    PSLRevealResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            subjects:
              type: array
              items:
                type: object
                required:
                  - orgKey
                  - email
                properties:
                  orgKey:
                    type: string
                  email:
                    type: string
                  transient:
                    type: boolean
                    description: Indicates an incomplete `erase' operation (- subject will be removed from the PSL automatically, just after erasure process completion).
                  createdAt:
                    type: string
                    format: date-time
                    description: The date when the subject was added to the PSL
              description: Currently protected data subjects
    Pagination:
      type: object
      properties:
        first:
          type: boolean
          description: Indicates first page. Only returned when offset matches size
        last:
          type: boolean
          description: Indicates last page. Only returned when offset matches size
        outOfBounds:
          type: boolean
          description: Indicates that current offset is out of list range.
        pageIndex:
          type: integer
          description: Current page index, 1-based
        pageSize:
          type: integer
          description: Page size
        pages:
          type: integer
          description: Number of pages. Only returned when offset matches size
        total:
          type: integer
          description: Total number of items matching current filter
        truncated:
          type: boolean
          description: 'Indicates that `total` is a lower bound rather than a count: more items may match the query than this list could report. Returned only when that is the case. Do not render an exact result or page count from `total` when it is set.'
    PartialFulfillmentMode:
      type: string
      description: |
        Behavior when a store cannot fulfill all requested quantities on a shipping request:
        - `fullRejection`: reject the entire shipping request when any line is short
        - `partialByLine`: ship only lines that can be fulfilled completely; reject short lines
        - `partialByQuantity`: ship whatever quantity is available per line; reject the shortfall
      enum:
        - fullRejection
        - partialByLine
        - partialByQuantity
      default: fullRejection
    PartialFulfillmentModeByType:
      type: object
      description: |
        Optional per-order-type overrides for partial fulfillment behavior.
        When a key is omitted, the store's top-level `partialFulfillmentMode`
        applies to that order type.
      properties:
        pickup:
          $ref: '#/components/schemas/PartialFulfillmentMode'
        shipping:
          $ref: '#/components/schemas/PartialFulfillmentMode'
    Payment:
      type: object
      required:
        - amount
        - currency
        - status
        - method
      properties:
        amount:
          type: number
        currency:
          type: string
        method:
          type: string
          description: payment method name
          enum:
            - cash
            - giftCard
            - creditCard
            - storeCredit
            - paypal
            - other
            - custom
        status:
          type: string
          enum:
            - succeeded
            - failed
        conversion:
          type: number
        customMethod:
          type: string
          description: custom payment method name
        kind:
          type: string
          enum:
            - visa
            - mastercard
            - amex
            - discover
        processedAt:
          type: string
          format: date-time
          description: Payment processing time
        reference:
          type: string
          description: payment reference id
    PaymentCreateData:
      type: object
      xml:
        name: payment
      required:
        - amount
        - currency
        - paymentStatus
        - method
      properties:
        amount:
          type: number
        currency:
          type: string
        method:
          $ref: '#/components/schemas/PaymentMethod'
        paymentStatus:
          $ref: '#/components/schemas/PaymentTransactionStatus'
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        customMethod:
          type: string
        expiresAt:
          type: string
          format: date-time
        extOrderId:
          type: string
        extParentId:
          type: string
        extPaymentId:
          type: string
        extStatus:
          type: string
        internal:
          $ref: '#/components/schemas/InternalInfo'
        kind:
          $ref: '#/components/schemas/PaymentKind'
        orderId:
          type: string
        originalAmount:
          type: number
        originalCurrency:
          type: string
        parentId:
          type: string
        processedAt:
          type: string
          format: date-time
        reference:
          type: string
        refundId:
          type: string
        status:
          $ref: '#/components/schemas/PaymentStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        type:
          $ref: '#/components/schemas/PaymentType'
    PaymentCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        payment:
          $ref: '#/components/schemas/PaymentTransaction'
        status:
          type: string
          enum:
            - submitted
            - failed
    PaymentFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    PaymentFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            payment:
              $ref: '#/components/schemas/PaymentTransaction'
    PaymentKind:
      type: string
      description: Payment kind
      enum:
        - visa
        - mastercard
        - amex
        - discover
    PaymentMethod:
      type: string
      description: Payment method
      enum:
        - cash
        - giftCard
        - creditCard
        - storeCredit
        - paypal
        - other
        - custom
    PaymentStatus:
      type: string
      description: Payment status
      enum:
        - draft
        - pending
        - reported
        - failed
        - canceled
    PaymentTransaction:
      allOf:
        - $ref: '#/components/schemas/PaymentCreateData'
        - type: object
          properties:
            integration:
              type: string
              description: Reference to integration that created the payment
            orderIntegration:
              type: string
              description: Reference to integration that created the order
            paymentId:
              type: string
              description: The payment ID
        - $ref: '#/components/schemas/CoreObject'
    PaymentTransactionStatus:
      type: string
      enum:
        - authorized
        - capturePending
        - captured
        - declined
        - voided
    PaymentType:
      type: string
      description: Payment type
      enum:
        - payment
        - refund
    PaymentUpdateData:
      type: object
      properties:
        amount:
          type: number
        currency:
          type: string
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
          nullable: true
        expiresAt:
          type: string
          format: date-time
        extParentId:
          type: string
        extPaymentId:
          type: string
        extStatus:
          type: string
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        originalAmount:
          type: number
        originalCurrency:
          type: string
        paymentStatus:
          $ref: '#/components/schemas/PaymentTransactionStatus'
        processedAt:
          type: string
          format: date-time
        reference:
          type: string
        status:
          $ref: '#/components/schemas/PaymentStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
    PaymentUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            payment:
              $ref: '#/components/schemas/PaymentUpdateData'
    PaymentUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/PaymentUpdateData'
      xml:
        name: request
    PaymentUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            payment:
              $ref: '#/components/schemas/PaymentTransaction'
    PaymentsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            payments:
              type: array
              items:
                $ref: '#/components/schemas/PaymentCreateResult'
    PaymentsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/PaymentCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    PaymentsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            payments:
              type: array
              items:
                $ref: '#/components/schemas/PaymentCreateResult'
    PaymentsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/PaymentsListFilter'
    PaymentsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Payments Filter
          properties:
            deleted:
              type: boolean
              description: Select the soft deleted payments
            extOrderId:
              type: array
              items:
                type: string
              description: Select payments by extOrderId list
            extPaymentId:
              type: array
              items:
                type: string
              description: Select payments by extPaymentId list
            orderId:
              type: array
              items:
                type: string
              description: Select payments by orderId list
            paymentId:
              type: array
              items:
                type: string
              description: Select payments by paymentId list
            paymentStatus:
              type: array
              items:
                $ref: '#/components/schemas/PaymentTransactionStatus'
              description: Select payments by paymentStatus list
            status:
              type: array
              items:
                $ref: '#/components/schemas/PaymentStatus'
              description: Select payments by status list
            tags:
              $ref: '#/components/schemas/EntityTags'
            type:
              type: array
              items:
                $ref: '#/components/schemas/PaymentType'
              description: Select payments by type list
    PaymentsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/PaymentsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            payments:
              type: array
              items:
                $ref: '#/components/schemas/PaymentTransaction'
    Permissions:
      type: string
      pattern: ^[crudl]{1,5}$
    PermissionsNullable:
      type: string
      nullable: true
      pattern: ^[crudl]{1,5}$
    PermissionsReadOnly:
      type: string
      pattern: ^[rl]{1,2}$
    PermissionsReadOnlyNullable:
      type: string
      nullable: true
      pattern: ^[rl]{1,2}$
    PreferenceObject:
      type: object
      required:
        - path
        - type
        - value
      properties:
        path:
          type: string
          description: Preference Name
        type:
          type: string
          description: Preference Type
          enum:
            - string
            - number
            - boolean
            - date
            - array
            - object
            - json
        value:
          type: object
          description: Preference Value
    Price:
      type: object
      properties:
        currency:
          type: string
          description: ISO currency code
        name:
          type: string
          description: Price Name
        value:
          type: number
          format: float
          description: Price Amount
    Pricing:
      allOf:
        - type: object
          properties:
            pricingId:
              type: string
              description: Pricing ID
        - $ref: '#/components/schemas/PricingCreateData'
        - $ref: '#/components/schemas/CoreObject'
    PricingActiveUntil:
      type: string
      format: date-time
      description: When the plan is active until in the pricing catalog, if date is in the past, the plan is a legacy plan
    PricingCreateData:
      type: object
      xml:
        name: Pricing
      required:
        - name
        - rank
        - monthlyAmount
        - annualAmount
        - included
        - excess
        - sources
        - activeUntil
      properties:
        activeUntil:
          $ref: '#/components/schemas/PricingActiveUntil'
        annualAmount:
          type: number
          format: float
          description: Payment, USD, when paying annualy
        excess:
          type: number
          format: float
          description: USD, per order, for orders over included number
        included:
          type: number
          format: int32
          description: Number of orders included in plan per year
        monthlyAmount:
          type: number
          format: float
          description: Payment, USD, when paying monthly
        name:
          type: string
          description: Name of pricing Plan
        rank:
          type: number
          format: float
          description: Rank of pricing plan, higher has more features
        sources:
          $ref: '#/components/schemas/PricingSources'
        api:
          type: boolean
          description: If true, plan includes use of API
        bundles:
          type: boolean
          description: If true, plan includes use of bundles
        categories:
          type: array
          items:
            type: string
        cutOver:
          type: number
          description: when exceeding this number of orders in a year, recommend higher ranked plan
        description:
          type: string
          description: Pricing plan description
        includedMonthly:
          type: number
          format: int32
          description: Number of orders included in plan per month
        internal:
          $ref: '#/components/schemas/InternalInfo'
        max3pl:
          type: number
          description: Number of fulfillment integrations allowed in plan
        maxERP:
          type: number
          description: Number of ERP integrations allowed in plan
        maxIntg:
          type: number
          description: Number of integrations allowed in plan
        maxSub:
          type: number
          description: Number of secondary organizations allowed in plan
        poto:
          type: boolean
          description: If true, plan includes use Purchase / Transfer orders
        routing:
          type: boolean
          description: If true, plan includes order routing
    PricingCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            Pricing:
              type: object
              items:
                $ref: '#/components/schemas/PricingCreateResult'
    PricingCreateRequest:
      type: object
      allOf:
        - $ref: '#/components/schemas/PricingCreateData'
    PricingCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            pricing:
              type: object
              items:
                $ref: '#/components/schemas/PricingCreateResult'
    PricingCreateResult:
      type: object
      properties:
        Pricing:
          $ref: '#/components/schemas/Pricing'
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - created
            - failed
    PricingFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    PricingFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            Pricing:
              $ref: '#/components/schemas/Pricing'
    PricingFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Pricing Filter
          properties:
            api:
              type: boolean
              description: Pricing plans allowing use of API
            bundles:
              type: boolean
              description: Pricing plans allowing use of bundles
            categories:
              type: array
              items:
                type: string
              description: Pricing plans allowing these connector categories
            included:
              type: integer
              format: int32
              description: Pricing plans including at least this many orders
            min3pl:
              type: integer
              format: int32
              description: Pricing plans allowing at least this many 3pl integrations
            poto:
              type: boolean
              description: Pricing plans allowing use of Purchase / Transfer orders
            routing:
              type: boolean
              description: Pricing plans allowing use of order routing
    PricingListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/PricingListFilter'
    PricingListFilter:
      allOf:
        - $ref: '#/components/schemas/PricingFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Pricing Filter
    PricingListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - Pricing
          properties:
            Pricing:
              type: array
              items:
                $ref: '#/components/schemas/Pricing'
            filters:
              $ref: '#/components/schemas/PricingListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    PricingSources:
      type: array
      items:
        type: string
        enum:
          - app
          - shopify
          - shopify-mcf
      description: Plan is available through these sources
    PricingUpdateData:
      type: object
      properties:
        activeUntil:
          $ref: '#/components/schemas/PricingActiveUntil'
        annualAmount:
          type: number
          format: float
          description: Payment, USD, when paying annualy
        api:
          type: boolean
          description: If true, plan includes use of API
        bundles:
          type: boolean
          description: If true, plan includes use of bundles
        categories:
          type: array
          items:
            type: string
        cutOver:
          type: number
          description: when exceeding this number of orders in a year, recommend higher ranked plan
        description:
          type: string
          description: Pricing plan description
        excess:
          type: number
          format: float
          description: USD, per order, for orders over included number
        included:
          type: number
          format: int32
          description: Number of orders included in plan per year
        includedMonthly:
          type: number
          format: int32
          description: Number of orders included in plan per month
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        max3pl:
          type: number
          description: Number of fulfillment integrations allowed in plan
        maxERP:
          type: number
          description: Number of ERP integrations allowed in plan
        maxIntg:
          type: number
          description: Number of integrations allowed in plan
        maxSub:
          type: number
          description: Number of secondary organizations allowed in plan
        monthlyAmount:
          type: number
          format: float
          description: Payment, USD, when paying monthly
        name:
          type: string
          description: Name of pricing Plan
        poto:
          type: boolean
          description: If true, plan includes use Purchase / Transfer orders
        rank:
          type: number
          format: float
          description: Rank of pricing plan, higher has more features
        routing:
          type: boolean
          description: If true, plan includes order routing
        sources:
          $ref: '#/components/schemas/PricingSources'
    PricingUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            Pricing:
              $ref: '#/components/schemas/PricingUpdateData'
    PricingUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/PricingUpdateData'
      xml:
        name: request
    PricingUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            pricing:
              $ref: '#/components/schemas/Pricing'
    Priority:
      type: string
      enum:
        - high
        - low
        - regular
    PrivacyPolicy:
      type: string
      enum:
        - amazon
    ProducstListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ProductsListFilter'
    ProducstListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - products
          properties:
            products:
              type: array
              items:
                $ref: '#/components/schemas/Product'
            filters:
              $ref: '#/components/schemas/ProductsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    Product:
      allOf:
        - type: object
          properties:
            autoEngUpdateStatus:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
            autoEngUpdateStatusUpdatedAt:
              $ref: '#/components/schemas/AutoEngUpdateStatusUpdatedAt'
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the product
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the product
            integration:
              type: string
              description: Reference to integration that created an item
            mappedProduct:
              $ref: '#/components/schemas/ProductPublishedItem'
              description: Mapped product information - available for integrations only
            productId:
              type: string
              description: Product ID
        - $ref: '#/components/schemas/ProductCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ProductBundleItem:
      type: object
      required:
        - sku
        - quantity
      properties:
        quantity:
          type: number
          format: float
          description: Bundle Item Quantity
        sku:
          type: string
          description: Bundle Item SKU
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        updatedAt:
          type: string
          format: date-time
          description: Last update timestamp
        updatedBy:
          type: string
          description: Id of the last-update requester, if known
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    ProductCreateData:
      type: object
      xml:
        name: product
      description: We don't allow duplicated SKU within the system
      required:
        - sku
        - name
      properties:
        name:
          type: string
          description: Display Name
        sku:
          type: string
          description: Product SKU
        autoEngUpdateStatus:
          $ref: '#/components/schemas/AutoEngUpdateStatus'
        bundleItems:
          type: array
          description: Bundle Item need to reference the SKU of the actual product
          items:
            $ref: '#/components/schemas/ProductBundleItem'
        cost:
          type: number
          format: float
          description: Cost
        costCurrency:
          type: string
          description: Currency
        countryOfOrigin:
          type: string
          description: Country of Origin
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        description:
          type: string
          description: Description
        dimensionsUnit:
          type: string
          description: Dimensions UOM
          enum:
            - cm
            - in
            - ft
        extProductApiId:
          type: string
          description: External Product API Id
        extProductCreatedAt:
          type: string
          format: date-time
        extProductId:
          type: string
          description: External Product Id
        extProductUpdatedAt:
          type: string
          format: date-time
        harmonizedCode:
          type: string
          description: Harmonized System/Tarrif Code
        height:
          type: number
          format: float
          description: Height
        hideInStore:
          type: boolean
          description: Mark item as hidden in marketplace Storefront
        imageURLs:
          type: array
          description: Image URLs
          items:
            type: string
        internal:
          $ref: '#/components/schemas/InternalInfo'
        international:
          $ref: '#/components/schemas/ProductInternational'
        inventoryNotTracked:
          type: boolean
          description: Do not track inventory flag
        length:
          type: number
          format: float
          description: Length
        options:
          type: array
          items:
            $ref: '#/components/schemas/ProductOption'
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        packingInstructions:
          type: string
        parentExtProductId:
          type: string
          description: Variant parent external product Id
        partId:
          type: string
          description: Manufacturer part number
        prices:
          type: array
          description: Start off with basePrice
          items:
            $ref: '#/components/schemas/Price'
        published:
          type: array
          description: Published Channels
          items:
            $ref: '#/components/schemas/ProductPublishedItem'
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/ProductStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        taxable:
          type: boolean
          description: Taxable
        types:
          type: array
          description: Product types
          items:
            $ref: '#/components/schemas/ProductType'
        upc:
          type: string
          description: UPC
        variantOptions:
          type: array
          description: this let us know the variant description
          items:
            $ref: '#/components/schemas/NameValue'
        vendor:
          type: string
          description: vendor
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
        weight:
          type: number
          format: float
          description: Weight
        weightUnit:
          type: string
          description: Weight UOM
          enum:
            - lb
            - oz
            - kg
            - g
        width:
          type: number
          format: float
          description: Width
    ProductCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        product:
          $ref: '#/components/schemas/Product'
        status:
          type: string
          enum:
            - submitted
            - failed
    ProductFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ProductFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            product:
              $ref: '#/components/schemas/Product'
    ProductInternational:
      type: object
      properties:
        currency:
          type: string
        declaredValue:
          type: number
          format: float
        description:
          type: string
    ProductOption:
      type: string
      enum:
        - digital
        - packagingMaterial
        - insert
        - nonReturnable
        - fragile
        - oversized
        - SIOC
        - hazmat
        - lotTracked
        - serialNumberTracked
        - expiryDateTracked
    ProductPublishedItem:
      type: object
      required:
        - integrationId
      properties:
        integrationId:
          type: string
          description: Reference to channel integration
        bufferInventory:
          type: integer
          format: int32
          description: Reserved buffer inventory quantity when publishing to this channel
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extProductId:
          type: string
          description: Channel specific product id
        inventoryNotTracked:
          type: boolean
          description: Do not track inventory for this channel
        name:
          type: string
        sku:
          type: string
          description: Channel specific SKU
        status:
          $ref: '#/components/schemas/ProductPublishedItemStatus'
        updatedAt:
          type: string
          format: date-time
          description: Channel specific product updatedAt timestamp
        updatedBy:
          type: string
          description: Id of the last-update requester, if known
    ProductPublishedItemStatus:
      type: string
      description: Product published item status
      enum:
        - tobepublished
        - published
        - tobeunpublished
        - unpublished
        - disabled
    ProductPublishedItemUpdate:
      type: object
      properties:
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extProductId:
          type: string
          description: Channel specific product id
        integrationId:
          type: string
          description: Reference to channel integration
        sku:
          type: string
          description: Channel specific product sku
        status:
          $ref: '#/components/schemas/ProductPublishedItemStatus'
        updatedAt:
          type: string
          format: date-time
          description: Channel specific product updatedAt timestamp
        updatedBy:
          type: string
          description: Id of the last-update requester, if known
    ProductStatus:
      type: string
      description: Product Status
      enum:
        - active
        - inactive
    ProductSyncRequest:
      type: object
      properties:
        syncAE:
          type: boolean
          description: Reset autoEngUpdateStatus
    ProductType:
      type: string
      description: Product Type
      enum:
        - simple
        - bundle
        - bundleItem
        - child
        - parent
    ProductUpdateData:
      type: object
      properties:
        autoEngUpdateStatus:
          $ref: '#/components/schemas/AutoEngUpdateStatus'
        bundleItems:
          type: array
          nullable: true
          description: Bundle Item need to reference the SKU of the actual product
          items:
            $ref: '#/components/schemas/ProductBundleItem'
        cost:
          type: number
          nullable: true
          format: float
          description: Cost
        costCurrency:
          type: string
          nullable: true
          description: Currency
        countryOfOrigin:
          type: string
          nullable: true
          description: Country of Origin
        customFields:
          type: array
          nullable: true
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        description:
          type: string
          description: Description
        dimensionsUnit:
          type: string
          description: Dimensions UOM
          enum:
            - cm
            - in
            - ft
        extProductApiId:
          type: string
          description: External Product API Id
        extProductCreatedAt:
          type: string
          nullable: true
          format: date-time
        extProductUpdatedAt:
          type: string
          nullable: true
          format: date-time
        harmonizedCode:
          type: string
          nullable: true
          description: Harmonized System/Tariff Code
        height:
          type: number
          nullable: true
          format: float
          description: Height
        hideInStore:
          type: boolean
          nullable: true
          description: Mark item as hidden in marketplace Storefront
        imageURLs:
          type: array
          description: Image URLs
          nullable: true
          items:
            type: string
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        international:
          $ref: '#/components/schemas/ProductInternational'
        inventoryNotTracked:
          type: boolean
          nullable: true
          description: Do not track inventory flag
        length:
          type: number
          nullable: true
          format: float
          description: Length
        mappedProduct:
          $ref: '#/components/schemas/ProductPublishedItemUpdate'
          description: Mapped product information - for integrations only
        name:
          type: string
          description: Display Name
        options:
          type: array
          items:
            $ref: '#/components/schemas/ProductOption'
          nullable: true
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        packingInstructions:
          type: string
          nullable: true
        parentExtProductId:
          type: string
          nullable: true
          description: Variant parent external product Id
        partId:
          type: string
          nullable: true
          description: Manufacturer part number
        prices:
          type: array
          description: Start off with basePrice
          nullable: true
          items:
            $ref: '#/components/schemas/Price'
        published:
          type: array
          nullable: true
          description: Published Channels
          items:
            $ref: '#/components/schemas/ProductPublishedItem'
        sku:
          type: string
          description: Product SKU
        sourceDoc:
          nullable: true
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/ProductStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
        taxable:
          type: boolean
          nullable: true
          description: Taxable
        types:
          type: array
          description: Product types
          items:
            $ref: '#/components/schemas/ProductType'
        upc:
          type: string
          nullable: true
          description: UPC
        variantOptions:
          type: array
          nullable: true
          description: this let us know the variant description
          items:
            $ref: '#/components/schemas/NameValue'
        vendor:
          type: string
          nullable: true
          description: vendor
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
        weight:
          type: number
          nullable: true
          format: float
          description: Weight
        weightUnit:
          type: string
          nullable: true
          description: Weight UOM
          enum:
            - lb
            - oz
            - kg
            - g
        width:
          type: number
          nullable: true
          format: float
          description: Width
    ProductUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            product:
              $ref: '#/components/schemas/ProductUpdateData'
    ProductUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ProductUpdateData'
      xml:
        name: request
    ProductUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            product:
              $ref: '#/components/schemas/Product'
    ProductsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            products:
              type: array
              items:
                $ref: '#/components/schemas/ProductCreateResult'
    ProductsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/ProductCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    ProductsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            products:
              type: array
              items:
                $ref: '#/components/schemas/ProductCreateResult'
    ProductsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ProductsDeleteFilter'
    ProductsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/ProductsFilter'
        - type: object
          description: Delete Products Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Products assigned these orgModes
    ProductsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted products
            filters:
              $ref: '#/components/schemas/ProductsDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            products:
              type: array
              items:
                $ref: '#/components/schemas/Product'
    ProductsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Products Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted products
            extProductId:
              type: array
              items:
                type: string
              description: Products by list of extProductId
            integration:
              type: array
              items:
                type: string
              description: Products of these integrations
            mappedSKU:
              type: boolean
              description: Products with SKU mapping defined
            parentExtProductId:
              type: array
              items:
                type: string
              description: All variants of a parent products by list of external ids
            productId:
              type: array
              items:
                type: string
              description: Products by list of productId
            status:
              type: array
              items:
                $ref: '#/components/schemas/ProductStatus'
              description: Products with this status
            tags:
              $ref: '#/components/schemas/EntityTags'
            types:
              type: array
              items:
                $ref: '#/components/schemas/ProductType'
              description: Products matching specified types
    ProductsListFilter:
      allOf:
        - $ref: '#/components/schemas/ProductsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Products Filter
          properties:
            bundleSKU:
              type: string
              description: Products of the bundle with this SKU
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Products by list of categories of the product related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Products by list of types of the product related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            hasSourceDoc:
              type: boolean
              description: Products containing a source document
            inBundle:
              type: string
              description: All bundles containing the item with this SKU
            inventoryNotTracked:
              type: boolean
              description: Retrieve products by inventoryNotTracked value (default - any)
            name:
              type: string
              description: Products by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            notPublished:
              type: boolean
              description: Products that do not have "published channels"
            publishedSKU:
              type: array
              items:
                type: string
              description: Products with this published SKU
            publishedStatus:
              type: array
              items:
                $ref: '#/components/schemas/ProductPublishedItemStatus'
              description: Products with this published status
            requestorId:
              type: string
              description: Requestor Id (- forcibly replaced with integration ID if the request came from an integration)
            sku:
              type: array
              items:
                type: string
              description: Products by list sku
            sku_gt:
              type: string
              description: Products in which SKU is lexicographically greater than the specified value
            sku_lt:
              type: string
              description: Products in which SKU is lexicographically less than the specified value
    Purchase:
      allOf:
        - type: object
          properties:
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the purchase
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the purchase
            integration:
              type: string
              description: Reference to integration that created an item
            purchaseId:
              type: string
              description: Purchase ID
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/PurchaseChangelogEntry'
        - $ref: '#/components/schemas/PurchaseCreateData'
        - $ref: '#/components/schemas/CoreObject'
    PurchaseChangelogEntry:
      allOf:
        - type: object
          properties:
            extOrderId:
              type: string
              description: External Order Id
            purchaseId:
              type: string
              description: Purchase order Id
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    PurchaseCost:
      type: object
      required:
        - name
        - cost
      properties:
        cost:
          type: number
          format: float
          description: Cost
        name:
          type: string
          description: Name
        quantity:
          type: number
          format: float
          description: Quantity
    PurchaseCosts:
      type: array
      nullable: true
      items:
        $ref: '#/components/schemas/PurchaseCost'
      description: Purchase costs
    PurchaseCreateData:
      type: object
      xml:
        name: purchase
      required:
        - extOrderId
      properties:
        extOrderId:
          type: string
          description: External Purchase Order ID
        actualArrivalDate:
          type: string
          format: date-time
          description: Actual Arrival Date (from most recent Arrival)
        billingAddress:
          $ref: '#/components/schemas/Address'
        costs:
          $ref: '#/components/schemas/PurchaseCosts'
        currency:
          type: string
          description: Order currency code
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        disableShipmentsReuse:
          type: boolean
          description: Hint to whether shipmentId should be re-used, or not
        employeeName:
          type: string
          description: Purchase order created by
        expectedArrivalDate:
          type: string
          format: date-time
          description: Expected Arrival Date
        extOrderApiId:
          type: string
          description: External System Purchase Order API ID
        extReferenceId:
          type: string
          description: Reference ID
        holdUntil:
          type: string
          format: date-time
        incoterms:
          type: string
          description: International Commercial Terms
        internal:
          $ref: '#/components/schemas/InternalInfo'
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/PurchaseLineItem'
        purchaseNotes:
          type: string
          description: Purchase Notes
        purchaseOrderDate:
          type: string
          format: date-time
          description: Purchase Order Date
        purchaseTax:
          type: number
          format: float
          description: Purchase Tax
        referenceNumber:
          type: string
          description: Purchase order reference number
        shipByDate:
          type: string
          format: date-time
          description: 'Date-time by which the vendor is expected to ship the purchase order (SLA target). Not a hard deadline: no automatic action is taken and no error occurs when the date passes — it is stored for visibility and vendor-performance tracking'
        shippingCarrier:
          type: string
          description: Shipping Carrier
        shippingNotes:
          type: string
          description: Shipping Notes
        shippingService:
          type: string
          description: Shipping Service Type
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/PurchaseStatus'
        subTotalPrice:
          type: number
          format: float
          description: Sub Total Price
        tags:
          $ref: '#/components/schemas/EntityTags'
        timestamp:
          type: string
          format: date-time
          description: General Purpose Time Stamp
        toAddress:
          $ref: '#/components/schemas/Address'
          description: Ship to address
        toLocationId:
          type: string
          description: Ship to location ID
        totalPrice:
          type: number
          format: float
          description: Total Price
        vendorAddress:
          $ref: '#/components/schemas/Address'
          description: Vendor address
    PurchaseCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        purchase:
          $ref: '#/components/schemas/Purchase'
        status:
          type: string
          enum:
            - submitted
            - failed
    PurchaseFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    PurchaseFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            purchase:
              $ref: '#/components/schemas/Purchase'
    PurchaseLabelRequest:
      type: object
      required:
        - carrier
        - serviceLevel
        - userId
      properties:
        carrier:
          type: string
          description: Shipping carrier (e.g., FedEx, UPS, USPS)
        serviceLevel:
          type: string
          description: Service level (e.g., Ground, Express, Priority)
        userId:
          type: string
          description: Associate user ID requesting the label
        packageDimensions:
          type: object
          properties:
            length:
              type: number
              format: float
            width:
              type: number
              format: float
            height:
              type: number
              format: float
        packageWeight:
          type: number
          format: float
          description: Package weight in ounces
    PurchaseLabelResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            label:
              type: object
              properties:
                labelUrl:
                  type: string
                  description: URL to download/print the label
                trackingNumber:
                  type: string
                  description: Carrier tracking number
                carrier:
                  type: string
                serviceLevel:
                  type: string
                estimatedDelivery:
                  type: string
                  format: date-time
                cost:
                  type: number
                  format: float
            shipment:
              $ref: '#/components/schemas/Shipment'
    PurchaseLineItem:
      type: object
      required:
        - uniqueId
        - quantity
      properties:
        quantity:
          type: number
          format: float
          description: Item Quantity
        uniqueId:
          type: string
          description: Item unique Id (within purchase)
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        locationId:
          type: string
        name:
          type: string
          description: Item Name or Description
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        partId:
          type: string
          description: Manufacturer Part ID
        price:
          type: number
          format: float
          description: Item Price
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        receivedQuantity:
          type: number
          format: float
          description: Received quantity
        routed:
          type: boolean
        shippedQuantity:
          type: number
          format: float
          description: Shipped quantity
        sku:
          type: string
          description: Purchaser Item SKU
        upc:
          type: string
          description: Item UPC
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    PurchaseStatus:
      type: string
      description: Purchase Status
      enum:
        - draft
        - new
        - onHold
        - toBeValidated
        - reviewRequired
        - readyForFulfillment
        - sentToFulfillment
        - partialFulfillment
        - fulfilled
        - inTransit
        - partialReceived
        - received
        - canceled
        - returned
        - refunded
        - archived
        - closed
    PurchaseUpdateData:
      type: object
      properties:
        actualArrivalDate:
          type: string
          nullable: true
          format: date-time
          description: Actual Arrival Date (from most recent Arrival)
        billingAddress:
          $ref: '#/components/schemas/AddressUpdateData'
        costs:
          $ref: '#/components/schemas/PurchaseCosts'
        currency:
          type: string
          description: Order currency code
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        disableShipmentsReuse:
          type: boolean
          description: Hint to whether shipmentId should be re-used, or not
          nullable: true
        employeeName:
          type: string
          nullable: true
          description: Purchase order created by
        expectedArrivalDate:
          type: string
          nullable: true
          format: date-time
          description: Expected Arrival Date
        extReferenceId:
          type: string
          description: Reference ID
        holdUntil:
          type: string
          format: date-time
          nullable: true
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/PurchaseUpdateLineItem'
        purchaseNotes:
          type: string
          nullable: true
          description: Purchase Notes
        purchaseTax:
          type: number
          nullable: true
          format: float
          description: Purchase Tax
        referenceNumber:
          type: string
          nullable: true
          description: Purchase order reference number
        shipByDate:
          type: string
          nullable: true
          format: date-time
          description: 'Date-time by which the vendor is expected to ship the purchase order (SLA target). Not a hard deadline: no automatic action is taken and no error occurs when the date passes — it is stored for visibility and vendor-performance tracking'
        shippingCarrier:
          type: string
          nullable: true
          description: Shipping Carrier
        shippingNotes:
          type: string
          nullable: true
          description: Shipping Notes
        shippingService:
          type: string
          nullable: true
          description: Shipping Service Type
        sourceDoc:
          nullable: true
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/PurchaseStatus'
        subTotalPrice:
          type: number
          nullable: true
          format: float
          description: Sub Total Price
        tags:
          $ref: '#/components/schemas/EntityTags'
        timestamp:
          type: string
          nullable: true
          format: date-time
          description: General Purpose Time Stamp
        toAddress:
          $ref: '#/components/schemas/AddressNullable'
          description: Ship to address
        toLocationId:
          type: string
          nullable: true
          description: Ship to location ID
        totalPrice:
          type: number
          nullable: true
          format: float
          description: Total Price
        vendorAddress:
          $ref: '#/components/schemas/AddressUpdateData'
          description: Vendor address
    PurchaseUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            purchase:
              $ref: '#/components/schemas/PurchaseUpdateData'
    PurchaseUpdateLineItem:
      type: object
      properties:
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        locationId:
          type: string
        name:
          type: string
          description: Item Name or Description
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        partId:
          type: string
          description: Manufacturer Part ID
        price:
          type: number
          format: float
          description: Item Price
        quantity:
          type: number
          format: float
          description: Item Quantity
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        receivedQuantity:
          type: number
          format: float
          description: Received quantity
        routed:
          type: boolean
        shippedQuantity:
          type: number
          format: float
          description: Shipped quantity
        sku:
          type: string
          description: Purchaser Item SKU
        uniqueId:
          type: string
          description: Item unique Id (within purchase)
        upc:
          type: string
          description: Item UPC
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    PurchaseUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/PurchaseUpdateData'
      xml:
        name: request
    PurchaseUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            purchase:
              $ref: '#/components/schemas/Purchase'
    PurchasesCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            purchases:
              type: array
              items:
                $ref: '#/components/schemas/PurchaseCreateResult'
    PurchasesCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/PurchaseCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    PurchasesCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            purchases:
              type: array
              items:
                $ref: '#/components/schemas/PurchaseCreateResult'
    PurchasesDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/PurchasesDeleteFilter'
    PurchasesDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/PurchasesFilter'
        - type: object
          description: Delete Purchases Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Purchases assigned these orgModes
    PurchasesDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted purchases
            filters:
              $ref: '#/components/schemas/PurchasesDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            purchases:
              type: array
              items:
                $ref: '#/components/schemas/Purchase'
    PurchasesFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Purchases Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted purchases
            extOrderId:
              type: array
              items:
                type: string
              description: Purchases by list of external purchase IDs
            extReferenceId:
              type: array
              items:
                type: string
              description: Purchases by `extReferenceId` list
            integration:
              type: array
              items:
                type: string
              description: Purchases of these integrations
            purchaseId:
              type: array
              items:
                type: string
              description: Purchases by list of purchaseId
            status:
              type: array
              items:
                $ref: '#/components/schemas/PurchaseStatus'
              description: Purchases by list of statuses
            tags:
              $ref: '#/components/schemas/EntityTags'
            toLocationId:
              type: array
              items:
                type: string
              description: Purchases by list of toLocationId
    PurchasesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/PurchasesListFilter'
    PurchasesListFilter:
      allOf:
        - $ref: '#/components/schemas/PurchasesFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Purchases Filter
          properties:
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Purchases by list of categories of the purchase related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Purchases by list of types of the purchase related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            hasSourceDoc:
              type: boolean
              description: Purchases containing a source document
            timestamp:
              type: boolean
              description: if set to true use timestamp instead of create time
    PurchasesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - purchases
          properties:
            purchases:
              type: array
              items:
                $ref: '#/components/schemas/Purchase'
            filters:
              $ref: '#/components/schemas/PurchasesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    RawScheduleBody:
      type: object
      description: |
        Underlying property bag for a Schedule. All fields are optional here; the
        downstream wrappers `ScheduleUpdateData` and `ScheduleBody` decide which
        fields are required for their respective wire contexts (PATCH vs. POST).
      properties:
        description:
          type: string
          maxLength: 2000
          description: Free-text operational description. Trimmed server-side.
        name:
          type: string
          minLength: 1
          maxLength: 200
          description: |
            Human-readable name. Trimmed server-side before validation. Unique within
            an organization (case-sensitive, post-trim).
        scheduleExceptions:
          type: array
          nullable: true
          maxItems: 200
          description: |
            One-off or holiday overrides to the recurring `windows`. Each entry
            either fully closes the schedule (`effect: closed`, the default) or
            sets special hours (`effect: open` with `windows`) on a single
            calendar `date` or a recognized `holiday` symbol.

            Send `null` or omit the field to leave it unconfigured — consumers
            then inherit the exceptions of a default/integration schedule; `null`
            behaves exactly like omitting it and never round-trips as `null`
            (reads back absent). Send `[]` to set an explicit empty set (no
            overrides, and nothing inherited). Send entries to set them. Full
            replacement on update (not a delta): on update, `null` or `[]` clears
            any previously stored exceptions.

            To resolve holiday symbols to concrete observed dates over a calendar
            range, call `GET /schedules/{ScheduleId}/resolved-exceptions?from=&to=`.
          items:
            $ref: '#/components/schemas/ScheduleException'
        timezone:
          type: string
          nullable: true
          description: |
            IANA timezone identifier (e.g., "America/New_York"). The literal string
            "UTC" is accepted as a convenience and normalized to "Etc/UTC" on write.

            `null` in storage indicates a templated/contextual schedule: the consumer
            (Location, holds policy, etc.) supplies the interpretation timezone at
            use time. A single "9-5 weekday" definition can be referenced from
            warehouses across multiple regions without copying the windows per zone.
            The schema declares `nullable: true` because GET responses for templated
            schedules legitimately carry `"timezone": null`.

            Wire idiom for clients: do not send literal `null` on either create or
            update. To create a templated schedule, omit the `timezone` field on
            POST — the server canonicalizes the absence to `null` in storage. To
            switch a pinned schedule back to templated, delete and recreate it.
            `POST {"timezone": null}` is rejected by the descriptor (generator drops
            `nullable: true` on create). `PATCH {"timezone": null}` is rejected by
            the handler for symmetry with create and to keep storage semantics
            consistent (the underlying update layer translates null to `$unset`,
            which would diverge from the BSON-null storage shape; rather than work
            around that, we just disallow the wire form).
        windows:
          type: array
          maxItems: 500
          description: |
            Replacement set of active windows on the weekly circular timeline (full
            replacement on update, not delta). Server canonicalizes window order on write.
          items:
            $ref: '#/components/schemas/ScheduleWindow'
    Receipt:
      allOf:
        - type: object
          properties:
            arrivalIntegration:
              type: string
              description: Reference to integration that created arrival tied to receipt
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the receipt
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the receipt
            extArrivalId:
              type: string
              description: External arrival ID
            extOrderId:
              type: string
              description: External Order ID
            integration:
              type: string
              description: Reference to integration that created receipt
            lineItems:
              type: array
              items:
                $ref: '#/components/schemas/ReceiptItemWithRefs'
            orderIntegration:
              type: string
              description: Reference to integration that created order tied to receipt
            receiptId:
              type: string
              description: Receipt ID
            status:
              type: string
              enum:
                - received
                - deleted
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/ReceiptChangelogEntry'
        - $ref: '#/components/schemas/ReceiptCreateBaseData'
        - $ref: '#/components/schemas/CoreObject'
    ReceiptChangelogEntry:
      allOf:
        - type: object
          properties:
            arrivalId:
              type: string
              description: Arrival Id
            receiptId:
              type: string
              description: Receipt Id
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    ReceiptCreateBaseData:
      type: object
      xml:
        name: receipt
      required:
        - arrivalId
      properties:
        arrivalId:
          type: string
          description: Arrival ID
        actualArrivalDate:
          type: string
          format: date-time
          description: Actual arrival date
        currency:
          type: string
          description: Currency
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extReceiptApiId:
          type: string
          description: External System Receipt API ID
        extReceiptId:
          type: string
          description: Reference to receipt on external system (vendor)
        internal:
          $ref: '#/components/schemas/InternalInfo'
        shippingCarrier:
          type: string
          description: Shipping Carrier
        shippingClass:
          type: string
          description: Shipping Carrier
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        tags:
          $ref: '#/components/schemas/EntityTags'
    ReceiptCreateData:
      allOf:
        - type: object
          xml:
            name: receipt
          required:
            - arrivalId
            - lineItems
          properties:
            lineItems:
              type: array
              items:
                $ref: '#/components/schemas/ReceiptItem'
        - $ref: '#/components/schemas/ReceiptCreateBaseData'
    ReceiptCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        receipt:
          $ref: '#/components/schemas/Receipt'
        status:
          type: string
          enum:
            - submitted
            - failed
    ReceiptFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ReceiptFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            receipt:
              $ref: '#/components/schemas/Receipt'
    ReceiptItem:
      type: object
      required:
        - sku
        - quantity
      properties:
        quantity:
          type: number
          format: float
          description: Item Quantity
        sku:
          type: string
          description: Item SKU
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        expirationDate:
          description: Item expirationDate
          type: string
          format: date-time
        lotNumber:
          type: string
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        palletQuantity:
          type: number
          format: integer
        quantityDamaged:
          type: number
          format: float
          description: Received item damaged quantity
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        serialNumbers:
          description: |
            Item serial numbers. Each entry is either a single serial (e.g. "10105") or an inclusive alphanumeric range "FROM..TO" using the ".." separator (e.g. "10120..10199" or "SN-00100..SN-00199"). Range endpoints must share an identical prefix and end with a numeric tail. Single serials may contain hyphens; only ".." denotes a range.
          type: array
          items:
            type: string
        uniqueId:
          type: string
          description: Item unique Id (to be matched with arrival line item)
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    ReceiptItemWithRefs:
      allOf:
        - $ref: '#/components/schemas/ReceiptItem'
        - type: object
          properties:
            extOrderId:
              type: string
              description: Item extOrderId
            purchaseId:
              type: string
              description: Item purchaseId
            transferId:
              type: string
              description: Item transferId
    ReceiptUpdateData:
      type: object
      xml:
        name: receipt
      properties:
        actualArrivalDate:
          type: string
          format: date-time
          description: Actual arrival date
        arrivalId:
          type: string
          description: Arrival ID
        currency:
          type: string
          description: Currency
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extArrivalId:
          type: string
          description: External arrival ID
        extReceiptId:
          type: string
          description: Reference to receipt on external system (vendor)
        internal:
          $ref: '#/components/schemas/InternalInfo'
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ReceiptItem'
        shippingCarrier:
          type: string
          description: Shipping Carrier
        shippingClass:
          type: string
          description: Shipping Carrier
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        tags:
          $ref: '#/components/schemas/EntityTags'
    ReceiptUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            receipt:
              $ref: '#/components/schemas/ReceiptUpdateData'
    ReceiptUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ReceiptUpdateData'
      xml:
        name: request
    ReceiptUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            receipt:
              $ref: '#/components/schemas/Receipt'
    ReceiptsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            receipts:
              type: array
              items:
                $ref: '#/components/schemas/ReceiptCreateResult'
    ReceiptsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/ReceiptCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    ReceiptsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            receipts:
              type: array
              items:
                $ref: '#/components/schemas/ReceiptCreateResult'
    ReceiptsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ReceiptsDeleteFilter'
    ReceiptsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/ReceiptsFilter'
      description: Receipts Filter for Multiple Delete query
    ReceiptsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted receipts
            filters:
              $ref: '#/components/schemas/ReceiptsDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            receipts:
              type: array
              items:
                $ref: '#/components/schemas/Receipt'
    ReceiptsFilter:
      allOf:
        - type: object
          description: Receipts Filter
          properties:
            arrivalId:
              type: array
              items:
                type: string
              description: Receipts by list of arrivalId
            deleted:
              type: boolean
              description: Soft deleted receipts
            extArrivalId:
              type: array
              items:
                type: string
              description: Receipts by list of extArrivalId
            extOrderId:
              type: array
              items:
                type: string
              description: Receipts by list of extOrderId
            extReceiptId:
              type: array
              items:
                type: string
              description: Receipts by list of extReceiptId
            integration:
              type: array
              items:
                type: string
              description: Receipts of these integrations
            receiptId:
              type: array
              items:
                type: string
              description: Receipts by list of receiptId
            tags:
              $ref: '#/components/schemas/EntityTags'
        - $ref: '#/components/schemas/BaseFilter'
    ReceiptsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ReceiptsListFilter'
    ReceiptsListFilter:
      allOf:
        - $ref: '#/components/schemas/ReceiptsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          properties:
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Receipts by list of categories of the receipt related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Receipts by list of types of the receipt related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            hasSourceDoc:
              type: boolean
              description: Receipts containing a source document
      description: Receipts Filter for List query
    ReceiptsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - receipts
          properties:
            receipts:
              type: array
              items:
                $ref: '#/components/schemas/Receipt'
            filters:
              $ref: '#/components/schemas/ReceiptsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    Refund:
      allOf:
        - type: object
          properties:
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the refund
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the refund
            integration:
              type: string
              description: Reference to integration that created an item
            refundId:
              type: string
              description: Refund ID
        - $ref: '#/components/schemas/RefundCreateData'
        - $ref: '#/components/schemas/CoreObject'
    RefundCreateData:
      type: object
      required:
        - returnId
        - type
      properties:
        returnId:
          type: string
          description: Return ID
        type:
          $ref: '#/components/schemas/RefundType'
        amount:
          type: number
          format: float
          description: Refund amount
        creditIssued:
          type: number
          format: float
          description: Credit issued to customer
        creditSpent:
          type: number
          format: float
          description: Credit spent by customer
        currency:
          type: string
          description: Refund currency
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        customerInvoiceAmount:
          type: number
          format: float
          description: Customer invoice amount
        extOrderId:
          type: string
          description: Order ID on external system
        extReferenceId:
          type: string
          description: Reference ID
        extRefundApiId:
          type: string
          description: External System Refund API ID
        extRefundId:
          type: string
          description: Refund ID on external system
        internal:
          $ref: '#/components/schemas/InternalInfo'
        merchantInvoiceAmount:
          type: number
          format: float
          description: Merchant invoice amount
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/RefundStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
    RefundCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            refund:
              $ref: '#/components/schemas/RefundCreateData'
    RefundCreateRequest:
      allOf:
        - $ref: '#/components/schemas/RefundCreateData'
      xml:
        name: request
    RefundCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            refund:
              $ref: '#/components/schemas/Refund'
    RefundFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    RefundFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            refund:
              $ref: '#/components/schemas/Refund'
    RefundStatus:
      type: string
      description: Refund status
      enum:
        - pending
        - settled
    RefundType:
      type: string
      description: Refund type
      enum:
        - refund
        - voucher
    RefundUpdateData:
      type: object
      properties:
        amount:
          type: number
          format: float
          description: Refund amount
        creditIssued:
          type: number
          format: float
          description: Credit issued to customer
        creditSpent:
          type: number
          format: float
          description: Credit spent by customer
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        customerInvoiceAmount:
          type: number
          format: float
          description: Customer invoice amount
        extReferenceId:
          type: string
          description: Reference ID
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        merchantInvoiceAmount:
          type: number
          format: float
          description: Merchant invoice amount
        sourceDoc:
          nullable: true
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/RefundStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
    RefundUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            refund:
              $ref: '#/components/schemas/RefundUpdateData'
    RefundUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/RefundUpdateData'
      xml:
        name: request
    RefundUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            refund:
              $ref: '#/components/schemas/Refund'
    RefundsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/RefundsDeleteFilter'
    RefundsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/RefundsFilter'
        - type: object
          description: Delete Refunds Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Refunds assigned these orgModes
    RefundsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted refunds
            filters:
              $ref: '#/components/schemas/RefundsDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            refunds:
              type: array
              items:
                $ref: '#/components/schemas/Refund'
    RefundsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Refunds Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted refunds
            extOrderId:
              type: array
              items:
                type: string
              description: Refunds by list of external order ids
            extReferenceId:
              type: array
              items:
                type: string
              description: Refunds by `extReferenceId` list
            extRefundId:
              type: array
              items:
                type: string
              description: Refunds by list of external refund ids
            extReturnId:
              type: array
              items:
                type: string
              description: Refunds by list of external refund ids
            integration:
              type: array
              items:
                type: string
              description: Refunds of these integrations
            refundId:
              type: array
              items:
                type: string
              description: Refunds by list of refundId
            status:
              type: array
              items:
                $ref: '#/components/schemas/RefundStatus'
              description: Refunds by list of statuses
            tags:
              $ref: '#/components/schemas/EntityTags'
            type:
              type: array
              items:
                $ref: '#/components/schemas/RefundType'
              description: Refunds by list of types
    RefundsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/RefundsFilter'
    RefundsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/RefundsFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            refunds:
              type: array
              items:
                $ref: '#/components/schemas/Refund'
    RequestLabelsBody:
      type: object
      required:
        - userId
      properties:
        userId:
          type: string
          description: Associate user ID requesting the labels
        carrierCode:
          type: string
          description: |
            Carrier to buy from (e.g., USPS, UPS, FedEx) for cartons that name no quoted rate. A carton carrying extShipmentId + rateId buys that rate instead, and this value is then used only to re-select an equivalent rate if the quote has expired.
        cartons:
          type: array
          description: |
            Package details. Each carton becomes one Label entity. Each carton MUST include extLabelId — the client-generated unique key for the label. Retrying with the same extLabelId set is safe and returns the existing labels (idempotent replay).
          items:
            type: object
            required:
              - extLabelId
            properties:
              extLabelId:
                type: string
                description: |
                  Client-generated unique label key (per org). Duplicate within the request body or across active labels returns 409 Conflict.
              extShipmentId:
                type: string
                description: |
                  Optional. EasyPost shipment id (shp_...) returned by /get-rates for this carton. When set with rateId, the connector buys that exact quoted rate instead of auto-selecting a new one.
              rateId:
                type: string
                description: |
                  Optional. Chosen rate id (rate_...) from /get-rates. Buys this specific carrier/service. If the quote has gone stale the connector re-rates and matches by carrier/service. Must be sent together with extShipmentId; on its own it is rejected with 400.
              carrier:
                type: string
                description: |
                  Optional. Carrier of the chosen rate (echoed from /get-rates). Used to re-select the same option if the quoted rateId has gone stale.
              service:
                type: string
                description: |
                  Optional. Service level of the chosen rate (echoed from /get-rates). Paired with carrier for the stale-rate re-select.
              weight:
                type: object
                properties:
                  value:
                    type: number
                  unit:
                    type: string
                    enum:
                      - OUNCE
                      - POUND
                      - GRAM
                      - KILOGRAM
              dimensions:
                type: object
                properties:
                  length:
                    type: number
                  width:
                    type: number
                  height:
                    type: number
                  unit:
                    type: string
                    enum:
                      - INCH
                      - CENTIMETER
              lineItems:
                type: array
                items:
                  type: object
                  properties:
                    orderLineId:
                      type: string
                    quantity:
                      type: number
        connectorName:
          type: string
          description: |
            Connector name to use for label generation. Default: connector-shipping-easypost. Use connector-shipping-easyship for Easyship.
        insuranceAmount:
          type: number
          default: 0
          description: Insurance amount in USD per carton
        labelFormat:
          type: string
          enum:
            - PDF
            - ZPL
            - PNG
          default: PDF
        labelIntegrationId:
          type: string
          description: |
            Integration ID of the label connector (e.g., EasyPost). If omitted, auto-discovers by connectorName for the org.
        serviceCode:
          type: string
          description: |
            Service level to buy (e.g., Priority, Ground) for cartons that name no quoted rate. Paired with carrierCode for the expired-quote re-select.
    RequestLabelsResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            labels:
              type: array
              items:
                type: object
                properties:
                  labelId:
                    type: string
                  extLabelId:
                    type: string
                    description: Client-supplied external label key (echoed back).
                  labelUrl:
                    type: string
                    description: Absolute URL to download/print the label
                  trackingNumber:
                    type: string
                  carrier:
                    type: string
                    description: Carrier the label was purchased from
                  serviceLevel:
                    type: string
                    description: Service level the label was purchased at
                  labelFormat:
                    type: string
            shipment:
              $ref: '#/components/schemas/Shipment'
    RequiresShippingSource:
      type: string
      enum:
        - source
        - integration
        - automation
        - manual
        - unknown
    ResolvedScheduleException:
      type: object
      description: |
        A stored schedule exception expanded to a concrete calendar day within a
        requested range. Computed server-side (not stored). The `date` is a
        timezone-independent civil day in ISO `YYYY-MM-DD`.

        Precedence when more than one stored exception lands on the same day:
        an explicit one-off `date` exception outranks a `holiday`-derived one.
        The winning exception is reflected in `effect`/`windows`/`source`; any
        exception it displaced is listed in `overrides`.
      properties:
        date:
          type: string
          description: Concrete observed/one-off calendar day, ISO `YYYY-MM-DD`.
        effect:
          type: string
          enum:
            - closed
            - open
          description: Same meaning as on the stored exception.
        label:
          type: string
          description: Operator label carried over from the stored exception, if any.
        overrides:
          type: array
          description: |
            Stored exceptions that also fell on this day but lost to `source` by
            the precedence rule (explicit `date` outranks `holiday`) — e.g. a
            holiday hidden by an explicit one-off date. Present only when at least
            one exception was displaced.
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - date
                  - holiday
              holiday:
                type: string
              effect:
                type: string
                enum:
                  - closed
                  - open
              label:
                type: string
        source:
          type: object
          description: Which stored exception produced this entry.
          properties:
            type:
              type: string
              enum:
                - date
                - holiday
            holiday:
              type: string
              description: The holiday symbol, when `source.type` is `holiday`.
        windows:
          type: array
          description: Special open-hours for an open (`effect=open`) day; omitted when closed.
          items:
            $ref: '#/components/schemas/TimeOfDayWindow'
    Return:
      allOf:
        - type: object
          properties:
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the return
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the return
            extReferenceUrl:
              type: string
            integration:
              type: string
              description: Reference to integration that created an item
            receipts:
              type: array
              items:
                $ref: '#/components/schemas/ReturnReceipt'
            returnId:
              type: string
              description: Return ID
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/ReturnChangelogEntry'
        - $ref: '#/components/schemas/ReturnCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ReturnChangelogEntry:
      allOf:
        - type: object
          properties:
            extReturnId:
              type: string
              description: External Return Id
            returnId:
              type: string
              description: Return Id
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    ReturnCreateData:
      type: object
      properties:
        arrivedAt:
          type: string
          format: date-time
        completedAt:
          type: string
          format: date-time
        currency:
          type: string
          description: Currency value, e.g. 'USD'
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        customerNotes:
          type: string
          description: Customer notes
        discount:
          type: number
          format: float
        estimatedTotal:
          type: number
          format: float
          description: Expected refund total for the return as calculated by the source system — generally subTotal adjusted for discount, tax, shipping refund, and fees such as restockingFee and shippingLabelFee. Pipe17 stores it as-is and does not compute it
        expectedArrivalDate:
          type: string
          format: date-time
          description: Expected arrival date
        extReferenceId:
          type: string
          description: Reference ID
        extReturnApiId:
          type: string
          description: External System Return API ID
        extReturnId:
          type: string
          description: Return ID on external system
        fulfillmentIntegrationId:
          type: string
          description: fulfillment integration Id
        internal:
          $ref: '#/components/schemas/InternalInfo'
        isExchange:
          type: boolean
        isGift:
          type: boolean
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ReturnLineItem'
        locationId:
          type: string
          description: Destination location Id
        notes:
          type: string
          description: Merchant notes
        refundedAt:
          type: string
          format: date-time
        requiresShipping:
          type: boolean
        restockingFee:
          type: number
          format: float
        shippingAddress:
          $ref: '#/components/schemas/Address'
          description: Customer Address (ship from address)
        shippingCarrier:
          type: string
          description: shipping carrier
        shippingLabelFee:
          type: number
          format: float
        shippingPrice:
          type: number
          format: float
        shippingQuote:
          type: number
          format: float
        shippingRefund:
          type: number
          format: float
        shippingService:
          type: string
          description: shipping service
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/ReturnStatus'
        subTotal:
          type: number
          format: float
          description: Sum of the returned line items' prices (unit price times quantity), typically before discounts, taxes, shipping, and fees. Provided by the return source; Pipe17 stores it as-is and does not recalculate it
        tags:
          $ref: '#/components/schemas/EntityTags'
        tax:
          type: number
          format: float
        total:
          type: number
          format: float
        trackingNumber:
          type: string
          description: Tracking number
    ReturnCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            return:
              $ref: '#/components/schemas/ReturnCreateData'
    ReturnCreateRequest:
      allOf:
        - $ref: '#/components/schemas/ReturnCreateData'
      xml:
        name: request
    ReturnCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            return:
              $ref: '#/components/schemas/Return'
    ReturnFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ReturnFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            return:
              $ref: '#/components/schemas/Return'
    ReturnLineItem:
      type: object
      required:
        - uniqueId
        - extOrderId
        - sku
        - quantity
        - cause
      properties:
        cause:
          $ref: '#/components/schemas/ReturnLineItemCause'
          description: Return cause
        extOrderId:
          type: string
          description: original order extOrderId
        quantity:
          type: number
          format: float
          description: Item Quantity
        sku:
          type: string
          description: Item SKU
        uniqueId:
          type: string
          description: Item unique Id (within original order)
        action:
          $ref: '#/components/schemas/ReturnLineItemAction'
        causeNote:
          type: string
          description: Return cause note
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extShipmentId:
          type: string
          description: original order extShipmentId
        itemCharge:
          type: number
          format: float
          description: Return item original charge (??)
        itemDiscount:
          type: number
          format: float
          description: Return item original discount (??)
        itemEstimatedTotal:
          type: number
          format: float
          description: Return item estimated refund amount
        itemLabelCost:
          type: number
          format: float
          description: Return shipping label cost
        itemRestockingFee:
          type: number
          format: float
          description: Return item restocking fee
        itemReturnShippingPaid:
          type: number
          format: float
          description: Return shipping paid amount
        itemShippingCharge:
          type: number
          format: float
          description: Return item original shipping charge (??)
        itemTax:
          type: number
          format: float
          description: Return item original tax (??)
        itemTotal:
          type: number
          format: float
          description: Return item refund amount
        name:
          type: string
          description: Item Name or Description
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        originalSKUExchange:
          type: string
          description: |
            Canonical Pipe17 SKU that 'skuExchange' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantityDamaged:
          type: number
          format: float
          description: Damaged Item Quantity (quantityReceived includes quantityDamaged)
        quantityExchanged:
          type: number
          format: float
          description: Exchanged Item Quantity
        quantityReceived:
          type: number
          format: float
          description: Received Item Quantity
        quantityRefunded:
          type: number
          format: float
          description: Refunded Item Quantity
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        skuExchange:
          type: string
          description: Item SKU
        upc:
          type: string
          description: Item UPC
        upcExchange:
          type: string
          description: Item UPC
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    ReturnLineItemAction:
      type: string
      description: Return line item action
      enum:
        - refund
        - credit
        - exchange
        - none
    ReturnLineItemCause:
      type: string
      description: Return line item cause
      enum:
        - size
        - defective
        - invalid
        - unexpected
        - condition
        - other
    ReturnReceipt:
      type: object
      required:
        - extReceiptId
        - lineItems
      properties:
        extReceiptId:
          type: string
          description: Unique identifier of return receipt
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ReturnReceiptLineItem'
        actualArrivalDate:
          type: string
          format: date-time
          description: Actual arrival date
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
    ReturnReceiptLineItem:
      type: object
      required:
        - sku
        - quantity
      properties:
        quantity:
          type: number
          description: Received item quantity
        sku:
          type: string
          description: Received item SKU
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantityDamaged:
          type: number
          description: Received item damaged quantity
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        uniqueId:
          type: string
          description: Received item uniqueId
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    ReturnStatus:
      type: string
      description: Return status
      enum:
        - draft
        - authorized
        - shipped
        - expected
        - partialReceived
        - received
        - accepted
        - refunded
        - completed
        - expired
        - canceled
        - failed
    ReturnUpdateData:
      type: object
      properties:
        arrivedAt:
          type: string
          format: date-time
        completedAt:
          type: string
          format: date-time
        currency:
          type: string
          description: Currency value, e.g. 'USD'
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        customerNotes:
          type: string
          description: Customer notes
        discount:
          type: number
          format: float
        estimatedTotal:
          type: number
          format: float
          description: Expected refund total for the return as calculated by the source system — generally subTotal adjusted for discount, tax, shipping refund, and fees such as restockingFee and shippingLabelFee. Pipe17 stores it as-is and does not compute it
        expectedArrivalDate:
          type: string
          format: date-time
          description: Expected arrival date
        extReferenceId:
          type: string
        extReferenceUrl:
          type: string
        fulfillmentIntegrationId:
          type: string
          description: fulfillment integration Id
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isExchange:
          type: boolean
        isGift:
          type: boolean
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ReturnLineItem'
        locationId:
          type: string
          description: Destination location Id
        notes:
          type: string
          description: Merchant notes
        receipts:
          type: array
          items:
            $ref: '#/components/schemas/ReturnReceipt'
        refundedAt:
          type: string
          format: date-time
        requiresShipping:
          type: boolean
        restockingFee:
          type: number
          format: float
        shippingAddress:
          $ref: '#/components/schemas/Address'
          description: Customer Address
        shippingCarrier:
          type: string
          description: shipping carrier
        shippingLabelFee:
          type: number
          format: float
        shippingPrice:
          type: number
          format: float
        shippingQuote:
          type: number
          format: float
        shippingRefund:
          type: number
          format: float
        shippingService:
          type: string
          description: shipping service
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/ReturnStatus'
        subTotal:
          type: number
          format: float
          description: Sum of the returned line items' prices (unit price times quantity), typically before discounts, taxes, shipping, and fees. Provided by the return source; Pipe17 stores it as-is and does not recalculate it
        tags:
          $ref: '#/components/schemas/EntityTags'
        tax:
          type: number
          format: float
        total:
          type: number
          format: float
        trackingNumber:
          type: string
          description: Tracking number
    ReturnUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            return:
              $ref: '#/components/schemas/ReturnUpdateData'
    ReturnUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ReturnUpdateData'
      xml:
        name: request
    ReturnUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            return:
              $ref: '#/components/schemas/Return'
    ReturnsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ReturnsDeleteFilter'
    ReturnsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/ReturnsFilter'
        - type: object
          description: Delete Returns Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Returns assigned these orgModes
    ReturnsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted returns
            filters:
              $ref: '#/components/schemas/ReturnsDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            returns:
              type: array
              items:
                $ref: '#/components/schemas/Return'
    ReturnsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Returns Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted returns
            extOrderId:
              type: array
              items:
                type: string
              description: Returns by list of external order ids
            extReferenceId:
              type: array
              items:
                type: string
              description: Returns by `extReferenceId` list
            extReturnId:
              type: array
              items:
                type: string
              description: Returns by list of external return ids
            integration:
              type: array
              items:
                type: string
            locationId:
              type: array
              items:
                type: string
              description: Returns by list of location ids
            returnId:
              type: array
              items:
                type: string
              description: Returns by list of returnId
            status:
              type: array
              items:
                $ref: '#/components/schemas/ReturnStatus'
              description: Returns by list of statuses
            tags:
              $ref: '#/components/schemas/EntityTags'
    ReturnsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ReturnsFilter'
    ReturnsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ReturnsFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            returns:
              type: array
              items:
                $ref: '#/components/schemas/Return'
    Role:
      allOf:
        - type: object
          properties:
            roleId:
              type: string
              description: Role ID
            status:
              $ref: '#/components/schemas/RoleStatus'
        - $ref: '#/components/schemas/RoleCreateData'
        - $ref: '#/components/schemas/CoreObject'
    RoleCreateData:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: Role Name
        description:
          type: string
          description: Role's description
        internal:
          $ref: '#/components/schemas/InternalInfo'
        isPublic:
          type: boolean
          description: Global role indicator
        methods:
          $ref: '#/components/schemas/Methods'
    RoleCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            role:
              $ref: '#/components/schemas/RoleCreateData'
    RoleCreateRequest:
      allOf:
        - $ref: '#/components/schemas/RoleCreateData'
      xml:
        name: request
    RoleCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            role:
              $ref: '#/components/schemas/Role'
    RoleFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    RoleFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            role:
              $ref: '#/components/schemas/Role'
    RoleStatus:
      type: string
      description: Role status
      enum:
        - active
        - disabled
    RoleUpdateData:
      type: object
      properties:
        description:
          type: string
          description: Role's description
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        methods:
          $ref: '#/components/schemas/MethodsUpdateData'
        name:
          type: string
          description: Role Name
        status:
          $ref: '#/components/schemas/RoleStatus'
    RoleUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            role:
              $ref: '#/components/schemas/RoleUpdateData'
    RoleUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/RoleUpdateData'
      xml:
        name: request
    RoleUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            role:
              $ref: '#/components/schemas/Role'
    RolesDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    RolesDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    RolesFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Roles Filter
          properties:
            name:
              type: string
              description: Roles by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            roleId:
              type: array
              items:
                type: string
              description: Roles by list of roleId
            status:
              type: array
              items:
                $ref: '#/components/schemas/RoleStatus'
              description: Roles by list of statuses
    RolesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/RolesListFilter'
    RolesListFilter:
      allOf:
        - $ref: '#/components/schemas/RolesFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Roles Filter
    RolesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/RolesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            roles:
              type: array
              items:
                $ref: '#/components/schemas/Role'
    Routing:
      allOf:
        - type: object
          properties:
            routingId:
              type: string
              description: Routing ID
        - $ref: '#/components/schemas/RoutingCreateData'
        - $ref: '#/components/schemas/CoreObject'
    RoutingCreateData:
      type: object
      required:
        - isPublic
        - description
        - enabled
        - filter
      properties:
        description:
          type: string
          description: Description
        enabled:
          type: boolean
          description: Is Routing Filter Enabled
        filter:
          type: string
          description: Routing Filter
        isPublic:
          type: boolean
          description: Public Routing
        internal:
          $ref: '#/components/schemas/InternalInfo'
        uuid:
          type: string
          description: UUID
    RoutingCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            routing:
              $ref: '#/components/schemas/RoutingCreateData'
    RoutingCreateRequest:
      allOf:
        - $ref: '#/components/schemas/RoutingCreateData'
      xml:
        name: request
    RoutingCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            routing:
              $ref: '#/components/schemas/Routing'
    RoutingFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    RoutingFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            routing:
              $ref: '#/components/schemas/Routing'
    RoutingStatus:
      type: string
      description: |
        Routing Status:
          * `pending` - order should be be processed by Order Routing engine once its status is readyForFulfillment
          * `ready` - order is ready to be processed by Order Routing engine. This status is applied
            * when order status transitions to readyForFulfillment and current routing status is `pending`
            * when routing status is `acknowledged` or `failed` and significant order properties are changed
          * `pendingInventory` - order should be routed by Order Routing engine once inventory is available
          * `acknowledged` - order is acknowledged by Order Routing engine and will not be processed by Order routing
          * `disabled` - order routing is disabled
          * `failed` - order routing failed and will be retried by Order Routing engine
      enum:
        - disabled
        - pending
        - ready
        - acknowledged
        - failed
        - excluded
        - pendingInventory
    RoutingUpdateData:
      type: object
      properties:
        description:
          type: string
          description: Description
        enabled:
          type: boolean
          description: Is Routing Filter Enabled
        filter:
          type: string
          nullable: true
          description: Routing Filter
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
    RoutingUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            routing:
              $ref: '#/components/schemas/RoutingUpdateData'
    RoutingUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/RoutingUpdateData'
      xml:
        name: request
    RoutingUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            routing:
              $ref: '#/components/schemas/Routing'
    RoutingsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/RoutingsDeleteFilter'
    RoutingsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/RoutingsFilter'
        - type: object
          description: Delete Routings Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Routings assigned these orgModes
    RoutingsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted routings
            filters:
              $ref: '#/components/schemas/RoutingsDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            routings:
              type: array
              items:
                $ref: '#/components/schemas/Routing'
    RoutingsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Routings Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted routings
            routingId:
              type: array
              items:
                type: string
              description: Routings by list of routingId
            uuid:
              type: array
              items:
                type: string
              description: Routings by list of UUIDs
    RoutingsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/RoutingsListFilter'
    RoutingsListFilter:
      allOf:
        - $ref: '#/components/schemas/RoutingsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Routings Filter
          properties:
            desc:
              type: string
              description: Fetch routings by description (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
    RoutingsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/RoutingsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            routings:
              type: array
              items:
                $ref: '#/components/schemas/Routing'
    SSOConnection:
      type: object
      properties:
        auth0ConnectionId:
          type: string
          description: Auth0 connection ID
          example: con_abc123xyz
        auth0ConnectionName:
          type: string
          description: Auth0 connection name (must be unique)
          example: acme-corp-samlp
        displayName:
          type: string
          description: Human-readable display name
          example: ACME Corporation
        domains:
          type: array
          description: Allowed email domains for this SSO connection
          items:
            type: string
          example:
            - acme.com
            - acme.co.uk
        ssoConnectionId:
          type: string
          description: Unique identifier for the SSO connection (16-char hex)
          example: 7f8e9d0c1b2a3456
        strategy:
          $ref: '#/components/schemas/SSOConnectionStrategy'
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the connection was created
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when the connection was last updated
      required:
        - ssoConnectionId
        - auth0ConnectionName
        - auth0ConnectionId
        - strategy
        - domains
        - displayName
    SSOConnectionCreateError:
      type: object
      properties:
        code:
          type: integer
        errors:
          type: array
          items:
            type: string
        message:
          type: string
        success:
          type: boolean
    SSOConnectionCreateRequest:
      type: object
      properties:
        auth0ConnectionId:
          type: string
          description: Auth0 connection ID
        auth0ConnectionName:
          type: string
          description: Auth0 connection name (must be unique)
        displayName:
          type: string
          description: Display name
        domains:
          type: array
          description: Allowed email domains
          items:
            type: string
        strategy:
          $ref: '#/components/schemas/SSOConnectionStrategy'
      required:
        - auth0ConnectionName
        - auth0ConnectionId
        - strategy
        - domains
        - displayName
    SSOConnectionCreateResponse:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        sso_connection:
          $ref: '#/components/schemas/SSOConnection'
        success:
          type: boolean
    SSOConnectionDeleteError:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        success:
          type: boolean
    SSOConnectionDeleteResponse:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        success:
          type: boolean
    SSOConnectionListError:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        success:
          type: boolean
    SSOConnectionListFilterSSOConnectionId:
      type: array
      items:
        type: string
    SSOConnectionListFilterStrategy:
      type: array
      items:
        $ref: '#/components/schemas/SSOConnectionStrategy'
    SSOConnectionListResponse:
      type: object
      properties:
        code:
          type: integer
        pagination:
          $ref: '#/components/schemas/Pagination'
        sso_connections:
          type: array
          items:
            $ref: '#/components/schemas/SSOConnection'
        success:
          type: boolean
    SSOConnectionRetrieveError:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        success:
          type: boolean
    SSOConnectionRetrieveResponse:
      type: object
      properties:
        code:
          type: integer
        sso_connection:
          $ref: '#/components/schemas/SSOConnection'
        success:
          type: boolean
    SSOConnectionStrategy:
      type: string
      description: Authentication strategy for SSO connection
      enum:
        - samlp
        - oidc
        - waad
        - okta
        - google-apps
        - adfs
        - pingfederate
    SSOConnectionUpdateError:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        success:
          type: boolean
    SSOConnectionUpdateRequest:
      type: object
      properties:
        auth0ConnectionId:
          type: string
          description: Auth0 connection ID
        auth0ConnectionName:
          type: string
          description: Auth0 connection name
        displayName:
          type: string
        domains:
          type: array
          items:
            type: string
        strategy:
          $ref: '#/components/schemas/SSOConnectionStrategy'
    SSOConnectionUpdateResponse:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        sso_connection:
          $ref: '#/components/schemas/SSOConnection'
        success:
          type: boolean
    Schedule:
      allOf:
        - type: object
          properties:
            scheduleId:
              type: string
              description: Schedule ID (server-assigned, immutable)
        - $ref: '#/components/schemas/ScheduleBody'
        - $ref: '#/components/schemas/CoreObject'
    ScheduleBody:
      description: |
        POST shape for a Schedule. Inherits all properties from `RawScheduleBody`
        and marks `name` and `windows` as required at creation time. Embedded by
        consumers (Locations, holds policies, EDD pickup cutoffs, etc.) when they
        want to inline a schedule shape.

        `timezone` is intentionally NOT required on create. Its absence is a
        deliberate signal for a templated/contextual schedule (interpreted in a
        consumer-supplied zone) and is canonicalized to `null` server-side. See the
        field's description on `RawScheduleBody` for the wire idiom.

        The empty `properties: {}` in the second `allOf` shard is intentional: the
        api-conv-cli generator only collects `required` from shards that include a
        `properties` key, so we need it there to make the augmentation effective.
      allOf:
        - $ref: '#/components/schemas/RawScheduleBody'
        - type: object
          required:
            - name
            - windows
          properties: {}
      example:
        name: Weekday Office Hours
        timezone: America/New_York
        windows:
          - start:
              dayOfWeek: monday
              hour: 9
              minute: 0
            end:
              dayOfWeek: monday
              hour: 17
              minute: 0
          - start:
              dayOfWeek: tuesday
              hour: 9
              minute: 0
            end:
              dayOfWeek: tuesday
              hour: 17
              minute: 0
          - start:
              dayOfWeek: wednesday
              hour: 9
              minute: 0
            end:
              dayOfWeek: wednesday
              hour: 17
              minute: 0
          - start:
              dayOfWeek: thursday
              hour: 9
              minute: 0
            end:
              dayOfWeek: thursday
              hour: 17
              minute: 0
          - start:
              dayOfWeek: friday
              hour: 9
              minute: 0
            end:
              dayOfWeek: friday
              hour: 17
              minute: 0
    ScheduleCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            schedule:
              $ref: '#/components/schemas/ScheduleBody'
    ScheduleCreateRequest:
      allOf:
        - $ref: '#/components/schemas/ScheduleBody'
      xml:
        name: request
    ScheduleCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            schedule:
              $ref: '#/components/schemas/Schedule'
    ScheduleException:
      type: object
      description: |
        A one-off override to the recurring weekly `windows` on a specific
        calendar day or recognized holiday — either a concrete `date`
        (`type: date`) or a `holiday` symbol (`type: holiday`). Field rules:
          - `type: date`    => `date` set (YYYY-MM-DD), `holiday` omitted
          - `type: holiday` => `holiday` set, `date` omitted
          - `effect: open`  => non-empty `windows` (special/reduced hours)
          - `effect: closed` (default) => no `windows` (fully closed that day)
      required:
        - type
      properties:
        type:
          type: string
          description: Discriminator selecting the one-off-date vs holiday-symbol form.
          enum:
            - date
            - holiday
        date:
          type: string
          pattern: ^\d{4}-\d{2}-\d{2}$
          description: |
            Concrete calendar day in ISO `YYYY-MM-DD` form (required iff
            `type: date`). Stored as a plain string, NOT an OpenAPI `date`, to
            avoid datetime/timezone coercion in storage — an exception day is
            timezone-independent. Consumers apply the schedule's timezone only
            when merging the date with windows.
        effect:
          type: string
          default: closed
          description: |
            Whether the day is fully closed or open with special hours. `closed`
            (default) drops all recurring window-occurrences that day; `open`
            replaces them with this entry's `windows`.
          enum:
            - closed
            - open
        holiday:
          type: string
          description: |
            Recognized holiday symbol (required iff `type: holiday`),
            region-namespaced as `<ISO 3166-1 alpha-2 region>/<slug>`. The region
            code is standardized; the slug is Pipe17's own. Resolved server-side
            to observed calendar dates. Currently the US federal set; the
            namespace leaves room for other regions without a schema redesign.
          enum:
            - US/new_years_day
            - US/mlk_day
            - US/washingtons_birthday
            - US/memorial_day
            - US/juneteenth
            - US/independence_day
            - US/labor_day
            - US/columbus_day
            - US/veterans_day
            - US/thanksgiving
            - US/christmas_day
        label:
          type: string
          minLength: 1
          description: |
            Optional operator-supplied label (e.g. "Christmas Eve - early close").
            Trimmed before validation; must be non-empty after trimming if present.
        windows:
          type: array
          maxItems: 50
          description: |
            Special/reduced open-hours for an `effect: open` exception (required
            and non-empty iff `effect: open`; forbidden when `effect: closed`).
            Each is a within-day `TimeOfDayWindow`.
          items:
            $ref: '#/components/schemas/TimeOfDayWindow'
    ScheduleFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ScheduleFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            schedule:
              $ref: '#/components/schemas/Schedule'
    ScheduleLocationsResponse:
      description: |
        Locations referencing the given Schedule. Mirrors the entries returned
        by GET /locations.
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            locations:
              type: array
              items:
                $ref: '#/components/schemas/Location'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ScheduleResolvedExceptionsResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            from:
              type: string
              description: Echo of the requested range start, ISO `YYYY-MM-DD`.
            resolvedScheduleExceptions:
              type: array
              items:
                $ref: '#/components/schemas/ResolvedScheduleException'
            scheduleId:
              type: string
            to:
              type: string
              description: Echo of the requested range end, ISO `YYYY-MM-DD`.
    ScheduleUpdateData:
      description: |
        PATCH shape for a Schedule. Inherits all properties from `RawScheduleBody`;
        no fields are required (omit a property to leave it unchanged).
      allOf:
        - $ref: '#/components/schemas/RawScheduleBody'
    ScheduleUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            schedule:
              $ref: '#/components/schemas/ScheduleUpdateData'
    ScheduleUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ScheduleUpdateData'
      xml:
        name: request
    ScheduleUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            schedule:
              $ref: '#/components/schemas/Schedule'
    ScheduleWindow:
      type: object
      description: |
        A single active interval on the weekly circular timeline. Half-open semantics:
        `start` is inclusive, `end` is exclusive. A window with `start == end` covers the
        entire week and is legal only when it is the sole window in its schedule.
        A window with `start > end` (in minutes-since-monday-00:00) wraps the week
        boundary, e.g. friday 22:00 to monday 06:00.
      required:
        - start
        - end
      properties:
        end:
          $ref: '#/components/schemas/ScheduleWindowTime'
        start:
          $ref: '#/components/schemas/ScheduleWindowTime'
        label:
          type: string
          minLength: 1
          description: |
            Optional operator-supplied label (e.g. "morning shift"). Trimmed before
            validation; must be non-empty after trimming if present. No maximum length.
    ScheduleWindowTime:
      description: |
        A wall-clock instant on the weekly timeline at minute precision. Denotes the
        instant `<dayOfWeek> HH:MM:00.000` exactly (no flooring at query time).
        Composed as a `TimeOfDay` plus the weekday it falls on. The `dayOfWeek`
        shard is listed first so the generated descriptor field order
        (`dayOfWeek, hour, minute`) is unchanged by the refactor.
      allOf:
        - type: object
          required:
            - dayOfWeek
          properties:
            dayOfWeek:
              $ref: '#/components/schemas/DayOfWeek'
        - $ref: '#/components/schemas/TimeOfDay'
    SchedulesDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/SchedulesDeleteFilter'
    SchedulesDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/SchedulesFilter'
        - type: object
          description: Delete Schedules Filter
    SchedulesDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted schedules
            filters:
              $ref: '#/components/schemas/SchedulesDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            schedules:
              type: array
              items:
                $ref: '#/components/schemas/Schedule'
    SchedulesFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Schedules Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted schedules
            scheduleId:
              type: array
              items:
                type: string
              description: Schedules by list of scheduleId
    SchedulesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/SchedulesListFilter'
    SchedulesListFilter:
      allOf:
        - $ref: '#/components/schemas/SchedulesFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Schedules Filter
          properties:
            name:
              type: string
              description: Retrieve schedules by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
    SchedulesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/SchedulesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            schedules:
              type: array
              items:
                $ref: '#/components/schemas/Schedule'
    SetHoldingLocationRequest:
      type: object
      description: |
        Set temporal holding locations during pick-pack by store associate.
        `holdingLocations.wave` follows preserve/overwrite/clear semantics (null clears).
        `holdingLocations.shipments` is additive - request entries merge into the existing
        map; null on the map itself is rejected. Only shipmentIds assigned to the wave are accepted.
      properties:
        holdingLocations:
          $ref: '#/components/schemas/HoldingLocations'
      xml:
        name: request
    SetHoldingLocationResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            wave:
              $ref: '#/components/schemas/Wave'
    SettingType:
      type: string
      enum:
        - string
        - number
        - boolean
        - date
        - array
        - object
        - json
      description: Setting/Option Value Type
    Settings:
      allOf:
        - $ref: '#/components/schemas/SettingsUpdateData'
        - type: object
          properties:
            createdAt:
              type: string
              format: date-time
              readOnly: true
              description: When the object was created within Pipe17
            updatedAt:
              type: string
              format: date-time
              readOnly: true
              description: When the object was updated within Pipe17
    SettingsFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    SettingsFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            settings:
              $ref: '#/components/schemas/Settings'
    SettingsUpdateData:
      type: object
      properties:
        cleaningAllowed:
          type: boolean
          default: true
          description: Indicates whether the execution of cleaning functions is allowed or not
        cleaningRegion:
          type: string
          description: Region where cleaning functions are allowed to be executed
          enum:
            - us-west-2
            - us-east-1
          default: us-west-2
        monitoringAllowed:
          type: boolean
          default: true
          description: Indicates whether the execution of monitoring function is allowed or not
        monitoringRegion:
          type: string
          description: Region where monitoring function is allowed to be executed
          enum:
            - us-west-2
            - us-east-1
          default: us-west-2
        secretsProtected:
          type: boolean
          default: true
          description: Indicates whether access to integration secrets is disallowed for non-connectors or not
    SettingsUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            settings:
              $ref: '#/components/schemas/SettingsUpdateData'
    SettingsUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/SettingsUpdateData'
      xml:
        name: request
    SettingsUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
    Shipment:
      allOf:
        - type: object
          properties:
            autoEngUpdateStatus:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
            autoEngUpdateStatusUpdatedAt:
              $ref: '#/components/schemas/AutoEngUpdateStatusUpdatedAt'
            canceledAt:
              type: string
              format: date-time
              description: The cancellation date
            canceledBy:
              type: string
              description: The cancel requester Id
            canceledByType:
              type: string
              enum:
                - user
                - integration
                - apikey
              description: The cancel requester Id type
            cancellationStatus:
              $ref: '#/components/schemas/ShipmentCancellationStatus'
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the shipment
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the shipment
            extOrderApiId:
              type: string
              description: External System Order API ID
            fulfilledAt:
              type: string
              format: date-time
              description: Fulfillment timestamp
            integration:
              type: string
              description: Reference to integration that created an item
            lineItems:
              type: array
              items:
                $ref: '#/components/schemas/ShipmentLineItem'
            orderIntegration:
              type: string
              description: Reference to integration that created order tied to an item
            reused:
              type: boolean
              description: Indicates the shipment's extShipmentId is being reused in another one
            sentToFulfillmentAt:
              type: string
              format: date-time
              description: Sent to fulfillment timestamp
            shipmentId:
              type: string
              description: Shipment ID
            status:
              $ref: '#/components/schemas/ShipmentStatus'
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/ShipmentChangelogEntry'
            version:
              type: number
              description: Shipping request ordinal number - each new shipping request will have this value incremented for the same orderId
        - $ref: '#/components/schemas/ShipmentBase'
        - $ref: '#/components/schemas/CoreObject'
    ShipmentBase:
      type: object
      xml:
        name: shipment
      required:
        - extOrderId
        - shippingAddress
      properties:
        extOrderId:
          type: string
          description: Customer friendly ID on the order object
        shippingAddress:
          $ref: '#/components/schemas/Address'
        alternatePickupPersons:
          type: array
          description: Additional people authorized to pickup order (BOPIS/BOPAC)
          items:
            type: object
            properties:
              firstName:
                type: string
              lastName:
                type: string
              phone:
                type: string
              email:
                type: string
                format: email
              relationship:
                type: string
                description: Relationship to orderer
              authorizedBy:
                type: string
                description: Who authorized this person (usually order placer)
              authorizedAt:
                type: string
                format: date-time
        billingAddress:
          $ref: '#/components/schemas/Address'
          description: Purchaser Address
        currency:
          type: string
          description: Currency code (inherited from order)
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        customerPONumber:
          type: string
          nullable: true
          description: Customer purchase order number (inherited from order)
        deliveryProfiles:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryProfile'
        excludeFromReuse:
          type: boolean
          default: false
          description: A flag to indicate whether id of this SR can be reused, or not
        expectedDeliveryDate:
          type: string
          format: date-time
          description: First Priority to be respected
        expectedShipDate:
          type: string
          format: date-time
          description: Expected ship date
        extReferenceId:
          type: string
          description: Customer Friendly reference to this shipping request on destination vendor
        extReferenceUrl:
          type: string
          description: Direct link to this shipping request on destination vendor
        extShipmentId:
          type: string
          description: Customer Friendly reference to this shipping request on originating vendor, auto generated if not provided
        extStatus:
          type: string
          description: Shipping request status on external system
        fulfillmentIntegrationId:
          type: string
          description: Destination of this shipping request
        giftNote:
          type: string
          description: Shipping Gift note
        holdOptions:
          $ref: '#/components/schemas/ShipmentHoldOptions'
          nullable: true
        holdUntil:
          type: string
          format: date-time
        incoterms:
          type: string
          description: International Commercial Terms
        internal:
          $ref: '#/components/schemas/InternalInfo'
        locationId:
          type: string
          description: Id of location defined in organization
        orderCreateTime:
          type: string
          format: date-time
          description: Create time of linked order
        orderId:
          type: string
          description: Pipe17 Internal Order's orderId
        orderSource:
          type: string
          description: Actual Order source, Walmart, Etsy, etc
        orderSourceType:
          $ref: '#/components/schemas/OrderType'
        orderType:
          $ref: '#/components/schemas/ShipmentOrderType'
        overfulfillPolicy:
          $ref: '#/components/schemas/OverfulfillPolicy'
        packedAt:
          type: string
          format: date-time
          description: Timestamp of the 'pickStatus' transition to 'packed' state
        pickStatus:
          $ref: '#/components/schemas/ShipmentPickStatus'
        pickedAt:
          type: string
          format: date-time
          description: Timestamp of the 'pickStatus' transition to 'picked' state
        pickupPerson:
          type: object
          description: Primary person authorized to pickup order (BOPIS/BOPAC)
          nullable: true
          properties:
            firstName:
              type: string
              description: Pickup person first name
            lastName:
              type: string
              description: Pickup person last name
            phone:
              type: string
              description: Pickup person phone number
            email:
              type: string
              format: email
              description: Pickup person email
            pickupCode:
              type: string
              description: Unique code for pickup verification
            relationship:
              type: string
              description: Relationship to orderer (self, spouse, friend, etc.)
        pickupVerification:
          type: object
          description: Verification requirements for pickup (BOPIS/BOPAC)
          nullable: true
          properties:
            idRequired:
              type: boolean
              default: true
              description: Whether photo ID is required
            signatureRequired:
              type: boolean
              default: true
              description: Whether signature is required
            photoRequired:
              type: boolean
              default: false
              description: Whether photo evidence is required
            pickupCodeRequired:
              type: boolean
              default: true
              description: Whether pickup code verification is required
        priority:
          $ref: '#/components/schemas/Priority'
        privacyPolicy:
          type: array
          items:
            $ref: '#/components/schemas/PrivacyPolicy'
        shipAfterDate:
          type: string
          format: date-time
          description: Ship After Date
        shipByDate:
          type: string
          format: date-time
          description: Ship By Date
        shipCancelByDate:
          type: string
          format: date-time
          description: Ship Cancel By Date
        shippedAt:
          type: string
          format: date-time
          description: Timestamp of the 'pickStatus' transition to 'shipped' state
        shippingCarrier:
          type: string
          description: |
            Required with ShippingClass, 2nd Priority.
            Convention for fulfillment methods:
            - BOPIS: "PICKUP"
            - BOPAC (Curbside): "PICKUP"
            - BOSS: Actual courier (e.g., "FedEx", "UPS")
        shippingClass:
          type: string
          description: |
            Required with ShippingCarrier, 2nd Priority.
            Convention for fulfillment methods:
            - BOPIS: "INSTORE"
            - BOPAC (Curbside): "CURBSIDE"
            - BOSS: Service level (e.g., "Ground", "Express")
        shippingCode:
          type: string
          description: |
            1st Priority.
            Convention: "BOPIS", "BOPAC", or "BOSS" to indicate fulfillment method
        shippingLabels:
          type: array
          description: |
            References to the labels of this shipment. Each entry is either a labelId or a download URL of the form {apiBaseUrl}/labels/{labelId}/download — shipping connectors write URLs, the Pipe17 app writes ids, so both shapes occur. Resolve either with GET /labels?labelId=... — labels bought through request-labels are also tagged shipment:{shipmentId}.
          items:
            type: string
        shippingMethodMapping:
          type: boolean
          description: Enable shipping method mapping (defaults to company setting if not provided)
        shippingNote:
          type: string
          description: |
            Shipping Note.
            For BOPAC: Curbside instructions (car make/model/color, parking spot).
            For BOPIS: Special pickup instructions
        shippingPrice:
          type: number
          format: float
          description: Shipping price
        skipLocation:
          type: boolean
          description: A flag to indicate the location in this SR should be skipped during rerun-routing
        skipLocationUntil:
          type: string
          format: date-time
          description: 'Time limit for skipping location (default: no time-bound skip for that SR)'
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        storeId:
          type: string
          nullable: true
          description: Store ID for store fulfillment routing (populated by Order Routing Engine, read-only for clients)
        tags:
          $ref: '#/components/schemas/EntityTags'
        waveStatus:
          $ref: '#/components/schemas/ShipmentWaveStatus'
    ShipmentBox:
      allOf:
        - type: object
          properties:
            boxId:
              type: string
              description: Box Id
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the box
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the box
        - $ref: '#/components/schemas/ShipmentBoxCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ShipmentBoxCreateData:
      type: object
      required:
        - extBoxId
      properties:
        extBoxId:
          type: string
          description: External Box Id
        billOfLading:
          type: string
        customFields:
          type: array
          nullable: true
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        dimensionsUnit:
          type: string
          description: Dimensions UOM
          enum:
            - cm
            - in
            - ft
        height:
          type: number
          format: float
          description: Height
        internal:
          $ref: '#/components/schemas/InternalInfo'
        labelId:
          type: array
          items:
            type: string
          description: Label Ids
        length:
          type: number
          format: float
          description: Length
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ShipmentBoxLineItem'
        shipmentId:
          type: string
          description: Shipment Id
        ssccCode:
          type: string
        status:
          $ref: '#/components/schemas/ShipmentBoxStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        ucc128:
          type: string
        weight:
          type: number
          format: float
          description: Weight
        weightUnit:
          type: string
          description: Weight UOM
          enum:
            - lb
            - oz
            - kg
            - g
        width:
          type: number
          format: float
          description: Width
    ShipmentBoxCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            box:
              $ref: '#/components/schemas/ShipmentBoxCreateData'
    ShipmentBoxCreateRequest:
      allOf:
        - $ref: '#/components/schemas/ShipmentBoxCreateData'
      xml:
        name: request
    ShipmentBoxCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            box:
              $ref: '#/components/schemas/ShipmentBox'
    ShipmentBoxFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ShipmentBoxFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            box:
              $ref: '#/components/schemas/ShipmentBox'
    ShipmentBoxLineItem:
      type: object
      description: Line-item
      required:
        - sku
        - quantity
      properties:
        quantity:
          type: integer
          format: int32
          description: Item Quantity
        sku:
          type: string
          description: Item SKU
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    ShipmentBoxStatus:
      type: string
      description: Box Status
      enum:
        - new
        - packed
        - reported
        - labeled
        - shipped
    ShipmentBoxUpdateData:
      type: object
      properties:
        billOfLading:
          type: string
        customFields:
          type: array
          nullable: true
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        dimensionsUnit:
          type: string
          description: Dimensions UOM
          enum:
            - cm
            - in
            - ft
        height:
          type: number
          format: float
          description: Height
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        labelId:
          type: array
          items:
            type: string
          description: Label Ids
        length:
          type: number
          format: float
          description: Length
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ShipmentBoxUpdateLineItem'
        shipmentId:
          type: string
          description: Shipment Id
        ssccCode:
          type: string
        status:
          $ref: '#/components/schemas/ShipmentBoxStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        ucc128:
          type: string
        weight:
          type: number
          format: float
          description: Weight
        weightUnit:
          type: string
          description: Weight UOM
          enum:
            - lb
            - oz
            - kg
            - g
        width:
          type: number
          format: float
          description: Width
    ShipmentBoxUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            box:
              $ref: '#/components/schemas/ShipmentBoxUpdateData'
    ShipmentBoxUpdateLineItem:
      type: object
      description: Line-item
      properties:
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantity:
          type: integer
          format: int32
          description: Item Quantity
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        sku:
          type: string
          description: Item SKU
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    ShipmentBoxUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ShipmentBoxUpdateData'
      xml:
        name: request
    ShipmentBoxUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
    ShipmentBoxesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ShipmentBoxesListFilter'
    ShipmentBoxesListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Shipment Boxes Filter
          properties:
            boxId:
              type: array
              items:
                type: string
              description: Shipment boxes by list of boxId
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Shipment boxes by list of categories of the box related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Shipment boxes by list of types of the box related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            extBoxId:
              type: array
              items:
                type: string
              description: Shipment boxes by list of extBoxId
            shipmentId:
              type: array
              items:
                type: string
              description: Shipment boxes by list of shipmentId
            status:
              type: array
              items:
                $ref: '#/components/schemas/ShipmentBoxStatus'
              description: Shipment boxes by list of statuses
            tags:
              $ref: '#/components/schemas/EntityTags'
    ShipmentBoxesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            boxes:
              type: array
              items:
                $ref: '#/components/schemas/ShipmentBox'
            filters:
              $ref: '#/components/schemas/ShipmentBoxesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ShipmentCancellationStatus:
      type: string
      description: Shipping request cancellation status
      enum:
        - pending
        - accepted
        - rejected
    ShipmentChangelogEntry:
      allOf:
        - type: object
          properties:
            orderId:
              type: string
              description: Order Id
            pickStatus:
              type: string
            shipmentId:
              type: string
              description: Shipment Id
            waveStatus:
              type: string
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    ShipmentCreateData:
      type: object
      xml:
        name: shipment
      allOf:
        - $ref: '#/components/schemas/ShipmentBase'
        - type: object
          properties:
            autoEngUpdateStatus:
              $ref: '#/components/schemas/AutoEngUpdateStatus'
            lineItems:
              type: array
              items:
                $ref: '#/components/schemas/ShipmentCreateLineItem'
            status:
              $ref: '#/components/schemas/ShipmentCreateStatus'
    ShipmentCreateLineItem:
      type: object
      required:
        - uniqueId
        - sku
        - quantity
      properties:
        quantity:
          type: number
          format: float
          description: Item Quantity
        sku:
          type: string
          description: Item SKU
        uniqueId:
          type: string
          description: Item unique Id (within shipment)
        bundleQuantity:
          type: number
          description: quantity of item in bundle for bundle components
        bundleSKU:
          type: string
          description: reference to bundle for bundle components
        bundleUPC:
          type: string
          description: reference to bundle for bundle components
        components:
          type: array
          items:
            $ref: '#/components/schemas/ShipmentLineItemComponent'
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        deliveryMethod:
          description: Delivery method/type for this lineItem
          $ref: '#/components/schemas/DeliveryMethod'
        deliveryProfileId:
          type: string
          description: Delivery profile Id for this lineItem
        itemDiscount:
          type: number
          format: float
          description: Item Price
        itemPrice:
          type: number
          format: float
          description: Item Price
        name:
          type: string
          description: Item Name
        originalBundleSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'bundleSKU' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        shippedQuantity:
          type: number
          format: float
          description: Item Shipped Quantity
        trackedAtSourceChannel:
          type: boolean
        upc:
          type: string
          description: Item UPC
        vendorBundleSKU:
          type: string
          description: |
            Channel SKU for the bundle. On a write made with withSKUMapping, the channel SKU that 'bundleSKU' was resolved from is recorded here.
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    ShipmentCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        shipment:
          $ref: '#/components/schemas/Shipment'
        status:
          type: string
          enum:
            - submitted
            - failed
    ShipmentCreateStatus:
      type: string
      description: Shipment Status
      enum:
        - new
        - pendingInventory
        - pendingShippingLabel
        - reviewRequired
        - readyForFulfillment
    ShipmentFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ShipmentFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            shipment:
              $ref: '#/components/schemas/Shipment'
    ShipmentHoldOptions:
      type: object
      description: |
        Hold state for a shipment, present while the shipment is `onHold` and cleared to
        `null` on release. Shipment holds are always timed, so there is no hold type or
        condition.
      properties:
        holdNextStatus:
          $ref: '#/components/schemas/HoldNextStatus'
          nullable: true
        holdUntil:
          type: string
          format: date-time
          nullable: true
          description: When the hold releases.
    ShipmentLineItem:
      allOf:
        - $ref: '#/components/schemas/ShipmentCreateLineItem'
        - type: object
          properties:
            rejectedQuantity:
              type: number
              format: float
              description: Item Rejected Quantity
    ShipmentLineItemComponent:
      type: object
      required:
        - sku
        - quantity
      properties:
        quantity:
          type: number
          format: float
        sku:
          type: string
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    ShipmentOrderType:
      type: string
      description: Type of order that initiated this shipping request
      enum:
        - sales
        - transfer
        - purchase
    ShipmentPickStatus:
      type: string
      enum:
        - onHold
        - readyToPick
        - picking
        - picked
        - packing
        - packed
        - readyToLoad
        - partiallyShipped
        - shipped
        - canceled
    ShipmentRejectRequest:
      type: object
      properties:
        status:
          type: string
          enum:
            - canceled
            - canceledRestock
            - failed
            - reviewRequired
          default: canceled
          description: Reason for reject (- specifies SR status upon completion)
    ShipmentRejectResponse:
      type: object
      required:
        - success
        - code
      xml:
        name: response
      properties:
        code:
          type: integer
          format: int32
          description: Copy of HTTP status
          enum:
            - 200
            - 201
            - 202
          example: 200
        success:
          type: boolean
          description: Always true
          enum:
            - true
          example: true
    ShipmentSearchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            shipments:
              type: array
              items:
                $ref: '#/components/schemas/Shipment'
            total:
              type: integer
    ShipmentStatus:
      type: string
      description: Shipping request Status
      enum:
        - new
        - pendingInventory
        - pendingShippingLabel
        - reviewRequired
        - readyForFulfillment
        - sentToFulfillment
        - fulfilled
        - partialFulfillment
        - canceled
        - canceledRestock
        - failed
        - onHold
    ShipmentSyncRequest:
      type: object
      properties:
        syncAE:
          type: boolean
          description: Reset autoEngUpdateStatus
    ShipmentUpdateData:
      type: object
      properties:
        autoEngUpdateStatus:
          $ref: '#/components/schemas/AutoEngUpdateStatus'
        billingAddress:
          $ref: '#/components/schemas/AddressUpdateData'
          description: Purchaser Address
        cancellationStatus:
          $ref: '#/components/schemas/ShipmentCancellationStatus'
        currency:
          type: string
          description: Currency code (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        customerPONumber:
          type: string
          nullable: true
          description: Customer purchase order number (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        deliveryProfiles:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryProfile'
        excludeFromReuse:
          type: boolean
          default: false
          description: A flag to indicate whether id of this SR can be reused, or not
        expectedDeliveryDate:
          type: string
          format: date-time
          description: First Priority to be respected (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        expectedShipDate:
          type: string
          format: date-time
          description: Expected ship date (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        extReferenceId:
          type: string
          description: Customer Friendly reference to this shipping request on destination vendor
        extReferenceUrl:
          type: string
          description: Direct link to this shipping request on destination vendor
        extShipmentId:
          type: string
          description: Customer Friendly reference to this shipping request on originating vendor, auto generated if not provided
        extStatus:
          type: string
          nullable: true
          description: Shipping request status on external system
        giftNote:
          type: string
          description: Shipping Gift note
        holdOptions:
          $ref: '#/components/schemas/ShipmentHoldOptions'
          nullable: true
        holdUntil:
          type: string
          format: date-time
          nullable: true
        incoterms:
          type: string
          description: International Commercial Terms (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/ShipmentUpdateLineItem'
        locationId:
          type: string
          description: Id of location defined in organization (can be updated only if the SR is sentToFulfillment already)
        overfulfillPolicy:
          $ref: '#/components/schemas/OverfulfillPolicy'
        packedAt:
          type: string
          format: date-time
          description: Timestamp of the 'pickStatus' transition to 'packed' state
        pickStatus:
          $ref: '#/components/schemas/ShipmentPickStatus'
        pickedAt:
          type: string
          format: date-time
          description: Timestamp of the 'pickStatus' transition to 'picked' state
        privacyPolicy:
          type: array
          items:
            $ref: '#/components/schemas/PrivacyPolicy'
          nullable: true
        shipAfterDate:
          type: string
          format: date-time
          description: Ship After Date
        shipByDate:
          type: string
          format: date-time
          description: Ship By Date (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        shipCancelByDate:
          type: string
          format: date-time
          nullable: true
          description: Ship Cancel By Date
        shippedAt:
          type: string
          format: date-time
          description: Timestamp of the 'pickStatus' transition to 'shipped' state
        shippingAddress:
          $ref: '#/components/schemas/AddressUpdateData'
          description: Shipping address (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        shippingCarrier:
          type: string
          description: Required with ShippingClass, 2nd Priority (updating is prohibited if the SR status is in [`fulfilled`, `canceled`, `canceledRestock`])
        shippingClass:
          type: string
          description: Required with ShippingCarrier, 2nd Priority (updating is prohibited if the SR status is in [`fulfilled`, `canceled`, `canceledRestock`])
        shippingCode:
          type: string
          description: 1st Priority (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        shippingLabels:
          type: array
          description: |
            References to the labels of this shipment. Each entry is either a labelId or a download URL of the form {apiBaseUrl}/labels/{labelId}/download — shipping connectors write URLs, the Pipe17 app writes ids, so both shapes occur. Resolve either with GET /labels?labelId=... (updating is prohibited if the SR status is in [`fulfilled`, `canceled`, `canceledRestock`])
          items:
            type: string
        shippingMethodMapping:
          type: boolean
          description: Enable shipping method mapping (defaults to company setting if not provided)
        shippingNote:
          type: string
          description: Shipping Note (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        shippingPrice:
          type: number
          format: float
          description: Shipping price (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        skipLocation:
          type: boolean
          description: A flag to indicate the location in this SR should be skipped during rerun-routing
        skipLocationUntil:
          type: string
          format: date-time
          description: 'Time limit for skipping location (default: no time-bound skip for that SR)'
          nullable: true
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/ShipmentStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
          nullable: true
        waveStatus:
          $ref: '#/components/schemas/ShipmentWaveStatus'
    ShipmentUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            shipment:
              $ref: '#/components/schemas/ShipmentUpdateData'
    ShipmentUpdateLineItem:
      type: object
      properties:
        bundleQuantity:
          type: number
          description: quantity of item in bundle for bundle components (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        bundleSKU:
          type: string
          description: reference to bundle for bundle components (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        bundleUPC:
          type: string
          description: reference to bundle for bundle components (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        components:
          type: array
          items:
            $ref: '#/components/schemas/ShipmentLineItemComponent'
          nullable: true
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        deliveryMethod:
          $ref: '#/components/schemas/DeliveryMethod'
          description: Delivery method/type for this lineItem (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        deliveryProfileId:
          type: string
          description: Delivery profile Id for this lineItem (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        itemDiscount:
          type: number
          format: float
          description: Item Price (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        itemPrice:
          type: number
          format: float
          description: Item Price (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        name:
          type: string
          description: Item Name (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        originalBundleSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'bundleSKU' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
          description: (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        shippedQuantity:
          type: number
          format: float
          description: Item Shipped Quantity
        sku:
          type: string
          description: Item SKU
        trackedAtSourceChannel:
          type: boolean
          description: (updating is prohibited if the SR status is in [`sentToFulfillment`, `partialFulfillment`, `fulfilled`, `canceled`, `canceledRestock`])
        uniqueId:
          type: string
          description: Item unique Id (within shipment). Line-level identifier used to disambiguate updates when multiple lines share the same SKU (e.g. decomposed bundle components). ENG-31841.
        upc:
          type: string
          description: Item UPC
        vendorBundleSKU:
          type: string
          description: |
            Channel SKU for the bundle. On a write made with withSKUMapping, the channel SKU that 'bundleSKU' was resolved from is recorded here.
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    ShipmentUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ShipmentUpdateData'
      xml:
        name: request
    ShipmentUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            shipment:
              $ref: '#/components/schemas/Shipment'
    ShipmentWaveStatus:
      type: string
      description: BOPIS pickup wave-driven notification status
      enum:
        - readyToPickup
        - notified
    ShipmentsCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            shipments:
              type: array
              items:
                $ref: '#/components/schemas/ShipmentCreateResult'
    ShipmentsCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/ShipmentCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    ShipmentsCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            shipments:
              type: array
              items:
                $ref: '#/components/schemas/ShipmentCreateResult'
    ShipmentsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ShipmentsDeleteFilter'
    ShipmentsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/ShipmentsFilter'
        - type: object
          description: Shipping Requests Filter for Multiple Delete query
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Shipping requests assigned these orgModes
    ShipmentsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted shipments
            filters:
              $ref: '#/components/schemas/ShipmentsDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            shipments:
              type: array
              items:
                $ref: '#/components/schemas/Shipment'
    ShipmentsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Shipping Request Filter
          properties:
            cancellationStatus:
              type: array
              items:
                $ref: '#/components/schemas/ShipmentCancellationStatus'
              description: Shipping requests by list of statuses
            deleted:
              type: boolean
              description: Soft deleted shipping requests
            emailAddr:
              type: array
              items:
                type: string
              description: Shipping requests by list of shippingAddress.email
            extOrderId:
              type: array
              items:
                type: string
              description: Shipping requests by list of extOrderId
            extReferenceId:
              type: array
              items:
                type: string
              description: Shipping requests by list of extReferenceId
            extShipmentId:
              type: array
              items:
                type: string
              description: Shipping requests by list of extShipmentId
            fulfillmentIntegrationId:
              type: array
              items:
                type: string
              description: Shipping requests by list of fulfillmentIntegrationId
            integration:
              type: array
              items:
                type: string
              description: Shipping requests of these integrations
            locationId:
              type: array
              items:
                type: string
              description: Shipping requests by list of locationId
            orderId:
              type: array
              items:
                type: string
              description: Shipping requests by list of orderId
            orderType:
              type: array
              items:
                type: string
              description: Shipping requests by list of order types
            priority:
              type: array
              items:
                $ref: '#/components/schemas/Priority'
            shipmentId:
              type: array
              items:
                type: string
              description: Shipping requests by list of shipmentId
            status:
              type: array
              items:
                $ref: '#/components/schemas/ShipmentStatus'
              description: Shipping requests by list of statuses
            tags:
              $ref: '#/components/schemas/EntityTags'
            version:
              type: number
              description: Shipping requests by version number
            waveStatus:
              type: array
              items:
                $ref: '#/components/schemas/ShipmentWaveStatus'
              description: Shipping requests by list of wave-driven pickup statuses
    ShipmentsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ShipmentsFilter'
    ShipmentsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - shipments
          properties:
            shipments:
              type: array
              items:
                $ref: '#/components/schemas/Shipment'
            filters:
              $ref: '#/components/schemas/ShipmentsFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ShippingCarrier:
      type: string
      enum:
        - ups
        - usps
        - fedex
        - deliverr
        - amazon
        - other
    ShippingMethod:
      allOf:
        - type: object
          properties:
            integration:
              type: string
              description: Reference to integration that created an item
            methodId:
              type: string
              description: Shipping Method ID
        - $ref: '#/components/schemas/ShippingMethodCreateData'
        - $ref: '#/components/schemas/CoreObject'
    ShippingMethodCreateData:
      type: object
      required:
        - sourceType
      properties:
        sourceType:
          $ref: '#/components/schemas/ShippingMethodSourceType'
          description: Shipping method source type
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        description:
          type: string
          description: Shipping method description
        extMethodId:
          type: string
          description: Shipping method external Id
        internal:
          $ref: '#/components/schemas/InternalInfo'
        isDefault:
          type: boolean
          description: Marks shipping method as default for given sourceIntegrationId
        isPassthrough:
          type: boolean
          description: Marks shipping method as passthrough for given sourceIntegrationId
        mappedMethods:
          type: array
          description: List of mapped methods
          items:
            $ref: '#/components/schemas/ShippingMethodMapping'
        name:
          type: string
          description: Shipping method name
        shippingCarrier:
          type: string
          description: Shipping carrier
        shippingCode:
          type: string
          description: Shipping code
        shippingService:
          type: string
          description: Shipping service
        sourceIntegrationId:
          type: string
          description: Shipping method source integrationId
        status:
          $ref: '#/components/schemas/ShippingMethodStatus'
          description: Shipping method status
    ShippingMethodCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            methods:
              type: array
              items:
                $ref: '#/components/schemas/ShippingMethod'
    ShippingMethodCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/ShippingMethodCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    ShippingMethodCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            methods:
              type: array
              items:
                $ref: '#/components/schemas/ShippingMethodCreateResult'
    ShippingMethodCreateResult:
      type: object
      properties:
        code:
          type: integer
          format: int32
          description: HTTP status code
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        method:
          $ref: '#/components/schemas/ShippingMethod'
        status:
          type: string
          enum:
            - submitted
            - failed
    ShippingMethodFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    ShippingMethodFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            method:
              $ref: '#/components/schemas/ShippingMethod'
    ShippingMethodMapping:
      type: object
      required:
        - methodId
      description: Shipping Method mapping
      properties:
        methodId:
          type: string
          description: Shipping method ID
    ShippingMethodSourceType:
      type: string
      description: Shipping Source type
      enum:
        - logistics
        - ecommerce
        - finance
    ShippingMethodStatus:
      type: string
      description: Shipping Method status
      enum:
        - active
        - inactive
        - deleted
    ShippingMethodUpdateData:
      type: object
      properties:
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        description:
          type: string
          description: Shipping method description
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        isDefault:
          type: boolean
          description: Marks shipping method as default for given sourceIntegrationId
        isPassthrough:
          type: boolean
          description: Marks shipping method as passthrough for given sourceIntegrationId
        mappedMethods:
          nullable: true
          type: array
          description: List of mapped methods
          items:
            $ref: '#/components/schemas/ShippingMethodMapping'
        name:
          type: string
          description: Shipping method name
        shippingCarrier:
          type: string
          nullable: true
          description: Shipping carrier
        shippingCode:
          type: string
          nullable: true
          description: Shipping code
        shippingService:
          type: string
          nullable: true
          description: Shipping service
        status:
          $ref: '#/components/schemas/ShippingMethodStatus'
          description: Shipping method status
    ShippingMethodUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            method:
              $ref: '#/components/schemas/ShippingMethodUpdateData'
    ShippingMethodUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/ShippingMethodUpdateData'
      xml:
        name: request
    ShippingMethodUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            method:
              $ref: '#/components/schemas/ShippingMethod'
    ShippingMethodsDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ShippingMethodsDeleteFilter'
    ShippingMethodsDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/ShippingMethodsFilter'
        - type: object
          description: Delete Shipping Methods Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Shipping Methods assigned these orgModes
            source:
              type: array
              items:
                type: string
              description: Shipping method sources
            sourceIntegrationId:
              type: array
              items:
                type: string
              description: Shipping method source integrationIds
    ShippingMethodsDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted shipping methods
            filters:
              $ref: '#/components/schemas/ShippingMethodsDeleteFilter'
            methods:
              type: array
              items:
                $ref: '#/components/schemas/ShippingMethod'
            pagination:
              $ref: '#/components/schemas/Pagination'
    ShippingMethodsFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Shipping Methods Filter
          properties:
            methodId:
              type: array
              items:
                type: string
              description: Shipping methods by list of methodId
    ShippingMethodsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ShippingMethodsListFilter'
    ShippingMethodsListFilter:
      allOf:
        - $ref: '#/components/schemas/ShippingMethodsFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Shipping Methods Filter
          properties:
            isDefault:
              type: boolean
              description: Shipping method default flag
            isPassthrough:
              type: boolean
              description: Shipping method passthrough flag
            mappedMethodId:
              type: array
              items:
                type: string
              description: Mapped shipping method Ids
            shippingCarrier:
              type: array
              items:
                type: string
              description: Shipping carriers
            shippingCode:
              type: array
              items:
                type: string
              description: Shipping codes
            shippingService:
              type: array
              items:
                type: string
              description: Shipping services
            sourceIntegrationId:
              type: array
              items:
                type: string
              description: Shipping method source IntegrationIds
            sourceType:
              type: array
              items:
                $ref: '#/components/schemas/ShippingMethodSourceType'
              description: Shipping method source types
            status:
              type: array
              items:
                $ref: '#/components/schemas/ShippingMethodStatus'
              description: Shipping method status
    ShippingMethodsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ShippingMethodsListFilter'
            methods:
              type: array
              items:
                $ref: '#/components/schemas/ShippingMethod'
            pagination:
              $ref: '#/components/schemas/Pagination'
    SkippedEntitiesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/SkippedEntitiesListFilter'
    SkippedEntitiesListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Skipped Entities Filter
          properties:
            entityType:
              type: array
              items:
                $ref: '#/components/schemas/EntityName'
              description: Select entities by entityType list
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Select entities by list of categories of the entity related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Select entities by list of types of the entity related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            extEntityId:
              type: array
              items:
                type: string
              description: Select entities by extEntityId list
            extStatus:
              type: array
              items:
                type: string
              description: Select entities by extStatus list
            integration:
              type: array
              items:
                type: string
              description: Select entities by integration list
            logId:
              type: array
              items:
                type: string
              description: Select entities by logId list
            reasonCode:
              type: array
              items:
                $ref: '#/components/schemas/SkippedEntityReasonCode'
              description: Select entities by reasonCode list
            tags:
              $ref: '#/components/schemas/EntityTags'
    SkippedEntitiesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/SkippedEntitiesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            skippedEntities:
              type: array
              items:
                $ref: '#/components/schemas/SkippedEntity'
    SkippedEntitiesUpsertError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            entities:
              type: array
              items:
                $ref: '#/components/schemas/SkippedEntityUpsertResult'
    SkippedEntitiesUpsertRequest:
      type: array
      items:
        $ref: '#/components/schemas/SkippedEntityUpsertData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    SkippedEntitiesUpsertResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            entities:
              type: array
              items:
                $ref: '#/components/schemas/SkippedEntityUpsertResult'
    SkippedEntity:
      allOf:
        - type: object
          properties:
            apikeyId:
              type: string
              description: ID of author's Api key
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the entity
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the entity
            integration:
              type: string
              description: ID of integration that created the entity
            logId:
              type: string
              description: Auto Generated
            userId:
              type: string
              description: Author Id
        - $ref: '#/components/schemas/SkippedEntityUpsertData'
        - $ref: '#/components/schemas/CoreObject'
    SkippedEntityFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    SkippedEntityFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            skipped_entity:
              $ref: '#/components/schemas/SkippedEntity'
    SkippedEntityReasonCode:
      type: string
      description: Code of reason for the skip
      enum:
        - unknown
      default: unknown
    SkippedEntityUpsertData:
      type: object
      xml:
        name: skippedEntity
      required:
        - entityType
        - extEntityId
      properties:
        entityType:
          $ref: '#/components/schemas/EntityName'
        extEntityId:
          type: string
        extCreatedAt:
          type: string
          format: date-time
        extStatus:
          type: string
        extUpdatedAt:
          type: string
          format: date-time
        reason:
          type: string
          description: Reason for the skip
        reasonCode:
          $ref: '#/components/schemas/SkippedEntityReasonCode'
        tags:
          $ref: '#/components/schemas/EntityTags'
    SkippedEntityUpsertResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        skippedEntity:
          $ref: '#/components/schemas/SkippedEntity'
        status:
          type: string
          enum:
            - submitted
            - failed
    SourceDoc:
      type: object
      description: Vendor source document
      properties:
        content:
          type: string
          description: '''required'' in POST/PUT requests'
        contentType:
          type: string
          description: '''required'' in POST/PUT requests'
        status:
          type: string
          readOnly: true
        version:
          type: string
          readOnly: true
        versions:
          type: array
          items:
            $ref: '#/components/schemas/SourceDocVersion'
          readOnly: true
    SourceDocVersion:
      type: object
      properties:
        createdAt:
          type: string
          format: date-time
          readOnly: true
        version:
          type: string
    Statement:
      allOf:
        - type: object
          properties:
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the statement
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the statement
            integration:
              type: string
              description: Integration associated with statement
            statementId:
              type: string
              description: Statement ID
            status:
              $ref: '#/components/schemas/StatementStatus'
            transactionFeesTotals:
              type: array
              items:
                $ref: '#/components/schemas/Fee'
              description: Fees totals by all registered transactions
        - $ref: '#/components/schemas/StatementCreateData'
        - $ref: '#/components/schemas/CoreObject'
    StatementCreateData:
      type: object
      required:
        - extStatementId
        - extStatementStartDate
      properties:
        extStatementId:
          type: string
          description: External statement ID
        extStatementStartDate:
          type: string
          description: External statement start-date
          format: date-time
        currency:
          type: string
          description: Currency
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        depositTotal:
          type: number
          description: Deposit total
        extStatementApiId:
          type: string
          description: External statement Api ID
        extStatementDepositDate:
          type: string
          description: External statement deposit-date
          format: date-time
        extStatementEndDate:
          type: string
          description: External statement end-date
          format: date-time
        internal:
          $ref: '#/components/schemas/InternalInfo'
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        statementTotal:
          type: number
          description: Statement total
        status:
          $ref: '#/components/schemas/StatementStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        transactionFees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
    StatementCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            statements:
              type: array
              items:
                $ref: '#/components/schemas/StatementCreateResult'
    StatementCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/StatementCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    StatementCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            statements:
              type: array
              items:
                $ref: '#/components/schemas/StatementCreateResult'
    StatementCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        statement:
          $ref: '#/components/schemas/Statement'
        status:
          type: string
          enum:
            - submitted
            - failed
    StatementFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    StatementFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            statement:
              $ref: '#/components/schemas/Statement'
    StatementListItem:
      allOf:
        - type: object
          properties:
            integration:
              type: string
              description: Integration associated with statement
            statementId:
              type: string
              description: Statement ID
            status:
              $ref: '#/components/schemas/StatementStatus'
        - $ref: '#/components/schemas/StatementCreateData'
        - $ref: '#/components/schemas/CoreObject'
    StatementStatus:
      type: string
      description: Statement status
      enum:
        - new
        - draft
        - pending
        - paid
        - reported
    StatementUpdateData:
      type: object
      properties:
        currency:
          type: string
          description: Currency
        customFields:
          type: array
          nullable: true
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        depositTotal:
          type: number
          description: Deposit total
        extStatementDepositDate:
          type: string
          description: External statement deposit-date
          format: date-time
        extStatementEndDate:
          type: string
          description: External statement end-date
          format: date-time
        extStatementStartDate:
          type: string
          description: External statement start-date
          format: date-time
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        statementTotal:
          type: number
          description: Statement total
        status:
          $ref: '#/components/schemas/StatementStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        transactionFees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
    StatementUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            statement:
              $ref: '#/components/schemas/StatementUpdateData'
    StatementUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/StatementUpdateData'
      xml:
        name: request
    StatementUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            statement:
              $ref: '#/components/schemas/Statement'
    StatementsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/StatementsListFilter'
    StatementsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Statements Filter
          properties:
            deleted:
              type: boolean
              description: Retrieve only soft deleted statements
            depositSince:
              type: boolean
              description: Statements where (extStatementDepositDate >= depositSince)
            depositUntil:
              type: boolean
              description: Statements where (extStatementDepositDate < depositUntil)
            endPeriodSince:
              type: boolean
              description: Statements where (extStatementEndDate >= endPeriodSince)
            endPeriodUntil:
              type: boolean
              description: Statements where (extStatementEndDate < endPeriodUntil)
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Retrieve statements by list of categories of the statement related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Retrieve statements by list of types of the statement related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            extStatementApiId:
              type: array
              items:
                type: string
              description: Retrieve statements by extStatementApiId list
            extStatementId:
              type: array
              items:
                type: string
              description: Retrieve statements by extStatementId list
            hasSourceDoc:
              type: boolean
              description: Retrieve statements containing a source document
            integration:
              type: array
              items:
                type: string
              description: Retrieve statements by integration list
            startPeriodSince:
              type: boolean
              description: Statements where (extStatementStartDate >= startPeriodSince)
            startPeriodUntil:
              type: boolean
              description: Statements where (extStatementStartDate < startPeriodUntil)
            statementId:
              type: array
              items:
                type: string
              description: Retrieve statements by statementId list
            status:
              type: array
              items:
                $ref: '#/components/schemas/StatementStatus'
              description: Retrieve statements by status list
            tags:
              $ref: '#/components/schemas/EntityTags'
    StatementsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/StatementsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            statements:
              type: array
              items:
                $ref: '#/components/schemas/StatementListItem'
    Store:
      allOf:
        - type: object
          properties:
            storeId:
              type: string
              description: Store ID
        - $ref: '#/components/schemas/StoreCreateData'
        - $ref: '#/components/schemas/CoreObject'
    StoreAddress:
      type: object
      required:
        - address1
        - country
      properties:
        address1:
          description: Address
          type: string
        country:
          description: Country
          type: string
        address2:
          description: Address Line 2
          type: string
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        email:
          description: email
          type: string
        phone:
          description: Phone
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    StoreCreateData:
      type: object
      required:
        - name
        - address
      properties:
        address:
          $ref: '#/components/schemas/StoreAddress'
        name:
          type: string
          description: Store Name
        assignedUsers:
          type: array
          items:
            type: object
            properties:
              userId:
                type: string
                description: User ID of store associate
              role:
                type: string
                enum:
                  - manager
                  - associate
                  - picker
                  - packer
                description: Role of user at this store
              assignedAt:
                type: string
                format: date-time
                description: When user was assigned
              status:
                type: string
                enum:
                  - active
                  - inactive
                default: active
          description: Users assigned to this store
        fulfillmentCapacity:
          type: integer
          minimum: 0
          description: Daily fulfillment capacity for this store (display/planning value)
        notificationSettings:
          $ref: '#/components/schemas/NotificationSettings'
        openingHours:
          $ref: '#/components/schemas/StoreOpeningHours'
        operationalSettings:
          $ref: '#/components/schemas/OperationalSettings'
        primaryLocationId:
          type: string
          description: ID of the primary Location for this store (used for default capacity, hours, courier schedule)
        status:
          $ref: '#/components/schemas/StoreStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
    StoreCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            store:
              $ref: '#/components/schemas/StoreCreateData'
    StoreCreateRequest:
      allOf:
        - $ref: '#/components/schemas/StoreCreateData'
      xml:
        name: request
    StoreCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            store:
              $ref: '#/components/schemas/Store'
    StoreFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    StoreFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            store:
              $ref: '#/components/schemas/Store'
    StoreLocationsResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            locations:
              type: array
              items:
                $ref: '#/components/schemas/Location'
              description: Array of Location objects
            pagination:
              $ref: '#/components/schemas/Pagination'
            storeId:
              type: string
              description: Store ID
    StoreOpeningHours:
      type: object
      nullable: true
      description: Store-level operating hours
      properties:
        schedule:
          type: array
          description: Weekly schedule (7 days)
          items:
            type: object
            properties:
              dayOfWeek:
                type: string
                enum:
                  - monday
                  - tuesday
                  - wednesday
                  - thursday
                  - friday
                  - saturday
                  - sunday
              isOpen:
                type: boolean
                description: Whether store is open this day
              openTime:
                type: string
                pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
                description: Opening time (HH:MM, 24-hour format)
              closeTime:
                type: string
                pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
                description: Closing time (HH:MM, 24-hour format)
        timezone:
          type: string
          description: IANA timezone (e.g., America/New_York)
    StoreStatus:
      type: string
      description: Store status
      enum:
        - active
        - inactive
        - deleted
    StoreUpdateAddress:
      type: object
      properties:
        address1:
          description: Address
          type: string
        address2:
          description: Address Line 2
          type: string
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        country:
          description: Country
          type: string
        email:
          description: email
          type: string
        phone:
          description: Phone
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    StoreUpdateData:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/StoreUpdateAddress'
        assignedUsers:
          type: array
          items:
            type: object
            properties:
              userId:
                type: string
                description: User ID of store associate
              role:
                type: string
                enum:
                  - manager
                  - associate
                  - picker
                  - packer
                description: Role of user at this store
              assignedAt:
                type: string
                format: date-time
                description: When user was assigned
              status:
                type: string
                enum:
                  - active
                  - inactive
                default: active
          nullable: true
          description: Users assigned to this store
        fulfillmentCapacity:
          type: integer
          minimum: 0
          nullable: true
          description: Daily fulfillment capacity for this store (display/planning value)
        name:
          type: string
          description: Store Name
        notificationSettings:
          $ref: '#/components/schemas/NotificationSettings'
          nullable: true
        openingHours:
          $ref: '#/components/schemas/StoreOpeningHours'
        operationalSettings:
          $ref: '#/components/schemas/OperationalSettings'
          nullable: true
        primaryLocationId:
          type: string
          nullable: true
          description: ID of the primary Location for this store (used for default capacity, hours, courier schedule)
        status:
          $ref: '#/components/schemas/StoreStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
    StoreUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            store:
              $ref: '#/components/schemas/StoreUpdateData'
    StoreUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/StoreUpdateData'
      xml:
        name: request
    StoreUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            store:
              $ref: '#/components/schemas/Store'
    StoresFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Stores Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted stores
            status:
              type: array
              items:
                $ref: '#/components/schemas/StoreStatus'
            storeId:
              type: array
              items:
                type: string
              description: Stores by list of storeId
            tags:
              $ref: '#/components/schemas/EntityTags'
    StoresListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/StoresListFilter'
    StoresListFilter:
      allOf:
        - $ref: '#/components/schemas/StoresFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Stores Filter
          properties:
            name:
              type: string
              description: Retrieve stores by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
    StoresListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/StoresListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            stores:
              type: array
              items:
                $ref: '#/components/schemas/Store'
    Success:
      type: object
      required:
        - success
        - code
      xml:
        name: response
      properties:
        code:
          type: integer
          format: int32
          description: Copy of HTTP status
          enum:
            - 200
            - 201
            - 202
          example: 200
        success:
          type: boolean
          description: Always true
          enum:
            - true
          example: true
    Supplier:
      allOf:
        - type: object
          properties:
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the supplier
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the supplier
            supplierId:
              type: string
              description: Supplier ID
        - $ref: '#/components/schemas/SupplierCreateData'
        - $ref: '#/components/schemas/CoreObject'
    SupplierAddress:
      type: object
      properties:
        address1:
          description: Address Line 1
          type: string
        address2:
          description: Address Line 2
          type: string
        city:
          description: City
          type: string
        country:
          description: Country
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    SupplierContact:
      type: object
      properties:
        email:
          description: Email
          type: string
        firstName:
          description: First Name
          type: string
        lastName:
          description: Last Name
          type: string
        phone:
          description: Phone
          type: string
    SupplierCreateData:
      type: object
      required:
        - name
        - address
      properties:
        address:
          $ref: '#/components/schemas/SupplierAddress'
        name:
          type: string
          description: Supplier Name
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/SupplierContact'
        internal:
          $ref: '#/components/schemas/InternalInfo'
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        tags:
          $ref: '#/components/schemas/EntityTags'
    SupplierCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            supplier:
              $ref: '#/components/schemas/SupplierCreateData'
    SupplierCreateRequest:
      allOf:
        - $ref: '#/components/schemas/SupplierCreateData'
      xml:
        name: request
    SupplierCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            supplier:
              $ref: '#/components/schemas/Supplier'
    SupplierFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    SupplierFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            supplier:
              $ref: '#/components/schemas/Supplier'
    SupplierUpdateData:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/SupplierAddress'
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/SupplierContact'
          description: Supplier Contacts
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        name:
          type: string
          description: Supplier Name
        sourceDoc:
          nullable: true
          $ref: '#/components/schemas/SourceDoc'
        tags:
          $ref: '#/components/schemas/EntityTags'
    SupplierUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            supplier:
              $ref: '#/components/schemas/SupplierUpdateData'
    SupplierUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/SupplierUpdateData'
      xml:
        name: request
    SupplierUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            supplier:
              $ref: '#/components/schemas/Supplier'
    SuppliersDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/SuppliersDeleteFilter'
    SuppliersDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/SuppliersFilter'
        - type: object
          description: Delete Suppliers Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Suppliers assigned these orgModes
    SuppliersDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted suppliers
            filters:
              $ref: '#/components/schemas/SuppliersDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            suppliers:
              type: array
              items:
                $ref: '#/components/schemas/Supplier'
    SuppliersFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Suppliers Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted suppliers
            supplierId:
              type: array
              items:
                type: string
              description: Suppliers by list of supplierId
            tags:
              $ref: '#/components/schemas/EntityTags'
    SuppliersListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/SuppliersListFilter'
    SuppliersListFilter:
      allOf:
        - $ref: '#/components/schemas/SuppliersFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Suppliers Filter
          properties:
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Retrieve suppliers by list of categories of the supplier related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Retrieve suppliers by list of types of the supplier related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            hasSourceDoc:
              type: boolean
              description: Retrieve suppliers containing a source document
            name:
              type: string
              description: Retrieve suppliers by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
    SuppliersListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/SuppliersListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            suppliers:
              type: array
              items:
                $ref: '#/components/schemas/Supplier'
    ThroughputLimits:
      type: object
      description: Daily throttling on how much work is released to the store
      required:
        - maxOrdersPerDay
      properties:
        maxOrdersPerDay:
          type: integer
          minimum: 1
          default: 200
          description: Hard daily cap on released orders; resets at midnight in the store's local timezone
    Tier:
      type: string
      description: Tier (usage plan)
      enum:
        - free
        - basic
        - enterprise
    TimeOfDay:
      type: object
      description: |
        A wall-clock time of day at minute precision, independent of any calendar
        day or weekday. Shared base for `ScheduleWindowTime` (a time-of-day plus
        the weekday it falls on) and `TimeOfDayWindow` (an exception's special
        open-hours on an already-fixed date).
      required:
        - hour
        - minute
      properties:
        hour:
          type: integer
          minimum: 0
          maximum: 23
          description: 'Hour of the day in 24-hour wall-clock form (no `hour: 24`)'
        minute:
          type: integer
          minimum: 0
          maximum: 59
          description: Minute of the hour
    TimeOfDayWindow:
      type: object
      description: |
        An open-hours interval within a single calendar day, used by schedule
        exceptions with `effect: open` to express reduced/special hours that day.
        Half-open: `start` inclusive, `end` exclusive. Both bounds are
        `TimeOfDay` (no weekday — the day is fixed by the exception's
        date/holiday). `start` must be strictly before `end`: no wrapping and no
        full-day form. "Open all day" is intentionally not representable — the
        realistic case is reduced hours, and a fully-open day is simply the
        absence of a `closed` exception.
      required:
        - start
        - end
      properties:
        end:
          $ref: '#/components/schemas/TimeOfDay'
        start:
          $ref: '#/components/schemas/TimeOfDay'
        label:
          type: string
          minLength: 1
          description: |
            Optional operator-supplied label (e.g. "morning only"). Trimmed before
            validation; must be non-empty after trimming if present. No maximum length.
    TimeRange:
      type: object
      required:
        - start
        - end
      properties:
        end:
          type: string
          format: date-time
        start:
          type: string
          format: date-time
      description: Interval of time from the start to the end
    Timezone:
      type: string
      description: Timezone
      enum:
        - Africa/Algiers
        - Africa/Cairo
        - Africa/Casablanca
        - Africa/Harare
        - Africa/Johannesburg
        - Africa/Monrovia
        - Africa/Nairobi
        - America/Argentina/Buenos_Aires
        - America/Bogota
        - America/Caracas
        - America/Chicago
        - America/Chihuahua
        - America/Denver
        - America/Godthab
        - America/Guatemala
        - America/Guyana
        - America/Halifax
        - America/Indiana/Indianapolis
        - America/Juneau
        - America/La_Paz
        - America/Lima
        - America/Los_Angeles
        - America/Mazatlan
        - America/Mexico_City
        - America/Monterrey
        - America/Montevideo
        - America/New_York
        - America/Phoenix
        - America/Puerto_Rico
        - America/Regina
        - America/Santiago
        - America/Sao_Paulo
        - America/St_Johns
        - America/Tijuana
        - Asia/Almaty
        - Asia/Baghdad
        - Asia/Baku
        - Asia/Bangkok
        - Asia/Chongqing
        - Asia/Colombo
        - Asia/Dhaka
        - Asia/Hong_Kong
        - Asia/Irkutsk
        - Asia/Jakarta
        - Asia/Jerusalem
        - Asia/Kabul
        - Asia/Kamchatka
        - Asia/Karachi
        - Asia/Kathmandu
        - Asia/Kolkata
        - Asia/Krasnoyarsk
        - Asia/Kuala_Lumpur
        - Asia/Kuwait
        - Asia/Magadan
        - Asia/Muscat
        - Asia/Novosibirsk
        - Asia/Rangoon
        - Asia/Riyadh
        - Asia/Seoul
        - Asia/Shanghai
        - Asia/Singapore
        - Asia/Srednekolymsk
        - Asia/Taipei
        - Asia/Tashkent
        - Asia/Tbilisi
        - Asia/Tehran
        - Asia/Tokyo
        - Asia/Ulaanbaatar
        - Asia/Urumqi
        - Asia/Vladivostok
        - Asia/Yakutsk
        - Asia/Yekaterinburg
        - Asia/Yerevan
        - Atlantic/Azores
        - Atlantic/Cape_Verde
        - Atlantic/South_Georgia
        - Australia/Adelaide
        - Australia/Brisbane
        - Australia/Darwin
        - Australia/Hobart
        - Australia/Melbourne
        - Australia/Perth
        - Australia/Sydney
        - Etc/UTC
        - Europe/Amsterdam
        - Europe/Athens
        - Europe/Belgrade
        - Europe/Berlin
        - Europe/Bratislava
        - Europe/Brussels
        - Europe/Bucharest
        - Europe/Budapest
        - Europe/Copenhagen
        - Europe/Dublin
        - Europe/Helsinki
        - Europe/Istanbul
        - Europe/Kaliningrad
        - Europe/Kiev
        - Europe/Lisbon
        - Europe/Ljubljana
        - Europe/London
        - Europe/Madrid
        - Europe/Minsk
        - Europe/Moscow
        - Europe/Paris
        - Europe/Prague
        - Europe/Riga
        - Europe/Rome
        - Europe/Samara
        - Europe/Sarajevo
        - Europe/Skopje
        - Europe/Sofia
        - Europe/Stockholm
        - Europe/Tallinn
        - Europe/Vienna
        - Europe/Vilnius
        - Europe/Volgograd
        - Europe/Warsaw
        - Europe/Zagreb
        - Europe/Zurich
        - Pacific/Apia
        - Pacific/Auckland
        - Pacific/Chatham
        - Pacific/Fakaofo
        - Pacific/Fiji
        - Pacific/Guadalcanal
        - Pacific/Guam
        - Pacific/Honolulu
        - Pacific/Majuro
        - Pacific/Midway
        - Pacific/Noumea
        - Pacific/Pago_Pago
        - Pacific/Port_Moresby
        - Pacific/Tongatapu
    Tracking:
      allOf:
        - type: object
          properties:
            actualArrivalDate:
              type: string
              format: date-time
            actualShipDate:
              type: string
              format: date-time
            status:
              $ref: '#/components/schemas/TrackingStatus'
            trackingId:
              type: string
        - $ref: '#/components/schemas/TrackingCreateData'
        - $ref: '#/components/schemas/CoreObject'
    TrackingCreateData:
      type: object
      required:
        - trackingNumber
        - fulfillmentId
        - shippingCarrier
      properties:
        fulfillmentId:
          type: string
        shippingCarrier:
          $ref: '#/components/schemas/ShippingCarrier'
        trackingNumber:
          type: string
        expectedArrivalDate:
          type: string
          format: date-time
        internal:
          $ref: '#/components/schemas/InternalInfo'
        tags:
          $ref: '#/components/schemas/EntityTags'
        url:
          type: string
    TrackingCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            tracking:
              $ref: '#/components/schemas/TrackingCreateData'
    TrackingCreateRequest:
      allOf:
        - $ref: '#/components/schemas/TrackingCreateData'
      xml:
        name: request
    TrackingCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            tracking:
              $ref: '#/components/schemas/Tracking'
    TrackingFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    TrackingFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            tracking:
              $ref: '#/components/schemas/Tracking'
    TrackingFilter:
      type: object
      description: Tracking Filter
      properties:
        count:
          type: integer
          format: int32
          description: Return at most this many tracking records
        fulfillmentId:
          type: array
          items:
            type: string
        keys:
          type: string
          description: Return these top-level fields
        order:
          type: string
          description: Sort by these top-level fields
        shippingCarrier:
          type: array
          items:
            type: string
        since:
          type: string
          format: date-time
          description: Tracking created after this date-time
        skip:
          type: integer
          format: int32
          description: Skip this many tracking records
        status:
          type: array
          items:
            $ref: '#/components/schemas/TrackingStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        trackingId:
          type: array
          items:
            type: string
        trackingNumber:
          type: array
          items:
            type: string
        until:
          type: string
          format: date-time
          description: Tracking created before this date-time
        updatedSince:
          type: string
          format: date-time
          description: Tracking updated after this date-time
        updatedUntil:
          type: string
          format: date-time
          description: Tracking updated before this date-time
    TrackingListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/TrackingFilter'
    TrackingListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/TrackingFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            trackings:
              type: array
              items:
                $ref: '#/components/schemas/Tracking'
    TrackingStatus:
      type: string
      enum:
        - created
        - shipped
        - delivered
    TrackingUpdateData:
      type: object
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - shipped
            - delivered
        expectedArrivalDate:
          type: string
          format: date-time
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        tags:
          $ref: '#/components/schemas/EntityTags'
    TrackingUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            tracking:
              $ref: '#/components/schemas/TrackingUpdateData'
    TrackingUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/TrackingUpdateData'
      xml:
        name: request
    TrackingUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            tracking:
              $ref: '#/components/schemas/Tracking'
    Transaction:
      allOf:
        - type: object
          properties:
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the transaction
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the transaction
            integration:
              type: string
              description: Integration associated with transaction
            status:
              $ref: '#/components/schemas/TransactionStatus'
            transactionId:
              type: string
              description: Transaction ID
        - $ref: '#/components/schemas/TransactionCreateData'
        - $ref: '#/components/schemas/CoreObject'
    TransactionCreateData:
      type: object
      required:
        - statementId
        - extTransactionId
        - transactionType
      properties:
        extTransactionId:
          type: string
          description: External transaction ID
        statementId:
          type: string
          description: Statement ID
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        extReferenceId:
          type: string
          description: External ID
        extStatementId:
          type: string
          description: External statement ID
        internal:
          $ref: '#/components/schemas/InternalInfo'
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        sku:
          type: string
          description: SKU
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/TransactionStatus'
        transactionFees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    TransactionCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            transactions:
              type: array
              items:
                $ref: '#/components/schemas/TransactionCreateResult'
    TransactionCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/TransactionCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    TransactionCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            transactions:
              type: array
              items:
                $ref: '#/components/schemas/TransactionCreateResult'
    TransactionCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
        transaction:
          $ref: '#/components/schemas/Transaction'
    TransactionFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    TransactionFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            transaction:
              $ref: '#/components/schemas/Transaction'
    TransactionStatus:
      type: string
      description: Transaction status
      enum:
        - new
        - draft
        - pending
        - reported
    TransactionType:
      type: string
      description: Transaction type
      enum:
        - orders
        - other
    TransactionUpdateData:
      type: object
      properties:
        customFields:
          type: array
          nullable: true
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/TransactionStatus'
        transactionFees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
    TransactionUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            transaction:
              $ref: '#/components/schemas/TransactionUpdateData'
    TransactionUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/TransactionUpdateData'
      xml:
        name: request
    TransactionUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            transaction:
              $ref: '#/components/schemas/Transaction'
    TransactionsListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/TransactionsListFilter'
    TransactionsListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Transactions Filter
          properties:
            deleted:
              type: boolean
              description: Retrieve only soft deleted transactions
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Retrieve transactions by list of categories of the transaction related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Retrieve transactions by list of types of the transaction related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            extReferenceId:
              type: array
              items:
                type: string
              description: Retrieve transactions by extReferenceId list
            extStatementId:
              type: array
              items:
                type: string
              description: Retrieve transactions by extStatementId list
            extTransactionId:
              type: array
              items:
                type: string
              description: Retrieve transactions by extTransactionId list
            hasSourceDoc:
              type: boolean
              description: Retrieve transactions containing a source document
            integration:
              type: array
              items:
                type: string
              description: Retrieve transactions by integration list
            sku:
              type: array
              items:
                type: string
              description: Retrieve transactions by SKU list
            statementId:
              type: array
              items:
                type: string
              description: Retrieve transactions by statementId list
            status:
              type: array
              items:
                $ref: '#/components/schemas/TransactionStatus'
              description: Retrieve transactions by status list
            transactionId:
              type: array
              items:
                type: string
              description: Retrieve transactions by transactionId list
            transactionType:
              type: array
              items:
                type: string
              description: Retrieve transactions by transactionType list
    TransactionsListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/TransactionsListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            transactions:
              type: array
              items:
                $ref: '#/components/schemas/Transaction'
    Transfer:
      allOf:
        - type: object
          properties:
            exceptionCategories:
              type: array
              items:
                type: string
              description: References to categories of exceptions related to the transfer
            exceptions:
              type: array
              items:
                type: string
              description: Types of exceptions related to the transfer
            fromLocationAddress:
              $ref: '#/components/schemas/TransfersFromLocationAddress'
            integration:
              type: string
              description: Reference to integration that created an item
            timeline:
              description: Timeline of updates
              type: array
              items:
                $ref: '#/components/schemas/TransferChangelogEntry'
            transferId:
              type: string
              description: Transfer ID
        - $ref: '#/components/schemas/TransferCreateData'
        - $ref: '#/components/schemas/CoreObject'
    TransferChangelogEntry:
      allOf:
        - type: object
          properties:
            extOrderId:
              type: string
              description: External Order Id
            transferId:
              type: string
              description: Transfer order Id
        - $ref: '#/components/schemas/ChangelogEntryBase'
        - $ref: '#/components/schemas/CoreObject'
    TransferCreateData:
      type: object
      xml:
        name: transfer
      required:
        - extOrderId
      properties:
        extOrderId:
          type: string
          description: External Transfer Order ID
        actualArrivalDate:
          type: string
          format: date-time
          description: Actual Arrival Date (from most recent Arrival)
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        disableShipmentsReuse:
          type: boolean
          description: Hint to whether shipmentId should be re-used, or not
        employeeName:
          type: string
          description: Transfer order created by
        expectedArrivalDate:
          type: string
          format: date-time
          description: Expected Arrival Date
        expectedShipDate:
          type: string
          format: date-time
          description: Expected Ship Date
        extOrderApiId:
          type: string
          description: External System Transfer Order API ID
        extReferenceId:
          type: string
          description: Reference ID
        fromLocationId:
          type: string
          description: Shipping Location ID
        holdUntil:
          type: string
          format: date-time
        incoterms:
          type: string
          description: International Commercial Terms
        internal:
          $ref: '#/components/schemas/InternalInfo'
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/TransferLineItem'
        orderSourceType:
          $ref: '#/components/schemas/OrderType'
        shipByDate:
          type: string
          format: date-time
          description: Ship By Date
        shippingCarrier:
          type: string
          description: Shipping Carrier
        shippingNotes:
          type: string
          description: Shipping Notes
        shippingService:
          type: string
          description: Shipping Service Type
        sourceDoc:
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/TransferStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        timestamp:
          type: string
          format: date-time
          description: General Purpose Time Stamp
        toAddress:
          $ref: '#/components/schemas/Address'
          description: Ship to address
        toLocationId:
          type: string
          description: Arrival Location ID
        transferNotes:
          type: string
          description: Transfer Notes
        transferOrderDate:
          type: string
          format: date-time
          description: Transfer Order Date
    TransferCreateResult:
      type: object
      properties:
        conflict:
          type: object
          description: Duplicate key error details, if failed
        errors:
          type: array
          items:
            type: string
          description: Error details if failed
        message:
          type: string
          description: Error message if failed
        status:
          type: string
          enum:
            - submitted
            - failed
        transfer:
          $ref: '#/components/schemas/Transfer'
    TransferFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    TransferFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            transfer:
              $ref: '#/components/schemas/Transfer'
    TransferLineItem:
      type: object
      required:
        - uniqueId
        - sku
        - quantity
      properties:
        quantity:
          type: number
          format: float
          description: Item Quantity
        sku:
          type: string
          description: Item SKU
        uniqueId:
          type: string
          description: Item unique Id (within transfer)
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        itemPrice:
          type: number
          format: float
          description: Item price
        locationId:
          type: string
        name:
          type: string
          description: Item Name or Description
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        receivedQuantity:
          type: number
          format: float
          description: Received quantity
        routed:
          type: boolean
        shippedQuantity:
          type: number
          format: float
          description: Shipped quantity
        upc:
          type: string
          description: Item UPC
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    TransferStatus:
      type: string
      description: Transfer Status
      enum:
        - draft
        - new
        - onHold
        - toBeValidated
        - reviewRequired
        - readyForFulfillment
        - sentToFulfillment
        - partialFulfillment
        - fulfilled
        - inTransit
        - partialReceived
        - received
        - canceled
        - returned
        - refunded
        - archived
        - closed
    TransferUpdateData:
      type: object
      properties:
        actualArrivalDate:
          type: string
          nullable: true
          format: date-time
          description: Actual Arrival Date (from most recent Arrival)
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        disableShipmentsReuse:
          type: boolean
          description: Hint to whether shipmentId should be re-used, or not
          nullable: true
        employeeName:
          type: string
          nullable: true
          description: Transfer order created by
        expectedArrivalDate:
          type: string
          nullable: true
          format: date-time
          description: Expected Arrival Date
        expectedShipDate:
          type: string
          nullable: true
          format: date-time
          description: Expected Ship Date
        extReferenceId:
          type: string
          description: Reference ID
        fromLocationId:
          type: string
          nullable: true
          description: Shipping Location ID
        holdUntil:
          type: string
          format: date-time
          nullable: true
        incoterms:
          type: string
          nullable: true
          description: International Commercial Terms
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/TransferUpdateLineItem'
        orderSourceType:
          $ref: '#/components/schemas/OrderType'
        shipByDate:
          type: string
          nullable: true
          format: date-time
          description: Ship By Date
        shippingCarrier:
          type: string
          nullable: true
          description: Shipping Carrier
        shippingNotes:
          type: string
          nullable: true
          description: Shipping Notes
        shippingService:
          type: string
          nullable: true
          description: Shipping Service Type
        sourceDoc:
          nullable: true
          $ref: '#/components/schemas/SourceDoc'
        status:
          $ref: '#/components/schemas/TransferStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
        timestamp:
          type: string
          nullable: true
          format: date-time
          description: General Purpose Time Stamp
        toAddress:
          $ref: '#/components/schemas/AddressNullable'
          description: Ship to address
        toLocationId:
          type: string
          nullable: true
          description: Arrival Location ID
        transferNotes:
          type: string
          nullable: true
          description: Transfer Notes
    TransferUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            transfer:
              $ref: '#/components/schemas/TransferUpdateData'
    TransferUpdateLineItem:
      type: object
      properties:
        customFields:
          type: array
          description: Custom Fields
          items:
            $ref: '#/components/schemas/NameValue'
        itemPrice:
          type: number
          format: float
          description: Item price
        locationId:
          type: string
        name:
          type: string
          description: Item Name or Description
        originalSKU:
          type: string
          description: |
            Canonical Pipe17 SKU that 'sku' was translated from. Returned on a read made with withSKUMapping when a mapping applied.
        quantity:
          type: number
          format: float
          description: Item Quantity
        quantityUnit:
          $ref: '#/components/schemas/ItemQuantityUnit'
        receivedQuantity:
          type: number
          format: float
          description: Received quantity
        routed:
          type: boolean
        shippedQuantity:
          type: number
          format: float
          description: Shipped quantity
        sku:
          type: string
          description: Item SKU
        uniqueId:
          type: string
          description: Item unique Id (within transfer)
        upc:
          type: string
          description: Item UPC
        vendorSKU:
          type: string
          description: |
            Channel SKU for this item. On a write made with withSKUMapping, the channel SKU that 'sku' was resolved from is recorded here.
    TransferUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/TransferUpdateData'
      xml:
        name: request
    TransferUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            transfer:
              $ref: '#/components/schemas/Transfer'
    TransfersCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            transfers:
              type: array
              items:
                $ref: '#/components/schemas/TransferCreateResult'
    TransfersCreateRequest:
      type: array
      items:
        $ref: '#/components/schemas/TransferCreateData'
      xml:
        name: request
        wrapped: true
      maxItems: 10
    TransfersCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            transfers:
              type: array
              items:
                $ref: '#/components/schemas/TransferCreateResult'
    TransfersDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/TransfersDeleteFilter'
    TransfersDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/TransfersFilter'
        - type: object
          description: Delete Transfers Filter
          properties:
            orgMode:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationMode'
              description: Transfers assigned these orgModes
    TransfersDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted transfers
            filters:
              $ref: '#/components/schemas/TransfersDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            transfers:
              type: array
              items:
                $ref: '#/components/schemas/Transfer'
    TransfersFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Transfers Filter
          properties:
            deleted:
              type: boolean
              description: Soft deleted transfers
            extOrderId:
              type: array
              items:
                type: string
              description: Transfers by list of external transfer IDs
            extReferenceId:
              type: array
              items:
                type: string
              description: Transfers by `extReferenceId` list
            fromLocationId:
              type: array
              items:
                type: string
              description: Transfers by list of fromLocationId
            integration:
              type: array
              items:
                type: string
              description: Transfers of these integrations
            orderSourceType:
              type: array
              items:
                $ref: '#/components/schemas/OrderType'
              description: Orders by list of types
            status:
              type: array
              items:
                $ref: '#/components/schemas/TransferStatus'
              description: Transfers by list of statuses
            tags:
              $ref: '#/components/schemas/EntityTags'
            toLocationId:
              type: array
              items:
                type: string
              description: Transfers by list of toLocationId
            transferId:
              type: array
              items:
                type: string
              description: Transfers by list of transferId
    TransfersFromLocationAddress:
      type: object
      description: Shipping Location Address
      properties:
        address1:
          description: Address
          type: string
        address2:
          description: Address Line 2
          type: string
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        country:
          description: Country
          type: string
        email:
          description: email
          type: string
        phone:
          description: Phone
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    TransfersListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/TransfersListFilter'
    TransfersListFilter:
      allOf:
        - $ref: '#/components/schemas/TransfersFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
        - type: object
          description: List Transfers Filter
          properties:
            exceptionCategoryId:
              type: array
              items:
                type: string
              description: Transfers by list of categories of the transfer related exceptions
            exceptionType:
              type: array
              items:
                type: string
              description: Transfers by list of types of the transfer related exceptions (`{exceptionType}` | `{entityType}_{exceptionType}`)
            hasSourceDoc:
              type: boolean
              description: Transfers containing a source document
            timestamp:
              type: boolean
              description: if set to true use timestamp instead of create time
    TransfersListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - transfers
          properties:
            transfers:
              type: array
              items:
                $ref: '#/components/schemas/Transfer'
            filters:
              $ref: '#/components/schemas/TransfersListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
    UpdatePickStatusError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    UpdatePickStatusRequest:
      type: object
      required:
        - pickStatus
      properties:
        pickStatus:
          $ref: '#/components/schemas/ShipmentPickStatus'
    UpdatePickStatusResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            shipment:
              $ref: '#/components/schemas/Shipment'
    UsageData:
      allOf:
        - type: object
          properties:
            apikeyId:
              type: string
              description: API Key ID
            connectorId:
              type: string
              description: Connector ID
            date:
              type: string
              format: date
              description: Date of requests
            integrationId:
              type: string
              description: Integration ID
            orgKey:
              type: string
              description: Organization ID
            source:
              type: string
              enum:
                - external
                - internal
              description: Source of usage data
            userId:
              type: string
              description: User ID
        - $ref: '#/components/schemas/UsageDataCreateData'
        - $ref: '#/components/schemas/CoreObject'
    UsageDataCreateData:
      type: object
      properties:
        entity:
          type: string
          description: Entities name
        operation:
          type: string
          enum:
            - read
            - write
        requests:
          type: integer
          description: Number of requests
        duration:
          type: number
          description: Operation duration in msecs
        items:
          type: integer
          description: Number of successfully read/written items
        items_failed:
          type: integer
          description: Number of items failed to be read/written
        requests_failed:
          type: integer
          description: Number of failed requests (<= requests)
      required:
        - entity
        - operation
        - requests
    UsageDataCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    UsageDataCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            usagedata:
              $ref: '#/components/schemas/UsageData'
    UsageDeleteError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/UsageDeleteFilter'
    UsageDeleteFilter:
      allOf:
        - $ref: '#/components/schemas/UsageFilter'
    UsageDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            deleted:
              type: integer
              description: Number of deleted usage records
            filters:
              $ref: '#/components/schemas/UsageDeleteFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            usagedata:
              type: array
              items:
                $ref: '#/components/schemas/UsageData'
    UsageFilter:
      type: object
      properties:
        apikeyId:
          type: array
          items:
            type: string
        connectorId:
          type: array
          items:
            type: string
        count:
          type: integer
          format: int32
          description: Return at most this many usage records
        entity:
          type: array
          items:
            type: string
        integrationId:
          type: array
          items:
            type: string
        keys:
          type: string
          description: Fields to return
        operation:
          type: array
          items:
            type: string
            enum:
              - read
              - write
        order:
          type: string
          description: Sort order
        since:
          type: string
          format: date
          description: Usage records for period after this date
        skip:
          type: integer
          format: int32
          description: Skip this many usage records
        source:
          type: string
          enum:
            - external
            - internal
        until:
          type: string
          format: date
          description: Usage records for period before this date
        userId:
          type: array
          items:
            type: string
    UsageListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/UsageListFilter'
    UsageListFilter:
      allOf:
        - $ref: '#/components/schemas/UsageFilter'
    UsageListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/UsageListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            usagedata:
              type: array
              items:
                $ref: '#/components/schemas/UsageData'
    UsagePlan:
      allOf:
        - type: object
          properties:
            createdAt:
              type: string
              format: date-time
              readOnly: true
              description: When the plan was created within Pipe17
            planId:
              type: string
              description: Plan ID
            updatedAt:
              type: string
              format: date-time
              readOnly: true
              description: When the plan was updated within Pipe17
        - $ref: '#/components/schemas/UsagePlanCreateData'
    UsagePlanCreateData:
      type: object
      properties:
        name:
          type: string
          description: Plan name
        burstLimit:
          type: number
          description: Max number of requests in processing simultaneously (<=0 -- unlimited)
        internal:
          $ref: '#/components/schemas/InternalInfo'
        quotaLimit:
          type: number
          description: Allowed number of requests over calendar day (<=0 -- unlimited)
        rateLimit:
          type: number
          description: Max number of requests per 1 second (<=0 -- unlimited)
      required:
        - name
    UsagePlanCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            usageplan:
              $ref: '#/components/schemas/UsagePlan'
    UsagePlanCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            usageplan:
              $ref: '#/components/schemas/UsagePlan'
    UsagePlanFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    UsagePlanFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            usageplan:
              $ref: '#/components/schemas/UsagePlan'
    UsagePlanListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filter:
              $ref: '#/components/schemas/UsagePlansFilter'
    UsagePlanListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filter:
              $ref: '#/components/schemas/UsagePlansFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            usageplans:
              type: array
              items:
                $ref: '#/components/schemas/UsagePlan'
    UsagePlanUpdateData:
      type: object
      properties:
        burstLimit:
          type: number
          description: Max number of requests in processing simultaneously (<=0 -- unlimited)
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        quotaLimit:
          type: number
          description: Allowed number of requests over calendar day (<=0 -- unlimited)
        rateLimit:
          type: number
          description: Max number of requests per 1 second (<=0 -- unlimited)
    UsagePlanUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    UsagePlanUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/UsagePlanUpdateData'
      xml:
        name: request
    UsagePlanUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            usageplan:
              $ref: '#/components/schemas/UsagePlan'
    UsagePlansFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Usage Plans Filter
          properties:
            name:
              type: array
              items:
                type: string
              description: Fetch by plan name list
            planId:
              type: array
              items:
                type: string
              description: Fetch by plan id list
    User:
      allOf:
        - type: object
          properties:
            identityId:
              type: string
              description: Identity ID linking to identities collection
            loginInfo:
              $ref: '#/components/schemas/UserLoginInfo'
            methods:
              $ref: '#/components/schemas/Methods'
            status:
              $ref: '#/components/schemas/UserStatus'
            userId:
              type: string
              description: User ID
        - $ref: '#/components/schemas/UserCreateData'
        - $ref: '#/components/schemas/CoreObject'
    UserAddress:
      type: object
      properties:
        address1:
          description: Address
          type: string
        address2:
          description: Address Line 2
          type: string
        city:
          description: City
          type: string
        company:
          description: Company
          type: string
        country:
          description: Country
          type: string
        firstName:
          description: First Name
          type: string
        lastName:
          description: Last Name
          type: string
        stateOrProvince:
          description: State or Province
          type: string
        zipCodeOrPostalCode:
          description: zipcode or postal code
          type: string
    UserCreateData:
      type: object
      required:
        - name
        - email
        - roles
      properties:
        email:
          type: string
          description: User email
        name:
          type: string
          description: User Name
        roles:
          type: array
          items:
            type: string
          description: User role names/ids
        address:
          $ref: '#/components/schemas/UserAddress'
        blockedFeatures:
          type: array
          items:
            type: string
        description:
          type: string
          description: User Description
        expiresAt:
          type: string
          format: date-time
          description: Access expiration date (default - unlimited)
        identityId:
          type: string
          description: Identity ID linking to identities collection
        internal:
          $ref: '#/components/schemas/InternalInfo'
        phone:
          type: string
          description: User Phone
        timeZone:
          type: string
          description: User Time Zone
    UserCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            user:
              $ref: '#/components/schemas/UserCreateData'
    UserCreateRequest:
      allOf:
        - $ref: '#/components/schemas/UserCreateData'
        - type: object
          required:
            - password
          properties:
            password:
              type: string
              description: User password
      xml:
        name: request
    UserCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            user:
              $ref: '#/components/schemas/User'
    UserFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    UserFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            user:
              $ref: '#/components/schemas/User'
    UserLoginInfo:
      type: object
      properties:
        lastIPAddress:
          type: string
          description: Last login IP address
        lastLogin:
          type: string
          format: date-time
          description: Last login date
        loginsCount:
          type: number
          description: Total number of logins
    UserPreferences:
      allOf:
        - type: object
          properties:
            status:
              type: string
              description: Status
              enum:
                - active
                - deleted
            userPreferencesId:
              type: string
              description: User Preferences ID
        - $ref: '#/components/schemas/UserPreferencesCreateData'
        - $ref: '#/components/schemas/CoreObject'
    UserPreferencesCreateData:
      type: object
      required:
        - userId
        - preferences
      properties:
        preferences:
          type: array
          description: User level preferences
          default: []
          items:
            $ref: '#/components/schemas/PreferenceObject'
        userId:
          type: string
          description: User ID or `me`
    UserPreferencesCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            user:
              $ref: '#/components/schemas/UserPreferencesCreateData'
    UserPreferencesCreateRequest:
      allOf:
        - $ref: '#/components/schemas/UserPreferencesCreateData'
      xml:
        name: request
    UserPreferencesCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            userPreferences:
              $ref: '#/components/schemas/UserPreferences'
    UserPreferencesDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    UserPreferencesDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    UserPreferencesFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    UserPreferencesFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            userPreferences:
              $ref: '#/components/schemas/UserPreferences'
    UserPreferencesFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: User Preferences Filter
          properties:
            userId:
              type: array
              items:
                type: string
              description: User Preferences by list of userId
            userPreferencesId:
              type: array
              items:
                type: string
              description: User Preferences by list of userPreferencesId
    UserPreferencesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/UserPreferencesListFilter'
    UserPreferencesListFilter:
      allOf:
        - $ref: '#/components/schemas/UserPreferencesFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List User Preferences Filter
    UserPreferencesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/UserPreferencesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            userPreferences:
              type: array
              items:
                $ref: '#/components/schemas/UserPreferences'
    UserPreferencesUpdateData:
      type: object
      properties:
        preferences:
          type: array
          description: User level preferences
          default: []
          items:
            $ref: '#/components/schemas/PreferenceObject'
    UserPreferencesUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            userPreferences:
              $ref: '#/components/schemas/UserPreferencesUpdateData'
    UserPreferencesUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/UserPreferencesUpdateData'
      xml:
        name: request
    UserPreferencesUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            userPreferences:
              $ref: '#/components/schemas/UserPreferences'
    UserStatus:
      type: string
      description: User Status
      enum:
        - pending
        - active
        - disabled
    UserUpdateData:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/UserAddress'
        blockedFeatures:
          type: array
          items:
            type: string
          nullable: true
        description:
          type: string
          description: User Description
        expiresAt:
          type: string
          format: date-time
          description: Access expiration date (default - unlimited)
          nullable: true
        identityId:
          type: string
          description: Identity ID linking to identities collection
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        name:
          type: string
          description: User Name
        password:
          type: string
          description: User password
        phone:
          type: string
          description: User Phone
        roles:
          type: array
          items:
            type: string
          description: User role names/ids
        status:
          type: string
          enum:
            - active
            - disabled
        timeZone:
          type: string
          description: User Time Zone
    UserUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            user:
              $ref: '#/components/schemas/UserUpdateData'
    UserUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/UserUpdateData'
      xml:
        name: request
    UserUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            user:
              $ref: '#/components/schemas/User'
    UsersDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    UsersDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    UsersFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Users Filter
          properties:
            email:
              type: string
              description: Users by email (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            name:
              type: string
              description: Users by name (strings "/{pattern}/" and "/{pattern}/i" are interpreted as regexps)
            organizations:
              type: string
              description: Return users of all organizations
            status:
              type: array
              items:
                $ref: '#/components/schemas/UserStatus'
              description: Users by list of statuses
            userId:
              type: array
              items:
                type: string
              description: Users by list of userId
    UsersListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/UsersListFilter'
    UsersListFilter:
      allOf:
        - $ref: '#/components/schemas/UsersFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Users Filter
    UsersListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/UsersListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            users:
              type: array
              items:
                $ref: '#/components/schemas/User'
    ValuesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/ValuesListFilter'
    ValuesListFilter:
      type: object
      properties:
        field:
          $ref: '#/components/schemas/EntityFieldRef'
    ValuesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          required:
            - values
          properties:
            values:
              type: array
              items:
                $ref: '#/components/schemas/AnyValue'
              description: Distinct values found
            filters:
              $ref: '#/components/schemas/ValuesListFilter'
    VendorSchema:
      allOf:
        - type: object
          properties:
            schemaId:
              type: string
              description: Schema Id
        - $ref: '#/components/schemas/VendorSchemaCreateData'
        - $ref: '#/components/schemas/CoreObject'
    VendorSchemaCreateData:
      type: object
      required:
        - entityType
        - vendor
        - version
      properties:
        entityType:
          $ref: '#/components/schemas/EntityName'
        vendor:
          type: string
          description: Vendor ID
        version:
          type: string
          description: Vendor Api version
        direction:
          $ref: '#/components/schemas/Direction'
        isPublic:
          type: boolean
          description: Public schema indicator (default - false)
        types:
          type: array
          items:
            $ref: '#/components/schemas/VendorSchemaType'
    VendorSchemaCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            schema:
              $ref: '#/components/schemas/VendorSchemaCreateData'
    VendorSchemaCreateRequest:
      allOf:
        - $ref: '#/components/schemas/VendorSchemaCreateData'
      xml:
        name: request
    VendorSchemaCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            schema:
              $ref: '#/components/schemas/VendorSchema'
    VendorSchemaFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    VendorSchemaFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            schema:
              $ref: '#/components/schemas/VendorSchema'
    VendorSchemaType:
      type: object
      required:
        - path
        - type
      properties:
        path:
          type: string
        type:
          type: string
          enum:
            - string
            - number
            - boolean
            - date
            - array
            - object
        extra:
          type: object
        itemType:
          type: string
          enum:
            - string
            - number
            - boolean
            - date
            - array
            - object
        label:
          type: string
    VendorSchemaUpdateData:
      type: object
      properties:
        direction:
          $ref: '#/components/schemas/Direction'
          nullable: true
        entityType:
          $ref: '#/components/schemas/EntityName'
        types:
          type: array
          items:
            $ref: '#/components/schemas/VendorSchemaType'
          nullable: true
        vendor:
          type: string
          description: Vendor ID
        version:
          type: string
          description: Vendor Api version
    VendorSchemaUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            schema:
              $ref: '#/components/schemas/VendorSchemaUpdateData'
    VendorSchemaUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/VendorSchemaUpdateData'
      xml:
        name: request
    VendorSchemaUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            schema:
              $ref: '#/components/schemas/VendorSchema'
    VendorSchemasListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/VendorSchemasListFilter'
    VendorSchemasListFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Schemas Filter
          properties:
            direction:
              type: array
              items:
                $ref: '#/components/schemas/Direction'
              description: Schemas by direction list
            entityType:
              type: array
              items:
                type: string
              description: Schemas by entityType list
            isPublic:
              type: boolean
              description: The `true` - public schemas only, `false` - only org specific ones. By default, any of them.
            schemaId:
              type: array
              items:
                type: string
              description: Schemas by schemaId list
            vendor:
              type: array
              items:
                type: string
              description: Schemas by vendor list
            version:
              type: array
              items:
                type: string
              description: Schemas by version list
    VendorSchemasListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/VendorSchemasListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            schemas:
              type: array
              items:
                $ref: '#/components/schemas/VendorSchema'
    Wave:
      allOf:
        - type: object
          properties:
            assignedTo:
              type: string
              nullable: true
              description: User ID of associate assigned to this wave
            completedAt:
              type: string
              format: date-time
              nullable: true
              description: When the wave was completed
            holdingLocations:
              $ref: '#/components/schemas/HoldingLocations'
            itemCount:
              type: integer
              description: Total items across all shipments
            lastWorkedBy:
              type: string
              nullable: true
              description: ID of the last associate who worked on this wave
            priority:
              $ref: '#/components/schemas/WavePriority'
            releasedAt:
              type: string
              format: date-time
              nullable: true
              description: When the wave was released to the store and became available to work. Set once, on the first transition into `available`, and never changed afterwards. Null for waves that are still drafts.
            shipmentCount:
              type: integer
              description: Number of shipment requests in wave
            shipmentIds:
              type: array
              items:
                type: string
              description: Array of Shipment Request IDs
            slaDeadline:
              type: string
              format: date-time
              description: SLA deadline for wave completion
            status:
              $ref: '#/components/schemas/WaveStatus'
            storeId:
              type: string
              description: Store ID where wave is being fulfilled
            tags:
              $ref: '#/components/schemas/EntityTags'
            type:
              $ref: '#/components/schemas/WaveType'
            waveId:
              type: string
              description: Wave ID
        - $ref: '#/components/schemas/CoreObject'
    WaveClaimRequest:
      type: object
      required:
        - userId
      properties:
        userId:
          type: string
          description: User ID claiming the wave
    WaveClaimResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            wave:
              $ref: '#/components/schemas/Wave'
    WaveCompleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            wave:
              $ref: '#/components/schemas/Wave'
    WaveComposition:
      type: object
      description: Rules that decide how shipment requests are grouped into waves
      required:
        - maxWaveSize
        - fulfillmentTypeGrouping
      properties:
        fulfillmentTypeGrouping:
          type: string
          enum:
            - separate
            - mixed
          default: separate
          description: |
            How delivery profiles are grouped into waves:
              - separate: bopis and ship_from_store SRs go to their own waves
              - mixed:    any delivery profile can share a wave
        maxWaveSize:
          type: integer
          minimum: 1
          default: 50
          description: Maximum number of shipment requests in one wave; supersedes maxShipmentsPerWave when present
        orderBasedPicking:
          type: boolean
          default: false
          description: When enabled, each wave holds a single order and the store uses order-based picking (one order per wave, no prep step). Overrides maxWaveSize.
        orderPrioritization:
          type: boolean
          default: false
          description: When enabled, a high-priority order is placed in its own wave and released immediately instead of waiting to fill a wave.
    WaveCreateData:
      type: object
      required:
        - storeId
        - type
      properties:
        storeId:
          type: string
          description: Store ID where wave is being fulfilled
        type:
          $ref: '#/components/schemas/WaveType'
        assignedTo:
          type: string
          nullable: true
          description: User ID of associate assigned to this wave
        priority:
          $ref: '#/components/schemas/WavePriority'
        shipmentIds:
          type: array
          items:
            type: string
          description: Array of Shipment Request IDs in this wave
        slaDeadline:
          type: string
          format: date-time
          description: SLA deadline for wave completion
        status:
          $ref: '#/components/schemas/WaveStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
    WaveCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            wave:
              $ref: '#/components/schemas/WaveCreateData'
    WaveCreateRequest:
      allOf:
        - $ref: '#/components/schemas/WaveCreateData'
      xml:
        name: request
    WaveCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            wave:
              $ref: '#/components/schemas/Wave'
    WaveFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    WaveFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            wave:
              $ref: '#/components/schemas/Wave'
    WaveManagementConfig:
      type: object
      nullable: true
      description: Wave management configuration for automatic wave lifecycle
      properties:
        bopisSlaMinutes:
          type: integer
          minimum: 1
          maximum: 1440
          default: 120
          description: How long (in minutes) after release a BOPIS or curbside wave has to be completed. Used as the SLA basis for pickup waves, which have no carrier cutoff to reference.
        carrierCoordination:
          $ref: '#/components/schemas/CarrierCoordination'
        draftTimeWindowMinutes:
          type: integer
          minimum: 1
          maximum: 1440
          default: 60
          description: How long (in minutes) a wave can stay in draft status before auto-transitioning to available
        maxShipmentsPerWave:
          type: integer
          minimum: 1
          default: 50
          description: Maximum number of shipments allowed in a single wave
        throughputLimits:
          $ref: '#/components/schemas/ThroughputLimits'
        waveComposition:
          $ref: '#/components/schemas/WaveComposition'
        waveReleaseLogic:
          $ref: '#/components/schemas/WaveReleaseLogic'
        waveTimeoutMinutes:
          type: integer
          minimum: 1
          maximum: 1440
          default: 240
          description: How long (in minutes) a wave can stay in_progress before being flagged timed-out
    WaveMetricsResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            metrics:
              type: object
              properties:
                byStatus:
                  type: object
                  additionalProperties:
                    type: integer
                  description: Count of waves per status
                byType:
                  type: object
                  additionalProperties:
                    type: integer
                  description: Count of waves per type
                slaAtRisk:
                  type: integer
                  description: Waves with SLA deadline approaching (within 30 minutes)
                slaOverdue:
                  type: integer
                  description: Waves past SLA deadline
                totalActive:
                  type: integer
                  description: Total active waves
    WavePauseResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            wave:
              $ref: '#/components/schemas/Wave'
    WavePriority:
      type: string
      description: Wave priority level
      enum:
        - urgent
        - high
        - normal
      default: normal
    WaveReleaseLogic:
      type: object
      description: Schedules and date overrides that govern when draft waves are released
      required:
        - schedules
      properties:
        schedules:
          type: array
          description: Schedules at which draft waves are promoted to available
          items:
            $ref: '#/components/schemas/WaveSchedule'
        holidayOverrides:
          type: array
          description: Dates or date ranges on which scheduled wave release is suspended
          items:
            $ref: '#/components/schemas/HolidayOverride'
    WaveResumeResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            wave:
              $ref: '#/components/schemas/Wave'
    WaveSchedule:
      type: object
      required:
        - type
      description: |
        A single wave-release schedule. The `type` field selects one of three variants:
          - specific_times: release at the listed wall-clock times; requires releaseTimes and runDuring
          - time_interval:  release every N minutes/hours within a window; requires interval and runDuring
          - carrier_cutoff: release a fixed offset before each carrier pickup; requires carrierCode and minutesBeforePickup
      properties:
        type:
          type: string
          enum:
            - specific_times
            - time_interval
            - carrier_cutoff
          description: Schedule variant
        carrierCode:
          type: string
          description: Carrier whose pickup windows drive release timing; must match a carrierCoordination.carriers[].carrierCode. Applies to carrier_cutoff only
        enabled:
          type: boolean
          default: true
          description: When false, the schedule does not fire
        interval:
          type: object
          description: How often to release (e.g., every 2 hours). Applies to time_interval only
          properties:
            every:
              type: integer
              minimum: 1
              description: Number of units between releases
            unit:
              type: string
              enum:
                - minutes
                - hours
              description: Unit of the interval
        minutesBeforePickup:
          type: integer
          minimum: 0
          default: 30
          description: Minutes before each carrier pickup at which to release. Applies to carrier_cutoff only
        releaseTimes:
          type: array
          minItems: 1
          description: Times of day (HH:mm) in the store's local timezone at which to release; sorted ascending and unique. Applies to specific_times only
          items:
            type: string
            pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
        runDuring:
          $ref: '#/components/schemas/WaveScheduleRunDuring'
        scheduleId:
          type: string
          description: Server-assigned identifier
    WaveScheduleRunDuring:
      type: object
      required:
        - mode
      description: |
        Days and times of day on which the parent schedule applies. The `mode` field selects one of:
          - store_hours:       use the store's openingHours for each day
          - custom_days:       restrict to specific weekdays (specific_times variant)
          - custom_days_times: restrict to specific weekdays and a time window (time_interval variant)
      properties:
        mode:
          type: string
          enum:
            - store_hours
            - custom_days
            - custom_days_times
          description: Selects the day/time restriction
        customDays:
          type: array
          description: Weekdays on which the schedule applies; required for custom_days and custom_days_times
          items:
            $ref: '#/components/schemas/DayOfWeek'
        customEnd:
          type: string
          description: Exclusive window end (HH:mm); required for custom_days_times
          pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
        customStart:
          type: string
          description: Inclusive window start (HH:mm); required for custom_days_times
          pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
    WaveStatus:
      type: string
      description: Wave status
      enum:
        - draft
        - available
        - in_progress
        - paused
        - completed
        - canceled
    WaveType:
      type: string
      description: Wave type for fulfillment
      enum:
        - bopis
        - curbside
        - ship_from_store
    WaveUpdateData:
      type: object
      properties:
        assignedTo:
          type: string
          nullable: true
          description: User ID of associate assigned to this wave
        priority:
          $ref: '#/components/schemas/WavePriority'
          nullable: true
        shipmentIds:
          type: array
          items:
            type: string
          nullable: true
          description: Array of Shipment Request IDs in this wave
        slaDeadline:
          type: string
          format: date-time
          nullable: true
          description: SLA deadline for wave completion
        status:
          $ref: '#/components/schemas/WaveStatus'
        tags:
          $ref: '#/components/schemas/EntityTags'
    WaveUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            wave:
              $ref: '#/components/schemas/WaveUpdateData'
    WaveUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/WaveUpdateData'
      xml:
        name: request
    WaveUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            wave:
              $ref: '#/components/schemas/Wave'
    WavesFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Waves Filter
          properties:
            assignedTo:
              type: string
              description: Filter by assigned user ID
            deleted:
              type: boolean
              description: Soft deleted waves
            priority:
              type: array
              items:
                $ref: '#/components/schemas/WavePriority'
            status:
              type: array
              items:
                $ref: '#/components/schemas/WaveStatus'
            storeId:
              type: string
              description: Filter by store ID
            tags:
              $ref: '#/components/schemas/EntityTags'
            type:
              type: array
              items:
                $ref: '#/components/schemas/WaveType'
            waveId:
              type: array
              items:
                type: string
              description: Waves by list of waveId
    WavesListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/WavesListFilter'
    WavesListFilter:
      allOf:
        - $ref: '#/components/schemas/WavesFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
    WavesListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/WavesListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            waves:
              type: array
              items:
                $ref: '#/components/schemas/Wave'
    Webhook:
      allOf:
        - type: object
          properties:
            connectorId:
              type: string
              description: Connector ID
            integration:
              type: string
              description: Integration ID
            webhookId:
              type: string
              description: Webhook ID
        - $ref: '#/components/schemas/WebhookCreateData'
        - $ref: '#/components/schemas/CoreObject'
    WebhookCreateData:
      type: object
      required:
        - url
        - apikey
        - topics
      properties:
        apikey:
          type: string
          description: Webhook api key (only visible ASCII chars + space are allowed)
        topics:
          type: array
          items:
            $ref: '#/components/schemas/WebhookTopics'
          description: Webhook topics
        url:
          type: string
          description: Webhook URL
        internal:
          $ref: '#/components/schemas/InternalInfo'
    WebhookCreateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            webhook:
              $ref: '#/components/schemas/WebhookCreateData'
    WebhookCreateRequest:
      allOf:
        - $ref: '#/components/schemas/WebhookCreateData'
      xml:
        name: request
    WebhookCreateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            webhook:
              $ref: '#/components/schemas/Webhook'
    WebhookFetchError:
      allOf:
        - $ref: '#/components/schemas/Failure'
    WebhookFetchResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            webhook:
              $ref: '#/components/schemas/Webhook'
    WebhookTopics:
      type: string
      description: WebhookTopic
      enum:
        - arrivals
        - fulfillments
        - integrations
        - integration_actions
        - inventory
        - labels
        - locations
        - orders
        - products
        - purchases
        - receipts
        - refunds
        - returns
        - shipments
        - suppliers
        - transfers
        - trackings
        - exceptions
    WebhookUpdateData:
      type: object
      properties:
        apikey:
          type: string
          description: Webhook api key (only visible ASCII chars + space are allowed)
        internal:
          $ref: '#/components/schemas/InternalInfo'
          nullable: true
        topics:
          type: array
          description: Webhook Topics
          items:
            $ref: '#/components/schemas/WebhookTopics'
        url:
          type: string
          description: Webhook URL
    WebhookUpdateError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            webhook:
              $ref: '#/components/schemas/WebhookUpdateData'
    WebhookUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/WebhookUpdateData'
      xml:
        name: request
    WebhookUpdateResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            webhook:
              $ref: '#/components/schemas/Webhook'
    WebhooksDeleteError:
      type: object
      xml:
        name: response
      required:
        - success
        - code
      properties:
        code:
          type: integer
          description: Copy of HTTP status
          format: int32
          minimum: 400
          example: 404
        success:
          type: boolean
          description: Always false
          enum:
            - false
          example: false
        conflict:
          type: object
          description: Details of the conflicting state, when the failure is a 409. The shape depends on the endpoint — a duplicate-key failure carries the offending keys, while /shipping_requests/{id}/request-labels carries `labels` (the labels the shipment already holds), `existingExtLabelIds` (the extLabelIds already claimed) or `refundedExtLabelIds` (extLabelIds belonging to refunded labels, which cannot be reused).
        errors:
          type: array
          description: Error detail
          items:
            type: string
        message:
          type: string
          description: Error message
        vendorCode:
          type: string
          description: Vendor-specific error code passed through from a downstream connector/carrier (e.g. EasyPost "SHIPMENT.REFUND.UNAVAILABLE"). Present only when the failure originated at the vendor.
    WebhooksDeleteResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            message:
              type: string
              example: OK (but NYI)
    WebhooksFilter:
      allOf:
        - $ref: '#/components/schemas/BaseFilter'
        - type: object
          description: Webhooks Filter
          properties:
            related:
              type: boolean
              description: Include related webhooks
            topic:
              $ref: '#/components/schemas/WebhookTopics'
              description: Webhooks for this topic
            webhookId:
              type: array
              items:
                type: string
              description: Webhooks by list of webhookId
    WebhooksListError:
      allOf:
        - $ref: '#/components/schemas/Failure'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/WebhooksListFilter'
    WebhooksListFilter:
      allOf:
        - $ref: '#/components/schemas/WebhooksFilter'
        - $ref: '#/components/schemas/ListResultOrderKeys'
          description: List Webhooks Filter
    WebhooksListResponse:
      allOf:
        - $ref: '#/components/schemas/Success'
        - type: object
          properties:
            filters:
              $ref: '#/components/schemas/WebhooksListFilter'
            pagination:
              $ref: '#/components/schemas/Pagination'
            webhooks:
              type: array
              items:
                $ref: '#/components/schemas/Webhook'
